Фреймворк Asterisk AGI для IVR;Альтернатива прилипанию?

StackOverflow https://stackoverflow.com/questions/97920

Вопрос

Я пытаюсь начать писать масштабируемые приложения телекоммуникационного уровня с помощью Asterisk и Ruby.Изначально я намеревался использовать для этого фреймворк Adhearsion, но он не обладает необходимой зрелостью и его документация сильно не хватает.AsteriskRuby кажется хорошей альтернативой, поскольку он хорошо документирован и написан Vonage.

Есть ли у кого-нибудь опыт развертывания приложений IVR на основе AGI?Какую структуру, если таковая имеется, вы использовали?Я бы даже рассмотрел не-Ruby, если это оправдано.Спасибо!

Это было полезно?

Решение

Вам следует вернуться к Adhearsion, поскольку вышла версия 0.8.1, а документация в последнее время стала намного лучше.Посмотрите здесь:

http://adhearsion.com http://docs.adhearsion.com http://api.adhearsion.com

Другие советы

SipX — действительно неправильный ответ.Я написал чрезвычайно сложный VoiceXML для SipX 3.10.2, и все это было напрасно, поскольку в SipX 4 исключен SipXVXML для интерфейса, который требует IVR для компиляции JAR-файлов.В довершение всего, компания Nortel объявила о банкротстве, крайне плохая документация по версии с открытым исходным кодом, плохое соответствие стандартам VXML 2.0 (начиная с 3.10.2) и SIP (начиная с 3.10.2, она плохо совместима с ITSP).Я буду аплодировать ему за то, что он отлично справляется с тем, для чего он был предназначен, — быть УАТС.Но как IVR, если бы мне пришлось делать это снова, я бы сделал что-то другое.Не знаю точно, но что-то другое.Сейчас я играюсь с Trixbox CE и работаю над его привязкой к JVoiceXML или VoiceGlue.

Кроме того, не читайте эту чушь о SipX Wiki.Он сравнивает SipX 3.10 с AsteriskNOW 1 и Trixbox 1.Ну давай же.Это все равно, что сравнивать Mac OS X с Win95!Более реалистичным сравнением было бы SipX 4 (выход в первом квартале 2009 г.) с Asterisk 1.6 и Trixbox 2.6, которое показало бы, что они достигают почти идентичных результатов, за исключением области масштабируемости и высокой доступности;SipX в этом выигрывает.Но из соображений зрелости и стабильности я бы рекомендовал Asterisk.

Кроме того, мои реальные результаты производительности с SipXVXML:
Dell PowerEdge R200, Xeon Dual Core 3,2 ГГц, обрабатывает 17 вызовов без подтормаживаний.
HP DL380 G4, Dual Xeon HT 3,2 ГГц, обрабатывает 30 вызовов без длительных пауз.

Я опубликую свои выводы, когда закончу оценку VoiceGlue и JVoiceXML, но думаю, что в конечном итоге мне придется написать собственный PHP, вызываемый из AGI, поскольку все инструменты являются родными для Asterisk.

Если вы ищете приложения «телекоммуникационного уровня», возможно, вам стоит поискать SipXecs вместо asterisk.Это многофункциональный, бесплатный продукт с открытым исходным кодом, с коммерческой поддержкой от Nortel.Вы можете взаимодействовать с ним через API веб-служб на Ruby (или любом другом языке).

См. SipXecs вики Чтобы получить больше информации.На этом сайте есть матрица сравнения функций AsteriskNOW и TrixBox.

Других фреймворков действительно нет.Конечно, привязки AGI есть к каждому языку, но что касается полноценных фреймворков для разработки телефонных приложений, то мы пока еще не готовы.По крайней мере, в мире открытого исходного кода.

Я задал несколько связанные вопросы здесь, здесь, и здесь.Я использую Speech Server от Microsoft, и мне очень интересно узнать о любых существующих альтернативах, особенно с открытым исходным кодом.Возможно, вы найдете полезную информацию в ответах на один из этих вопросов.

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

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

Я думаю, все зависит от того, что вы хотите делать с AGI;обычно у меня есть довольно сложный диалплан для сбора и проверки всего пользовательского ввода, а затем просто использую AGI для подключения к Java-приложению, которое будет читать некоторые переменные, делать с ними некоторые действия (выполнять операции, запросы и т. д. и т. п.), а затем устанавливать еще несколько переменные на канале AGI и отключается.На этом этапе диалплан продолжает работать в зависимости от результата переменных, установленных приложением Java.

Это работает очень быстро, потому что у вас есть ServerSocket в приложении Java, который получает входящие соединения от AGI, создает JAGIClient с новым сокетом и новым экземпляром JAGIProcessor (который вам нужно написать, это объект, который будет делать все ваши действия). обработку), а затем запустите JAGIClient внутри пула потоков.Ваш JAGIProcessor реализует методprocessCall, где он выполняет всю необходимую работу, взаимодействуя с JAGIClient, переданным в качестве параметра, для чтения и установки переменных или выполнения любых действий, которые позволяет интерфейс AGI.

Итак, у вас постоянно работает Java-приложение, и это может быть простое приложение J2SE или приложение EE в контейнере, не имеет значения;после запуска он будет обрабатывать запросы AGI очень быстро, поскольку не нужно запускать новые процессы (в отличие от простого AGI, который запускает программу для каждого вызова AGI).

Сми снова.После миграции IVR моего клиента с SipX на Asterisk с использованием PHPAGI, я должен сказать, что я не встречал другой архитектуры, которая была бы настолько простой и функциональной.Сегодня я буду проводить стресс-тестирование Trixbox CE 2.8 на том же оборудовании, на котором ранее тестировал SipX.Но я должен сказать, что использование PHPAGI для IVR и Asterisk CLI для отладки сработало отлично и позволило мне разрабатывать IVR гораздо быстрее, чем любая другая компания.Сегодня я работаю над реализацией TTS и ASR и опубликую результаты стресс-теста, когда смогу.

Простой небольшой гибкий Asterisk AGI IVR, написанный на PHP.http://freshmeat.net/projects/phpivr

Для небольших и простых приложений я использую Asterisk::AGI в Perl.Также существуют расширения для Fast AGI.Для более крупных приложений, таких как серверная часть оператора VoIP, я использую что-то похожее на OrderlyCalls, написанное на Java (мой собственный код).OrderlyCalls отлично подходит для начала с движка Java fastagi и расширения его в соответствии с вашими потребностями.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top