Asteirsk Обратный звонок, или как дешево звонить
Встречается ситуация когда сотрудники находясь в командировках звонят с сотовых по межгороду в головной офис, хотя в офисе стоит АТС на которую заведет отличный дешевый оператор связи со вкусными ценами, или просто звонят на внутренний номер абонента, через внешний номер, да кучу ситуаций можно придумать общая проблема которых — обратный звонок. Именно для этих целей я и реализовал очередной сценарий, при котором сотруднику достаточно позвонить на номер, а потом АТС сама ему перезвонит и уже вызываемый абонент сможет сделать через АТС то, что ему необходимо не за счет своего баланса на сотовом, городском операторе или каком либо другом операторе предоставления телекоммуникационных услуг, а, например, за счет более дешевых услуг, подключенных к АТС.Частный случай такой ситуации реализован в сегодняшнем примере диалплана: Дозванивается на внешний номер → АТС перезванивает обратно → набираем внутренний номер абонента → общаемся за через исходящий с транка на АТС.
что нам потребуется: Пара строчек диалплана, которые будут обрабатывать входящее соединение и исходящее соединениеСкрипт генерации .call файла.
И так. Первым шагом нам нужно… закончить звонок:
[callback-context] exten => _7XXXXX.,1, Hangup
Далее вся обработка (какое слово громкое- обработка… Так… Обработочка) будет происходить в ексеншне «h» этого же контекста, так как трубку мы уже положили.Запускаем скрипт по созданию .call файла.
exten => h,1, System (/usr/local/scripts/callback.sh ${CALLERID (num)})
Сам скрипт выглядит вот так:
#!/bin/bash
callee=$1
Channel=«SIP/»$callee MaxRetries=10 RetryTime=10 WaitTime=20 Context=«call-to» Extension=«callback» Priority=1 DATA=`date`
echo «Channel: $Channel
CallerId: EXTERNAL_PBX_NUM
После ввода номера звоним на него и соединяем 2 канала в бридж функцией Dial.
[call-to]exten => callback,1, Read (NUM, input-number,4, n,1,5)exten => callback, n, DIAL (PJSIP/${NUM})
Таким образом мы звоним на внутренний номер не за свой счет, а за счет АТС.
P.S.1. Для перфекционистов: Да, я не поставил ввод пинкода. сами сделайте если вам нужно (подскажу — Надо ще раз использовать функцию Read).1. Да, АТС не дозвонится до абонента если он сам звонил с транка за которым не закреплен номер (которому выдается динамический номер).