Переадресация с внешним CallerID при помощи диалплана

Назначение

Подстановка CallerID внешнего абонента при переадресации принятого вызова на другой внутренний номер.

Описание

В данном примере, функция DB вычисляет длину CallerID вызывающего абонента и если длина более 3-х знаков,
определяет callerid, как внешний и устанавливает его для передачи в качестве CallerID внутреннего абонента, если вызов, в дальнейшем, будет переадресован.
По завершении вызова, фальшивое CALLTRACE очищается при помощи функции DB_DELETE.
(опция 'e', команды Dial, указывает выполнить расширение 'h', по завершению вызова.)

В примере: внутренние номера 1ХХ, вызовы из контекста [from-internal]

[from-internal]
exten => _1XX,1,Noop(+++set external callerid +++)
exten => _1XX,n,GoSub(sub-transfer_external_cid,${EXTEN},1(${CALLERID(num)},${EXTEN}))
[sub-transfer_external_cid]
exten => _XXX,1,Noop(~~~http://asterisk-pbx.ru~~~)
exten => _XXX,n,Set(cidint=${ARG1})
exten => _XXX,n,GotoIf($[${LEN(${DB(CALLTRACE/${ARG1})})} > 3]?external:internal)
exten => _XXX,n(external),Set(CALLERID(num)=${DB(CALLTRACE/${ARG1})})
exten => _XXX,n,Dial(SIP/${ARG2},,Tte)
exten => _XXX,n(internal),Dial(SIP/${ARG2},,Tteo)
exten => h,1,Set(DB_DELETE(CALLTRACE/${cidint})=ignored)

См. также Option app DIAL(,,o)

  • asterisk/dialplan/transfer_with_external_callerid.txt
  • Последние изменения: 2018/06/30