настройка IVR с Астериск

Мне нужно настроить простую систему IVR для компании друга, которая позволит абоненту перемещаться по меню, нажимая клавиши телефона. Что-то вроде расписания автобусов.

для сегодняшнего расписания нажмите "1", для завтрашнего расписания нажмите " 2 " и так далее.

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

теперь я никогда не настраивал ничего подобного это раньше и немного покопавшись в Google. Похоже, я смогу достичь этого с помощью Asterisk.

  • что еще мне нужно аппаратно?
  • достаточно ли простого сервера Linux и учетной записи VOIP с провайдером в Германии?
  • будет ли VPS обрабатывать задачу?
  • как насчет нескольких одновременных входящих вызовов?
  • они обрабатываются Asterisk?

11 ответов


это вполне возможно.

что вам нужно знать:

  1. у Asterisk есть некоторые проблемы с H323. Если ваш поставщик поставляет SIP, попросите их SIP вместо.

  2. вы можете построить целую IVR на абонентских группах в вашем extensions.conf, но для сложных задач лучше использовать AGI. Это Perl или Python или любые языковые скрипты, которые реализуют ваш IVR логика. Каждый AGI сессия охватывает дочерний процесс, используйте FastAGI и сетевой демон, если вы ожидаете частых подключений.

  3. несколько одновременных вызовов не являются проблемой, моя установка Asterisk на простом ПК обрабатывает сотни sumultaneous звонки.

  4. единственное, что может действительно влияет на производительность звуковые преобразования и определение сигналов.

    для повышения производительности, вы следует:

    1. придерживайтесь одного кодека (µLaw Я использую), force all SIP подключения использовать этот кодек, и preconvert все ваши звуковые файлы с помощью sox -t ul. Как только вы это сделаете, вся операция Asterisk сводится к чтению байтов файла с диска и отправке их по сети с простой упаковкой. Нет никакой математики, ничего, кроме простых операций чтения-переноса-отправки.

    2. попросите вашего провайдера обнаружить тоны на его сторона и отправить их к вам из группы, используя 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/