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

[dial_create_chan]

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

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

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

1 Ответ

от (123 тыс. баллов)

Что то вроде:

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

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

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

Через кастомизацию системных файлов можно попробовать переопределять 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.

};

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

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

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

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

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

2.4 тыс. ответов

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

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

...