====== Добавить P-Preferred-Identity и Remote-Party-ID заголовок ======
[[faq:|Обратно к инструкциям]]
Некоторые провайдеры при инициации исходящего звонка требуют отправки дополнительного SIP заголовка.
В этой статье опишу способ его установить.
Для решения задачи следует описать дополнительные контексты через меню [[:custom-files|Кастомизация системных файлов]]. Править будем файл **extensions.conf**. Добавьте в конец файла следущий текст:
[SIP-1611151795-outgoing-custom]
exten => _X!,1,Dial(PJSIP/${number}@SIP-${CUT(CONTEXT,-,2)},600,${DOPTIONS}TKU(dial_answer)b(dial_create_chan_${CUT(CONTEXT,-,2)}_custom,s,1))
same => n,ExecIf($["${DIALSTATUS}" = "ANSWER"]?Hangup())
same => n,ExecIf($["${DIALSTATUS}" = "BUSY"]?Busy(2))
same => n,return
[dial_create_chan_1611151795_custom]
exten => s,1,Gosub(lua_${ISTRANSFER}dial_create_chan,${EXTEN},1)
same => n,Set(pt1c_is_dst=1)
same => n,Set(OUTGOING_CID=74952293042)
same => n,ExecIf($["${OUTGOING_CID}x" != "x"]?Set(PJSIP_HEADER(add,P-Preferred-Identit)=))
same => n,ExecIf($["${OUTGOING_CID}x" != "x"]?Set(PJSIP_HEADER(add,Remote-Party-ID)=))
same => n,Set(__PT1C_SIP_HEADER=${UNDEFINED})
same => n,Set(CHANNEL(hangup_handler_wipe)=hangup_handler,s,1)
same => n,return
**Обратите внимание**:
- Все вхождения строки "**SIP-1611151795**" следует заменить на ID провайдера "**найти**" можно в адресной строке браузера при редактировании учетной записи в web интерфейсе MIKOPBX
- Вместо "****" следует задать требуемое значение заголовков
При использовании модуля "Группы пользователей":
[SIP-1611151795-outgoing-ug-custom]
exten => _X!,1,Dial(PJSIP/${number}@SIP-${CUT(CONTEXT,-,2)},600,${DOPTIONS}TKU(dial_answer)b(dial_create_chan_custom,s,1))
same => n,ExecIf($["${DIALSTATUS}" = "ANSWER"]?Hangup())
same => n,ExecIf($["${DIALSTATUS}" = "BUSY"]?Busy(2))
same => n,return
[dial_create_chan_custom]
exten => s,1,Gosub(lua_${ISTRANSFER}dial_create_chan,${EXTEN},1)
same => n,Set(pt1c_is_dst=1)
same => n,Set(GR_VARS=${DB(UsersGroups/${FROM_PEER})})
same => n,Set(tmpName=${CUT(GR_VARS,\,,2)})
same => n,Set(tmpName=${CUT(tmpName,\_,3)})
same => n,ExecIf($["${GR_VARS}x" != "x"]?Exec(Set(${GR_VARS})))
same => n,ExecIf($["${GR_PERM_ENABLE}" == "1" && "${GR_ID_${tmpName}}" != "1"]?return)
same => n,ExecIf($["${GR_PERM_ENABLE}" == "1" && "${GR_CID_${tmpName}}x" != "x"]?MSet(GR_OLD_CALLERID=${CALLERID(num)},OUTGOING_CID=${GR_CID_${tmpName}}))
same => n,ExecIf($["${OUTGOING_CID}x" != "x"]?Set(PJSIP_HEADER(add,P-Preferred-Identit)=))
same => n,ExecIf($["${OUTGOING_CID}x" != "x"]?Set(PJSIP_HEADER(add,Remote-Party-ID)=))
same => n,Set(__PT1C_SIP_HEADER=${UNDEFINED})
same => n,Set(CHANNEL(hangup_handler_wipe)=hangup_handler,s,1)
same => n,return
Особенность этого варианта в том, что значение "OUTGOING_CID" будет браться из настроек групп пользователей. Для каждой группы можно назначить свое значение исходящего callerid. К примеру провайдер Westcall таким образом позволяет управлять значением callerid, который видит клиент.
[[faq:|Обратно к инструкциям]]