настройка IVR с Астериск
Мне нужно настроить простую систему IVR для компании друга, которая позволит абоненту перемещаться по меню, нажимая клавиши телефона. Что-то вроде расписания автобусов.
для сегодняшнего расписания нажмите "1", для завтрашнего расписания нажмите " 2 " и так далее.
Это исключительно информационная система, т. е. никакой навигационный маршрут не будет в конечном итоге с реальным человеком, но будут воспроизводиться только звуковые сообщения.
теперь я никогда не настраивал ничего подобного это раньше и немного покопавшись в Google. Похоже, я смогу достичь этого с помощью Asterisk.
- что еще мне нужно аппаратно?
- достаточно ли простого сервера Linux и учетной записи VOIP с провайдером в Германии?
- будет ли VPS обрабатывать задачу?
- как насчет нескольких одновременных входящих вызовов?
- они обрабатываются Asterisk?
11 ответов
это вполне возможно.
что вам нужно знать:
у Asterisk есть некоторые проблемы с
H323
. Если ваш поставщик поставляетSIP
, попросите ихSIP
вместо.вы можете построить целую
IVR
на абонентских группах в вашемextensions.conf
, но для сложных задач лучше использоватьAGI
. ЭтоPerl
илиPython
или любые языковые скрипты, которые реализуют вашIVR
логика. КаждыйAGI
сессия охватывает дочерний процесс, используйтеFastAGI
и сетевой демон, если вы ожидаете частых подключений.несколько одновременных вызовов не являются проблемой, моя установка Asterisk на простом ПК обрабатывает сотни sumultaneous звонки.
-
единственное, что может действительно влияет на производительность звуковые преобразования и определение сигналов.
для повышения производительности, вы следует:
придерживайтесь одного кодека (
µLaw
Я использую), force allSIP
подключения использовать этот кодек, и preconvert все ваши звуковые файлы с помощьюsox -t ul
. Как только вы это сделаете, вся операция Asterisk сводится к чтению байтов файла с диска и отправке их по сети с простой упаковкой. Нет никакой математики, ничего, кроме простых операций чтения-переноса-отправки.попросите вашего провайдера обнаружить тоны на его сторона и отправить их к вам из группы, используя
RFC 2833
. Обнаружение тонов-довольно трудоемкая операция процессора, пусть они делают это сами.
Я лично запускаю Asterisk на
2,66 MHz Celeron IV
С2048 MB RAM
, подFedora 10 X86_64
. 150 соединений сразу работают нормально, задержек нет.общий объем трафика составляет около
9.6 KByte/sec
за подключение. Для современного VPS не должно быть никаких проблем.
Звездочка пород. Для нескольких строк подойдет простой P3 или лучше. Не виртуализируйте УАТС; Asterisk полагается на довольно точное время.
FreePBX позволяет очень легко настроить IVR-получил приличный веб-интерфейс и поддерживает некоторые интересные инструменты Asterisk из коробки.
EDIT: FreePBX не Звездочка - это красивый интерфейс, который генерирует конфигурации для вас. Trixbox включает его по умолчанию, если вы хотите простую точку и стрелять решение.
Если ваша учетная запись VoIP поддерживает несколько входящих строк, то Asterisk будет использовать их просто отлично. Вам также нужна достаточная пропускная способность интернета и достойный QoS. Для более чем одной строки в бизнес-системе я бы настаивал на выделенном соединении, чтобы вы не испытывали отсева, когда пользователи получают доступ к сети.
лучший способ создания приложений IVR-использовать VoiceXML, разработанный W3C.org (http://www.w3.org/TR/voicexml21/) . Asterisk не поставляется с браузером VoiceXML, но есть компании, которые предоставляют это для Asterisk, такие как SoftSyl Technologies (http://www.softsyl.com).
такие компании, как Cisco и Avaya, также предоставляют браузер VoiceXML, но они не предназначены для Asterisk.
Если вы совершенно свежие, я бы предложил изучать FreeSWITCH вместо Asterisk. Он намного лучше структурирован, а также поставляется с некоторыми предварительно построенными примерами, включая меню IVR, и синтаксис IVR довольно прост:http://wiki.freeswitch.org/wiki/IVR_Menu
Я сейчас на виртуальном сервере Xen, и он отлично работает с несколькими одновременными вызовами.
Вы можете сделать это в абонентской группе...
[menu-main]
exten => s,1,Noop()
exten => s,n(msg),Background(ForTodayPress1TomorrPress2)
exten => s,1,Goto(menu-today)
exten => s,2,Goto(menu-tomorrow)
exten => i,1,Playback(invalid)
exten => i,n,Goto(msg)
exten => t,1,Goto(msg)
[menu-today]
etc...
[menu-tomorrow]
etc...
или, как кто-то другой предложил, Вы можете сделать это на любом языке, который может писать в stdin и читать из stdout. Реализация phpagi-мой любимый аромат. Он может соответствовать этому примеру, например, где PHP запускается в отдельном окне, поэтому он не влияет на УАТС при любой нагрузке.
[menu-main]
exten => s,1,Noop()
exten => s,n(msg),Background(ForTodayPress1TomorrPress2)
exten => s,1,Goto(menu-today,s,1)
exten => s,2,Goto(menu-tomorrow,s,1)
exten => i,1,Playback(invalid)
exten => i,n,Goto(msg)
exten => t,1,Goto(msg)
[menu-today]
exten => s,1,Noop()
exten => s,n,agi(http://myapache/agi/readschedule.php)
exten => s,n,Hangup()
IVR дизайн в Asterisk не сложно, но есть немного "обучения скалы", связанные с получением вашего первого сервера Asterisk и работает.
Как заявил кто-то другой, качество связи-это все. Платите, чтобы профессиональные записи класса делали для ваших подсказок IVR и ваших объявлений. Убедитесь, что вы используете коды 64k, такие как uLaw и aLaw; GSM (мобильный телефон) может быть дешевым на bandwith, но это нарушает ваши ожидания клиентов о качество.
Я настоятельно рекомендую вам поместить IVR в собственный контекст абонентской группы, а затем прямые вызовы в него. Это упрощает управление такими вещами, как выбор меню. Для каждого поднабора параметров используйте другой контекст абонентской группы.
попробуйте сохранить меню "мелкий". Если требуется более трех вариантов меню, чтобы получить информацию, которую ищет ваш клиент, они, скорее всего, повесят трубку или просто нажмите "0", чтобы поговорить с человеком. Что же ваш IVR.
Если вы собираетесь сделать что-то довольно крутое с поиском базы данных или аутентификацией учетной записи или тому подобное, я бы рекомендовал использовать интерфейс - приложение "AGI" - Asterisk Gateway. Мой личный фаворит "Adhearsion", который хорошо сочетается с Ruby / Rails на стороне DB/Web.
Если вам нужна помощь или дополнительная информация, дайте мне знать.
для более сложных IVR вы можете попробовать Astive Toolkit, особенно если вам нужна итерация баз данных или веб-сервисов.
Я работал с IVR в прошлом, но в основном с большими системами и никогда не использовал Asterisk. Я быстро взглянул на их веб-сайт (http://www.asterisk.org/) хотя и это кажется очень информативным, вы проверили там?
Это не связано с программированием, но...
взгляните на trixbox.org, оно поддерживает конфигурацию от Сиско к... телефоны snom Его Asterisk / Freepbx mod и все под хорошим пользовательским интерфейсом!
У меня есть провайдер в Австралии, добавил их в качестве магистрали gsm, взял 3 часа для установки 4phones. IVR поддерживается
единственные проблемы могут быть... качество записи голоса
Это довольно просто. Я использую sipgate.de как поставщик моей звездочки. вам нужно настроить dialplan.
Это тоже довольно просто. взгляните здесь. вы также должны взглянуть на расширения.conf. там несколько образцов внутри. это также образец, который подходит для вашей проблемы. чтобы подключиться к sipgate, загляните в их knowlogebase. есть несколько примеров конфигурации asterisk.
АОТ sipgate бесплатный, за исключением Вы делаете исходящие звонки.
Если вы хотите настроить Asterisk IVR, вы также можете использовать некоторые перетаскивания веб-инструмент для того, чтобы сделать простой Автосекретарь (как в вашем примере) или сложный IVR (управление скриптов или базы данных управляемой IVR). Один из вариантов -Калли Площадь. Посмотрите здесь: http://www.callysquare.com/