Здравствуйте!
через pjsip ext подключен bitrix24, в вызове он присылает X-Extension-Number - номер вызывающего.
Как мне его выдернуть и заменить на него номер вызывающего?
Вы используете функцию для модуля SIP когда у вас канал поднимается с использованием модуля PJSIP.
Вторую ссылку откройте "Как достать переменную из шапки SIP".
Для диагностики можно использовать Noop и Verbose, что бы посмотреть содержимое переменной.
; Display the number of headers removed
exten => 300,1,Verbose( VAR ${PJSIP_HEADER(read,X-Extension-Number)} headers)
# так срабатывает, но значение пустое
#exten => _X.,1,Set(CALLERID(num)=${PJSIP_HEADER(read,X-Extension-Number)})
#так не срабатывает
#exten => _300,1,Set(CALLERID(num)=${PJSIP_HEADER(read,X-Extension-Number)})
# а так пишет Executing [200@from-internal:1] Verbose("PJSIP/300-00000075", " VAR 600") in new stack
VAR 600
exten => _X.,1,Verbose( VAR ${PJSIP_HEADER(read,X-Extension-Number)} headers
Сказочный специалист. Попробуйте перейти по ссылка, которые я сбросил и потратить немного времени на чтение.
Вам нужно создать в extensions_custom.conf свой контекст, потом в нем выполнить обработку звонка и перевод его в стандартный контекст обработки звонка.. Потом указать созданный контекст в транке с Битрикс.
Например
[trunk-bitrix]
exten => _X.,1,Noop(------Incoming-Call-From-Bitrix------) ;;; просто вывод для дебага в консоли
same => n,Set(CALLERID(num)=${PJSIP_HEADER(read,X-Extension-Number)}) ;;; назначение переменной
same => n,Goto(from-trunk,${EXTEN},1) ;;; прыгает в контекст по умолчанию для обработки транков
[from-internal-custom]
Стандартный контекст FreePBX from-internal включает в себя контекст from-internal-custom. Создайте контекст с таким именем в файле extensions_custom.conf
и заданный там диалплан будет выполняться, как диалплан FreePBX.
я так и сделал.
И это не транк, а внутренний номер
[trunk-bitrix]
exten => _X.,1,Noop(------Incoming-Call-From-Bitrix------) ;;; просто вывод для дебага в консоли
same => n,Set(CALLERID(num)=${PJSIP_HEADER(read,X-Extension-Number)}) ;;; назначение переменной
same => n,Goto(from-internal,${EXTEN},1) ;;; прыгает в контекст по умолчанию для обработки транков