Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия | ||
faq:add_ppi [2020/10/22 11:00] Портнов Алексей создано |
faq:add_ppi [2022/02/02 07:48] (текущий) Портнов Алексей |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== При исходящем добавить P-Preferred-Identity заголовок ====== | + | ====== Добавить P-Preferred-Identity и Remote-Party-ID заголовок ====== |
[[faq:|Обратно к инструкциям]] | [[faq:|Обратно к инструкциям]] | ||
Строка 8: | Строка 8: | ||
Для решения задачи следует описать дополнительные контексты через меню [[:custom-files|Кастомизация системных файлов]]. Править будем файл **extensions.conf**. Добавьте в конец файла следущий текст: | Для решения задачи следует описать дополнительные контексты через меню [[:custom-files|Кастомизация системных файлов]]. Править будем файл **extensions.conf**. Добавьте в конец файла следущий текст: | ||
- | <code>[SIP-12345-outgoing-custom] | + | <code> |
- | exten => _X!,1,Ringing() | + | [SIP-1611151795-outgoing-custom] |
- | same => n,Gosub(${ISTRANSFER}dial,${EXTEN},1) | + | 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,Dial(PJSIP/${number}@SIP-12345,600,${DOPTIONS}TKU(dial_answer)b(sipgate-create-chan,s,1)) | + | same => n,ExecIf($["${DIALSTATUS}" = "ANSWER"]?Hangup()) |
- | same => n,ExecIf($["${ISTRANSFER}x" != "x"]?Gosub(${ISTRANSFER}dial_hangup,${EXTEN},1)) | + | same => n,ExecIf($["${DIALSTATUS}" = "BUSY"]?Busy(2)) |
- | same => n,Set(pt1c_UNIQUEID=${EMPTY_VALUE}) | + | same => n,return |
- | same => n,ExecIf($["${BLINDTRANSFER}x" != "x"]?AGI(check_redirect.php,${BLINDTRANSFER})) | + | |
- | same => n,Hangup() | + | [dial_create_chan_1611151795_custom] |
- | + | exten => s,1,Gosub(lua_${ISTRANSFER}dial_create_chan,${EXTEN},1) | |
- | [sipgate-create-chan] | + | same => n,Set(pt1c_is_dst=1) |
- | exten => s,1,Gosub(dial_create_chan,${EXTEN},1) | + | same => n,Set(OUTGOING_CID=74952293042) |
- | same => n,Set(PJSIP_HEADER(add,P-Preferred-Identity)=<sip:74952293042@sipconnect.sipgate.de>) | + | same => n,ExecIf($["${OUTGOING_CID}x" != "x"]?Set(PJSIP_HEADER(add,P-Preferred-Identit)=<sip:${OUTGOING_CID}@127.0.0.1>)) |
- | same => n,return | + | same => n,ExecIf($["${OUTGOING_CID}x" != "x"]?Set(PJSIP_HEADER(add,Remote-Party-ID)=<sip:${OUTGOING_CID}@127.0.0.1>)) |
- | </code> | + | same => n,Set(__PT1C_SIP_HEADER=${UNDEFINED}) |
+ | same => n,Set(CHANNEL(hangup_handler_wipe)=hangup_handler,s,1) | ||
+ | same => n,return | ||
+ | </code> | ||
**Обратите внимание**: | **Обратите внимание**: | ||
- | - Все вхождения строки "**SIP-12345**" следует заменить на ID провайдера "**подсмотреть**" можно в адресной строке браузера при редактировании учетной записи в web интерфейсе MIKOPBX | + | - Все вхождения строки "**SIP-1611151795**" следует заменить на ID провайдера "**найти**" можно в адресной строке браузера при редактировании учетной записи в web интерфейсе MIKOPBX |
- | - Вместо "<sip:74952293042@sipconnect.sipgate.de>" следует задать требуемое значение заголовка PPI | + | - Вместо "**<sip:${OUTGOING_CID}@127.0.0.1>**" следует задать требуемое значение заголовков |
+ | |||
+ | При использовании модуля "Группы пользователей": | ||
+ | |||
+ | <code> | ||
+ | |||
+ | [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)=<sip:${OUTGOING_CID}@127.0.0.1>)) | ||
+ | same => n,ExecIf($["${OUTGOING_CID}x" != "x"]?Set(PJSIP_HEADER(add,Remote-Party-ID)=<sip:${OUTGOING_CID}@127.0.0.1>)) | ||
+ | same => n,Set(__PT1C_SIP_HEADER=${UNDEFINED}) | ||
+ | same => n,Set(CHANNEL(hangup_handler_wipe)=hangup_handler,s,1) | ||
+ | same => n,return | ||
+ | |||
+ | </code> | ||
+ | <note important>Особенность этого варианта в том, что значение "OUTGOING_CID" будет браться из настроек групп пользователей. Для каждой группы можно назначить свое значение исходящего callerid. К примеру провайдер Westcall таким образом позволяет управлять значением callerid, который видит клиент.</note> | ||
[[faq:|Обратно к инструкциям]] | [[faq:|Обратно к инструкциям]] |