Core icon indicating copy to clipboard operation
Core copied to clipboard

"Caller ID source" and "DID source"

Open boffart opened this issue 2 years ago • 3 comments

Предусмотреть настройку для провайдера "Caller ID source". Такая опция есть в настройках. телефонов Yealink. Откуда брать значение номера абонента.

Варианты:

  1. По умолчанию
  2. FROM
  3. RPID
  4. PAI
  5. 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" вариантов предусмотреть "парсер", символ начала номера, и символ окончания номера.

boffart avatar Apr 06 '23 10:04 boffart

Парсить RPID не нужно. Для этого лучше использовать опции:

[endpoint]
trust_id_inbound=yes
send_rpid=yes

boffart avatar Apr 11 '23 09:04 boffart

     ; 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))

boffart avatar Jan 25 '24 12:01 boffart

[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

boffart avatar Feb 01 '24 12:02 boffart