настроить IVR с помощью Asterisk - PullRequest
11 голосов
/ 30 января 2009

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

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

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

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

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

Ответы [ 11 ]

16 голосов
/ 30 января 2009

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

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

  1. У Asterisk есть некоторые проблемы с 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 не должно быть никаких проблем.

2 голосов
/ 12 октября 2012

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

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

2 голосов
/ 12 февраля 2011

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

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

2 голосов
/ 30 января 2009

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

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

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

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

1 голос
/ 12 октября 2012

Разработка IVR в Asterisk не сложна, но есть некоторая «обучающая скала», связанная с запуском вашего первого сервера Asterisk.

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

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

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

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

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

1 голос
/ 16 мая 2012

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

1 голос
/ 26 марта 2011

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

[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()
0 голосов
/ 02 февраля 2014

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

0 голосов
/ 30 января 2009

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

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

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

0 голосов
/ 30 января 2009

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

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

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

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

...