Как сделать, чтобы Asterisk сам позвонил

Иногда нужно совершить автоматический звонок прямо с АТС Asterisk. Если случилось что-то очень важное в составе системы мониторинга. Или в составе системы умного дома. Я, например, использую эту возможность для сохранения редко используемых SIM карт, — периодически совершаю с них звонки в автоматическом режиме. Звоню на свой же телефон и слушаю, что мне хочет сообщить робот. У него фантазии нет, поэтому каждый раз торжественно проговаривает поздравления с установкой и настройкой. 😀

Вызов на телефон самый эффективный способ оповестить вас о чем-то действительно важном. Тем более, благодаря услуге Мультифон и бесплатной АТС сделать это как никогда просто.

Порывшись в интернете, нашел наиболее простой способ решения задачи. Проинициализировать вызов с помощью файла (Call file) определенного синтаксиса. Да, вот так просто, друзья!

Как это работает:

  • Помещаем колл файл в директорию /var/spool/asterisk/outgoing/ или в другую, которая сконфигурирована в asterisk.conf.
  • Если у вас отключена автозагрузка (autoload=no) в настройках modules.conf, убедитесь, что модуль pbx_spool.so загружен, иначе способ с файлами вызова работать не будет.
  • Если время модификации call file установлено в будущем, астериск дождется его наступления, и выполнит вызов.
  • Иначе, Астериск обнаружит и немедленно выполнит вызов с теми параметрами, которые указаны. Такие вызовы могут содержать привязку к dial plan’у или являться самостоятельными.
  • После совершения звонка, Астериск удалит call file из указанной папки (outgoing).

Список параметров установки вызова:

  • Channel: <Канал/транк для вызова.>
  • CallerID: “имя” <номер> от кого будет вызов. Не сработает, если не соблюдать синтаксис.
  • MaxRetries: <число> — количество попыток, не считая первой. То есть 0 = одна попытка, что соответствует значению по умолчанию. Соответственно 1 = две попытки и т.д.
  • RetryTime: <число> -количество секунд между попытками. По умолчанию 5 минут (300 секунд)
  • WaitTime: <число> — сколько секунд ожидать ответа. Если не указывается, то 45.
  • Account: какая учетная запись будет использоваться

Что делать в случае ответа на вызов, соединить с:

  • Context: <контекст> — определяется в extensions.conf
  • Extension: — с каким «номером» соединить
  • Priority: <приоритет> — с какого приоритета (грубо строки) начинать.
  • Set: установить переменную в определенное значение, которая используется в логике вызова. Например file1=/path
  • Application: вызвать команду астериска, вместо того чтобы соединять с абонентом.
  • Data: различные параметры, которые передаются вместе с командой.

Пример звонка через Мегафон и проигрывание демонстрационного приветствия:

Channel: SIP/megafon-spb/7921******3
Application: Playback
Data: demo-congrats

Соответственно, можем записать свои аудиофайлы и проигрывать их в соответствии с ситуацией. Как их создать с правильными параметрами, может быть, расскажу в другой раз. Или сами найдите в интернете, там ничего сложного нет, просто дело хлопотное.

Небольшой совет. Если звонок планируется совершать периодически с определенным равным интервалом на один и тот же номер, можно создать шаблон. Потом просто копировать его в папку исходящих вызовов через cron, например таким правилом:

0 21 1 * * /bin/cp /home/account/Asterisk/keepalive.call /var/spool/asterisk/outgoing

Совершать звонок каждый месяц первого числа в 21 час ровно.

Добавить комментарий