artem
18.12.2012
39156

Использование Call-файлов в Asterisk

Call-файлы — это удобный инструмент, позволяющий связывать Asterisk и любые внешние приложения. Связь обеспечивается посредством обмена данными через текстовые файлы, называемые Call-Файлами. Такую связь часто делают для совместной работы CRM-системы, систем автообзвона и автооповещения, а также программы на любых языках программирования, и, разумеется, BASH. Call-файлы имеют определенную структуру, которую понимает Asterisk. Получая такой файл, Asterisk ищет в нем необходимые для себя инструкции и переменные, после чего обрабатывает и выполняет его.

Как Asterisk получает Call-файл?

Для работы Call-файлов используется директория/var/spool/asterisk/outgoing/

Как только в этой директории появляется Call-файл, он тут же поступает на обработку Asterisk-ом.

Структура Call-файла (на англ.яз.):

Specify where and how to callChannel: <channel>: Channel to use for the call.CallerID: «name» <number> Caller ID, Please note: It may not work if you do not respect the format: CallerID: «Some Name» <1234>MaxRetries: <number> Number of retries before failing (not including the initial attempt, e.g. 0 = total of 1 attempt to make the call). Default is 0.RetryTime: <number> Seconds between retries, Don’t hammer an unavailable phone. Default is 300 (5 min).WaitTime: <number> Seconds to wait for an answer. Default is 45.Account: Set the account code to use.

If the callanswers, connect it here:Context: <context-name> Context in extensions.confExtension: <ext> Extension definition in extensions.confPriority: <priority> Priority of extension to start withSet: Set a variable for use in the extension logic (example: file1=/tmp/to) ; in Asterisk 1.0.x use ‘SetVar’ instead of ‘Set’Application: Asterisk Application to run (use instead of specifiying context, extension and priority)Data: The options to be passed to application

New (?) in Asterisk 1.4Set: Can now also write to dialplan functions like CDR ()AlwaysDelete: Yes/No — If the file’s modification time is in the future, the call file will not be deletedArchive: Yes/No — Move to subdir «outgoing_done» with «Status: value», where value can be Completed, Expired or Failed.

Пример Call-файла.

Данный Call-файл принимает переменную $temp и вызывает контекст from-hdd, где эта переменная задается в качестве экстеншена.

CallerID: »HDD» <$temp>
MaxRetries: 1
RetryTime: 15
WaitTime: 15
Context: from-hdd
Extension: $temp
Priority: 1

Пример контекста, предназначенного для работы с Call-файлом.

Для того чтобы Call-файл отработал в системе, требуется правильным образом описанный контекст from-hdd. Суть его такова:

Дозвониться на номер 751Воспроизвести сообщение «Температура жесткого диска составляет»Воспроизвести число, хранящееся в переменной, например «сорок восемь»Воспроизвести сообщение «Градусов».Корректно завершить разговор.

[from-hdd]
  exten ≥_.,1,Wait  (1)
same≥n,Dial  (SIP/751)
same≥n,PlayBack  (hello-world)
same≥n,Wait  (0.5)
same≥n,SayDigits  (${EXTEN})
same≥n,PlayBack  (vm-goodbye)
same≥n,Hangup  ()

Данный пример показывает, каким образом можно настроить Asterisk и внешние приложения для оповещения о температуре жесткого диска сервера. Мы его используем для связи bash+cron с Asterisk.

Пример скрипта для создания Call-файла.

Вот сам скрипт на bash, который обеспечивает его работу:

#!/bin/bash
temp='  (smartctl --all /dev/sda | grep Temperature_Cels | awk '{print $10}')'
#echo $temp
  /bin/echo  «CallerID: »HDD» <$temp>
MaxRetries: 1
RetryTime: 15
WaitTime: 15
Context: from-hdd
Extension: $temp
Priority: 1
» > /tmp/test.call
  chown asterisk:asterisk /tmp/test.call
  cat /tmp/test.call
#sleep 10
mv /tmp/test.call /var/spool/asterisk/outgoing/

Успешного использования Asterisk!

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Остались вопросы?

Я - Кондрашин Игорь, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование


ближайшие курсы

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.