Перейти к содержимому


Фотография
- - - - -

CallBack для Asterisk (заказ обратного звонка)

callback asterisk

  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 Demonik

Demonik

    Учусь Linux

  • Администраторы
  • 41 сообщений

Отправлено 01 Июнь 2017 - 11:55

Для того что бы реализовать callback в Asterisk, т.е. заказать обратный звонок для абонента, если допустим он не хочет ждать очередь пока оператор освободиться, станция позвонит и оператору и абоненту из вне. Делаем следующее:
 
1. Создаем скрипт с именем callback.sh в директории /var/lib/asterisk/agi-bin/ со следующим содержанием:

#Get number to call
number=$1
callfile=/tmp/$number.call
rm -Rf $callfile

#Create call file
touch $callfile
echo "Channel: Local/docall@operatorspool" >> $callfile
echo "Callerid: Zvonok klienty" >> $callfile
echo "MaxRetries: 10" >> $callfile[/font]
echo "RetryTime: 20" >> $callfile
echo "WaitTime: 30" >> $callfile
echo "Context: bnumleg" >> $callfile
echo "Extension: docall" >> $callfile
echo "Priority: 1" >> $callfile
echo "Set: BNUM=$1" >> $callfile

#Move call file to asterisk directory
mv $callfile /var/spool/asterisk/outgoing/

exit 0

Описание переменных:

  • Channel: <channel> — Какой канал использовать для звонка
  • CallerID: «name» <number> — Установить Caller ID, проще сказать тут мы можем выставить АОН (номер с которого мы звоним).
  • MaxRetries: <number> — Максимальное кол-во попыток дозвониться, по умолчанию 0, что является одной попыткой.
  • RetryTime: <number> — Время в секундах между попытками дозвона, по умолчанию 300 (5 минут).
  • WaitTime: <number> — Сколько секунд ожидаем поднятия трубки, по умолчанию 45.
  • Context: <context-name> — Какой контекст используем из extensions.conf
  • Extension: <ext> — Какой экстеншн используем в выбранном контексте (так же в extensions.conf).
  • Priority: <priority> — С какого приоритета начинаем.

Даем ему права на запуск:

chmod +x /var/lib/asterisk/agi-bin/callback.sh

2. Настраиваем диалплан в Asterisk в файле extension.conf.
    Добавляем контексты в диалплан:

[operatorspool] 
exten => docall, 1, Verbose(звоним операторам)
exten => docall, n, Wait(2)
exten => docall, n, Queue(имя очереди или куда там хотим закинуть)

[bnumleg]
exten => docall, 1, Verbose(звоним абоненту B)
exten => docall, n, Dial(SIP/ttk-trunk08/${BNUM}) (Подставляем свой транк)
exten => docall, n, Hangup()

Если обратный звонок нужен в меню IVR, то в меню нажатия кнопок добавляем:

exten => 9,1,System(/var/lib/asterisk/agi-bin/callback.sh ${CALLERID(num)})

В этом случае при нажатии цифры 9 произойдёт обратный звонок, первым свободным оператором из очереди.
 
Если обратный звонок нужен во время ожидании абонента в очереди, то в самой очереди (в файле queues.conf) добавляем параметр «context», к примеру context = callback, и в файле extensions.conf добавляем соответствующий контекст:

[callback]
exten => 9,1,System(/var/lib/asterisk/agi-bin/callback.sh ${CALLERID(num)})

Так же как и в первом варианте при нажатии 9 будет заказан обратный звонок.


Есть вопросы или пожелания? demonik.0789@gmail.com

Сайт: https://asteriskperm.ru/

Группа ВК: ССЫЛКА (Заходим и вступаем! ;D)