#Asterisk

Amigo – лучший друг Golang и Asterisk

Начиная писать свой первый Peach Dialer, я выбрал язык, который довольно хорошо знал, благо работал с ним с 1999 года — PHP. Меня не смущало, что он, в принципе, не предназначен для создания долгоживущих процессов, но то, что получилось в итоге, работает по несколько месяцев и радует своих владельцев.

Потом пошла мода на Websocket, который захотелось применить в интерфейсе, а PHP в то время не очень-то умел с ними работать (может, и сейчас не умеет). Я обратил внимание на node.js. Классная штука, любовь на века, подумал я, но вскоре захотелось большего.

Бо́льшим для меня стал Go — язык, совмещающий скорость и удобство деплоя компилируемых языков с простотой разработки, свойственной интерпретируемым языкам. К сожалению, разработанных библиотек надлежащего качества и с ожидаемым функционалом для взаимодействия с Asterisk в то время не было. Были какие-то начинания, но не доведённые до конца.

Итак, по сусекам поскребя, да по амбару пометя́, испёк я Amigo — удобную библиотеку для работы с астериском посредством AMI протокола.


Читать целиком

Инкремент переменной в дайлплане Астериска

Если требуется реализовать какой-то счетчик в дайлплане, удобно использовать переменную канала. Но просто так изменить её значение, прибавляя единицу, не получится.


Читать целиком

Глубокий дебаг астериска

Иногда можно потерять довольно много времени, пытаясь в консоли астериска отловить ошибку выполнения agi скрипта, или просто внешнего приложения, запускаемого из дайлплана. Есть один способ, который в документации в явном виде не описан, но очень помогает. Мы запустим asterisk в режиме, похожем на монопольный в , при этом будем видеть в его консоли все предупреждения и ошибки.


Читать целиком

Проигрывание файла при телефонном разговоре

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

Рассмотрим вариант решения данной задачи на базе IP PBX Asterisk.


Читать целиком