48 просмотров
назад от (510 баллов) в категории Тонкая настройка
Подскажите, как добавить SIP заголовок только для внутренних номеров? Понятно, что нужно копать в extensions, но у меня не получается добавить именно к внутренним номерам.

[dial_create_chan]

Если сюда добавить same => n,Set(PJSIP_HEADER(add,XXXXXXXX-MyHeader)=XXXXXXXXXXXXXXXXXXX)

То заголовок добавляется ко всем номерам.

Задача в том, что бы установить нужный SIP заголовок в INVITE для внутренних номеров. Буду благодарен в решении вопроса.

1 Ответ

назад от (93.5 тыс. баллов)

Что то вроде:

same => n,ExecIf($[ ${LEN(${CHANNEL(peername)})} == 3 && "${CHANNEL(channeltype)}" == "PJSIP" ]?Set(PJSIP_HEADER(add,X-Header)=XXXXXXX))

  • ${LEN(${CHANNEL(peername)})} == 3 - трехзначные номера
  • "${CHANNEL(channeltype)}" == "PJSIP" - проверка типа канала
назад от (510 баллов)
В общем, разобрался. Привёл к такому виду:

[dial_create_chan]

exten => s,1,Gosub(lua_${ISTRANSFER}dial_create_chan,${EXTEN},1)

same => n,NoOp( peername : ${FROM_PEER}

same => n,NoOp(LEN: ${LEN(${FROM_PEER})})

same => n,NoOp(channeltype: ${CHANNEL(channeltype)})

same => n,ExecIf($[ ${LEN(${FROM_PEER})} != 3 && "${CHANNEL(channeltype)}" == "PJSIP" ]?Set(PJSIP_HEADER(add,X-Header)=XXXXXXX))

same => n,Set(pt1c_is_dst=1)

same => n,ExecIf($["${PT1C_SIP_HEADER}x" != "x"]?Set(PJSIP_HEADER(add,${CUT(PT1C_SIP_HEADER,:,1)})=${CUT(PT1C_SIP_HEADER,:,2)}))

same => n,Set(__PT1C_SIP_HEADER=${UNDEFINED})

same => n,Set(CHANNEL(hangup_handler_wipe)=hangup_handler,s,1)

same => n,return

Всё заработало как надо. Однако есть вопрос. Можно как-то не заменять файл полностью а добавить это в конец? Суть в том, что бы при изменении в учётках каждый раз не обновлять файл вручную.
назад от (93.5 тыс. баллов)

Возможность есть, но это уже задача со звездочкой. 

Через кастомизацию системных файлов можно попробовать переопределять extensions.lua

lua_dial_create_chan

lua_transfer_dial_create_chan

Вот пример переопределения:

extensions["lua_transfer_dial_create_chan"] = {

    ["lua_dial_create_chan"] = function event_transfer_dial_create_chan()

    local data = {}

    data['transfer_UNIQUEID'] = get_variable("transfer_UNIQUEID");

    data['dst_chan']  = get_variable("CHANNEL");

    data['action']    = "transfer_dial_create_chan";

    data['linkedid']    = get_variable("CHANNEL(linkedid)");

    local is_pjsip = string.lower(data['dst_chan']):find("pjsip/") ~= nil

    if(is_pjsip) then

        data['dst_call_id']       = get_variable("CHANNEL(pjsip,call-id)");

    end

    set_variable("CHANNEL(hangup_handler_wipe)", 'hangup_handler,s,1');

    userevent_return(data)

    return data;

end;

 -- Forbidden to describe contexts defined in extensions.conf. This will cause a crash asterisk.

};

важно, оставить код типовых наших функций, иначе сломаете логирование истории звонков

назад от (93.5 тыс. баллов)
на Lua можно повторить ваш dialplan
назад от (510 баллов)
Если вас не затруднит, можно более детально? Ну а если скините готовое решение, будет вообще супер)
назад от (93.5 тыс. баллов)
в рамках форуме нет, тут уже не так просто, сейчас нет на это свободного времени пример выше привел, его можно использовать как основу
На этом сайте можно бесплатно задать вопрос разработчикам MikoPBX и другим членам сообщества. Время ответа не регламентированно, но мы стараемся несколько раз в день заглядывать сюда. Для срочного решения проблем обращайтесь на платную линию поддержки

Популярные теги

askozia входящие-вызовы настройка провайдер ivr исходящие запись-разговоров маршрутизация обновление исходящие-звонки провайдеры очередь запись маршрут транк askozia7 askozia6 очередь-вызовов входящие переадресация ошибка голосовая-почта логи перевод-вызова callerid установка факс перевод ростелеком панель-телефонии-1с история-звонков релиз история модуль перехват-вызова веб-интерфейс настройка-провайдер почта gsm звонок nat запись-разговора mikopbx диалплан pjsip битрикс24 ascozia goip аон мобильный интеграция редактор asterisk лицензия внешние-номера bitrix24 телефонная-книга маршруты провайдеров время голосовая cdr вызовы разговоров панель web-интерфейс нерабочее-время битрикс донабор переадресация-мобильный beeline тишина smtp номер мультифон мегафон sip #mikopbx askozia-5 распределение билайн префиксы статистика альтернативный monitoring регистрация оповещения fax cisco voicemail парковка перехват меню вызовов vmware группы-пользователей docker дополнительный-диск beta

2.2 тыс. вопросов

1.9 тыс. ответов

5.1 тыс. комментариев

13.2 тыс. пользователей

...