Core
Core copied to clipboard
"Caller ID source" and "DID source"
Предусмотреть настройку для провайдера "Caller ID source". Такая опция есть в настройках. телефонов Yealink. Откуда брать значение номера абонента.
Варианты:
- По умолчанию
- FROM
- RPID
- PAI
- CUSTOM
Пример парсинга Remote-Party-ID
[SIP-1659624077-incoming-custom]
exten => _[0-9*#+a-zA-Z][0-9*#+a-zA-Z]!,1,NoOp(------)
same => n,Set(tmpRpid=${PJSIP_HEADER(read,Remote-Party-ID)})
same => n,ExecIf($["x${tmpRpid}" != "x"]?Set(fromCid=${CUT(CUT(tmpRpid,@,1),:,2)}))
same => n,ExecIf($["${fromCid}x" != "x"]?Set(CALLERID(num)=${fromCid}))
same => n,ExecIf($["${fromCid}x" != "x"]?Set(CALLERID(name)=${fromCid}))
same => n,return
Аналогично для "DID source" Варианты:
- По умолчанию
- TO
- Diversion
- Custom, к примеру "x-roistat-phon" или "CALLED_DID"
Примеры https://wiki.mikopbx.ru/faq:did-routs#did_v_zagolovke_to
Для "Custom" вариантов предусмотреть "парсер", символ начала номера, и символ окончания номера.
Парсить RPID не нужно. Для этого лучше использовать опции:
[endpoint]
trust_id_inbound=yes
send_rpid=yes
; DID from "Diversion"
same => n,Set(NEW_FROM_DID=${PJSIP_PARSE_URI(${CUT(${PJSIP_HEADER(read,Diversion)},\;,1)},user)})
; DID from "To"
same => n,Set(NEW_FROM_DID=${PJSIP_PARSE_URI(${PJSIP_HEADER(read,To)},user)})
; DID from "custom header" CALLED_DID
same => n,Set(NEW_FROM_DID=${PJSIP_HEADER(read,CALLED_DID)})
; DID - FIX value
same => n,Set(NEW_FROM_DID=74952293042)
same => n,ExecIf($["${NEW_FROM_DID}x" != "x" && "${NEW_FROM_DID}" != "${NEW_FROM_DID}"]?GOTO(${CONTEXT},${toNum},1))
[add-trim-prefix-clid-custom]
exten => _[0-9*#+a-zA-Z][0-9*#+a-zA-Z]!,1,NoOp(------)
same => n,Set(tmpDiversion=${PJSIP_HEADER(read,Diversion)})
same => n,ExecIf($["x${tmpDiversion}" != "x"]?Set(toNum=${CUT(CUT(tmpDiversion,@,1),:,2)}))
same => n,ExecIf($["${toNum}x" != "x" && "${toNum}" != "${EXTEN}"]?Gosub(${contextID},${toNum},1))
same => n,return