Автодозвон через обратный вызов из FreePBX

Первый вариант: 
в файл /etc/asterisk/extensions_custom.conf добавляем:


.[macro-autodial]

;формируем .call-файл
exten => s,1,System(echo "Channel: Local/${ARG1}@from-internal" > /tmp/${ARG2}${UNIQUEID}.call)
exten => s,n,System(echo "MaxRetries: 10" >> /tmp/${ARG2}${UNIQUEID}.call)
exten => s,n,System(echo "RetryTime: 20" >> /tmp/${ARG2}${UNIQUEID}.call)
exten => s,n,System(echo "WaitTime: 40" >> /tmp/${ARG2}${UNIQUEID}.call)
exten => s,n,System(echo -e "Callerid: \\x22CallBack ${ARG1}\\x22 \\x3C${ARG2}\\x3E" >> /tmp/${ARG2}${UNIQUEID}.call)
;звонить будем в контексте, который ниже
exten => s,n,System(echo "Context: autodial-internal" >> /tmp/${ARG2}${UNIQUEID}.call)
exten => s,n,System(echo "Extension: ${ARG2}" >> /tmp/${ARG2}${UNIQUEID}.call)
exten => s,n,System(echo "Priority: 1" >> /tmp/${ARG2}${UNIQUEID}.call)
;кладем на вход астериску
exten => s,n,System(sleep 15 && mv -f /tmp/${ARG2}${UNIQUEID}.call /var/spool/asterisk/outgoing/ &)
 
[from-internal-custom]
; *20<номер> автодозваниваемся на <номер>
exten => _*20X.,1,Macro(autodial,${EXTEN:3},${CALLERID(number)})
exten => _*20X.,2,Hangup()
 
 
[autodial-internal]
exten => _XXX,1,Dial(SIP/${EXTEN})
exten => _XXX,n,Hangup()
 
После изменения  файла:
service asterisk restart
 
В результате, *20номер поставит номер в автодозвон
 
Второй вариант: 
переходим в файл /etc/asterisk/extensions_override_freepbx.conf, который позволяет переназначать дефолтные контексты, не теряя при этом возможности менять настройки через веб-интерфейс.
В нем:
 
[from-internal] ; сохраняем последний набранный номер 
exten => _[0-9*#]X.,1,Set(DB(LASTCALLED/${CALLERID(number)})=${EXTEN}) 
; дальше в обработку 
exten => _[0-9*#]X.,2,Goto(from-internal-my,${EXTEN},1)
 
; *20 автодозваниваемся на последний набранный номер 
exten => *20,1,Macro(autodial,${DB(LASTCALLED/${CALLERID(number)})},${CALLERID(number)}) 
exten => *20,2,Hangup() 
 
; *20<номер> автодозваниваемся на <номер> 
exten => _*20X.,1,Macro(autodial,${EXTEN:3},${CALLERID(number)}) 
exten => _*20X.,2,Hangup() 
 
; цепляем [from-internal] в том виде, в котором он по дефолту, но под другим именем, для того, чтобы вызывать его после сохранения последнего номера 
[from-internal-my] 
include => from-internal-xfer 
include => bad-number
 
После изменения  файла:
service asterisk restart

В результате, *20номер поставит номер в автодозвон, а просто *20 совершит автодозвон последний набранный номер, причем последняя комбинация будет доступна только при втором варианте реализации.
Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 1 из 2

Если статья оказалась вам полезна, пожалуйста, отблагодарите посильной суммой :)

Еще есть вопросы? Отправить запрос

0 Комментарии

Войдите в службу, чтобы оставить комментарий.
На базе технологии Zendesk