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

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

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

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

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

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

Ответ 1

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

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

  • У Asterisk есть некоторые проблемы с H323. Если ваш поставщик предоставляет SIP, попросите вместо него SIP.

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

  • Несколько одновременных вызовов не проблема, моя установка Asterisk на простом ПК обрабатывает сотни суточных вызовов.

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

    Чтобы повысить производительность, вам необходимо:

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

Ответ 2

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

FreePBX упрощает настройку IVR - получил приличный веб-интерфейс и поддерживает некоторые классные инструменты Asterisk из коробки.

EDIT: FreePBX - это не Asterisk - это довольно удобный интерфейс, который генерирует для вас настройки. Trixbox включает в себя его по умолчанию, если вы хотите простое решение точки и стрелять.

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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

Ответ 7

Конструкция IVR в Asterisk не сложна, но есть немного "учебного скалы", связанного с получением и запуском вашего первого сервера Asterisk.

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

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

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

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

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

Ответ 8

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

Ответ 9

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

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

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

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

Ответ 10

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

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

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

Ответ 11

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