Дмитрий Барышников
27.02.2019
969

«Делаем игрушку для ребёнка с помощью IP-телефона и Asterisk»

В это статье сделаем игрушку с помощью IP-телефона и Asterisk. Задумка в том, чтобы ребенок по нажатию какой-либо цифры на панели телефона услышал сообщения записанное одним из родственников. Определим конкретную задачу в рамках статьи. По нажатию кнопки один, ребенок должен услышать сообщение от бабушки Юлии, по нажатию двойки — сообщение от бабушки Лидии, по нажатию […]

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

Определим конкретную задачу в рамках статьи. По нажатию кнопки один, ребенок должен услышать сообщение от бабушки Юлии, по нажатию двойки — сообщение от бабушки Лидии, по нажатию кнопки три — сообщения от дедушки Владимира и по нажатию кнопки четыре — сообщение от дедушки Александра.

Звуковые файлы должны быть в формате .wav и частотой 8кГц

Звуковые файлы для каждого члена семьи переименуем по порядку начиная с единицы

Звуковые файлы скопируем на атс в папку соответствующую номеру каждого члена семьи. Эти папки будут храниться по пути /var/lib/asterisk/sounds/ru/custom/

Для бабушки Юлии под номером один папка со звуковыми файлами на атс примет вид:

Для дедушки Владимира под номером три папка со звуковыми файлами на атс примет вид:

После того как разобрались со звуковыми файлами, приступим к настройки диалплана в соответствующем файле.

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

Первая строчка:

Отлавливаем нажатие кнопки один с помощью exten. После чего с помощью функции Set в переменную COUNT1 сохраняем количество звуковых фалов от бабушки Юлии в соответствующей папке. Подсчет количество файлов  папке происходит с помощью команды ls /var/lib/asterisk/sounds/ru/custom/1/ | wc –l

ls  — утилита Unix, которая выводит содержимое каталогов. Команда ls с  параметром wc –l подсчитывает и выводит количество файлов в указанной папке.
Так как команда ls это unix команда и выполняется она в консоле(SHELL), а используется в диалплане asterisk, то используем функцию SHELL

Вторая строчка

Функция NoOp выводит в консоль asterisk содержимое переменной COUNT1. Это используется в качестве отладочной информации. Поэтому данную строчку можете не использовать.

Третья строчка

С помощью функции Playback воспроизводим звуковой файл. Для этого в параметрах этой функции указываем путь к папке со звуковыми файлами бабушки Юлии. В качестве имени звукового файла используем функцию RAND. Эта функция генерирует случайное число из промежутка указанного в параметрах это функции. В нашем случае этот промежуток равен от единицы до числа количества звуковых файлов в соответствующей папке.

Четвертая строчка

Выполняем завершение вызова после прослушивания аудио файла.

Подсчет количества аудио фалов в папке и случайное число используем для того чтобы asterisk мог воспроизводить аудио файлы которые будут добавляться далее для расширения картотеки файлов. То есть конструкция рассчитана на использование динамического количества аудио файлов.

Вся конструкция для бабушки Юлии выглядит так:

Для бабушки Лидии диалплан примет вид:

В данной конструкции отлавливаем нажатие кнопки 2, что соответствует коду для бабушки Лидии и соответственно поменяли пути к папке с файлами.

Целиком диалплан для всех бабушек и дедушек будет выглядеть так:

Протестируем полученный диалплан

В данной схеме есть недостаток. Он заключается в том, чтобы прослушать другой звуковой файл нужно выполнить сброс соединения, т.е. положить трубку. Чтобы избавится от этого недостатка, пересоберем схему используя IVR.

Создадим отдельный контекст, например ivrforbaby. В этот контекст перенесем екстены созданные для каждого члена семьи. Так же добавим конструкцию для обработки ошибочного набора, которая будет, переводит на ожидание нового нажатия:

В данной конструкции воспользуемся функцией GoTo, которая позволяет переходить на определенный контекст, exten с приоритетом. В нашем случае будем переводит на наш созданный контекст на exten с функцией ожидания нажатий цифры.

Exten с функцией ожидания выглядит так:

Для ожидания нажатия используем функцию WaitExten(60), которая ожидает нажатие в течение 60 секунд.

Далее добавим конструкцию для обработки timeout, т.е. когда закончится время ожидания нажатия кнопки:

В нашем случаю по истечению времени будем, переводить заново на ожидание нажатия клавиши.

Теперь нужно подключить созданный контекст с IVR к телефону ребенка. Для этого в контекст телефона добавим следующую конструкцию:

Данный exten ловит нажатие любой кнопки и перенаправляет на IVR. Так же используем функцию GoTo в параметрах которого добавим созданный контекст ivrforbaby, в качестве параметра exten в контекст будет передаваться цифра которую нажал ребенок с приоритетом 1. В свою очередь IVR отработает согласно нажатой цифре.

В итоге получился вот такой диалплан:

Протестируем полученный диалплан:

Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments

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

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

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

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

ближайшие Вебинары

ONLINE

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 сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.