====== Добавить 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:|Обратно к инструкциям]]