Настроить IVR с помощью Asterisk

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

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

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

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

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

11 ответов

Решение

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

Что тебе нужно знать:

  1. Звездочка имеет некоторые проблемы с H323, Если ваш поставщик поставляет SIPспросите их SIP вместо.

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

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

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

    Чтобы улучшить производительность, вы должны:

    1. Придерживайтесь одного кодека (µLaw это я использую), заставь всех SIP подключения, чтобы использовать этот кодек, и предварительно преобразовать все ваши звуковые файлы в него с помощью 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 не должно быть никаких проблем.

Если вы совершенно новый, я бы предложил изучить FreeSWITCH вместо Asterisk. Он намного лучше структурирован, а также содержит несколько готовых примеров, включая меню IVR, и синтаксис IVR довольно прост: http://wiki.freeswitch.org/wiki/IVR_Menu

Я запускаю экземпляр FreeSWITCH на виртуальном сервере Xen, и он отлично работает с несколькими одновременными вызовами.

Лучший способ создания приложений IVR - использовать VoiceXML, разработанный W3C.org (http://www.w3.org/TR/voicexml21/) . Asterisk не поставляется с браузером VoiceXML, но есть компании, которые предоставляют его для Asterisk, такие как SoftSyl Technologies (http://www.softsyl.com).

Такие компании, как Cisco и Avaya, также предоставляют браузер VoiceXML, но они не предназначены для Asterisk.

Звездочка скалы. Для нескольких строк подойдет простой P3 или лучше. Не виртуализируйте АТС; Звездочка полагается на довольно точное время.

Free PBX позволяет легко настроить IVR - он получил неплохой веб-интерфейс и поддерживает некоторые классные инструменты Asterisk из коробки.

РЕДАКТИРОВАТЬ: FreePBX не Asterisk - это красивый интерфейс, который генерирует конфигурации для вас. Trixbox включает его по умолчанию, если вам нужно простое решение "стрелять и снимать".

Если ваша учетная запись VoIP поддерживает несколько входящих линий, Asterisk будет использовать их очень хорошо. Вам также нужна достаточная пропускная способность интернета и достойное QoS. Для более чем одной линии в бизнес-системе я бы настаивал на выделенном соединении, чтобы у вас не было пропаданий при доступе пользователей в сеть.

Для более сложных IVR вы можете попробовать Astive Toolkit, особенно если вам нужна итерация баз данных или веб-сервисов.

Создание IVR в Asterisk не сложно, но есть некоторая "обучающая скала", связанная с запуском вашего первого сервера Asterisk.

Как заявил кто-то еще, качество звонка - это все. Заплатите, чтобы сделать записи профессионального уровня для ваших подсказок IVR и ваших объявлений. Убедитесь, что вы используете 64k-коды, такие как uLaw и aLaw; GSM (мобильный телефон) может быть дешевым в полосе пропускания, но он нарушает ожидания ваших клиентов в отношении качества.

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

Старайтесь, чтобы ваше меню было "мелким". Если для получения информации, которую ищет ваш клиент, требуется более трех опций меню, они с большой вероятностью могут повесить трубку или просто нажать "0", чтобы поговорить с человеком. Это побеждает точку вашего IVR.

Если вы собираетесь делать что-то довольно крутое с поиском в базе данных, аутентификацией учетной записи или чем-то подобным, я бы порекомендовал использовать приложение "AGI" - Asterisk Gateway Interface -. Мой личный фаворит - " Adhearsion", который хорошо сочетается с Ruby/Rails на стороне DB/Web.

Если вам нужна помощь или дополнительная информация, дайте мне знать.

Вы можете сделать это в абонентской группе...

[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()

Это не связано с программированием, но...

Взгляните на http://trixbox.org/, он поддерживает настройку от cisco до... snom телефонов Его мод Asterisk/Freepbx и все под приятным пользовательским интерфейсом!

У меня есть провайдер в Австралии, добавил их в качестве магистрали GSM, заняло 3 часа, чтобы настроить 4phones. IVR поддерживается

Единственными проблемами могли бы быть... качество записи голоса

Это довольно просто. Я использую sipgate.de в качестве провайдера для моей звездочки. вам нужно настроить диалплан.

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

sipgate бесплатен, за исключением того, что вы делаете исходящие звонки.

Если вы хотите настроить Asterisk IVR, вы также можете использовать веб-инструмент перетаскивания, чтобы сделать простой автосекретарь (как в вашем примере) или сложный IVR (управление IVR на основе сценариев или баз данных). Одним из вариантов является Cally Square. Посмотрите здесь: http://www.callysquare.com/

Я работал с IVR в прошлом, но в основном с большими системами и никогда не использовал Asterisk. Я быстро взглянул на их веб-сайт ( http://www.asterisk.org/), и он кажется очень информативным. Вы проверили там?

Другие вопросы по тегам