Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

AMI принудительно разрывает соединение [закрыт]

0

AMI принудительно разрывает соединение(TCP/IP Connection) при выполнении команд(Action).
К примеру у меня (* 1.6-11) гарантированный разрыв связи происходит во время выполнения команды:

Action: Command
Command: database show

Это фитча или баг?
Может быть есть какие-то настройки Asterisk которые позволяют убрать этот фитча-баг?


РЕШЕНО

Это очередной 19603 баг Asterisk.
Баг ASTERISK-19603 звучит так: Asterisk AMI truncates long responses over medium latency connections.

Решение: пересобрать Asterisk накотив патч ASTERISK-1948: [patch] Allow Manager API Command to return big amount of output data +++

PS: Честно говоря этот патч не решает проблему, а является workaround т.к. очевидно что ошибка архитектурного плана. Это ошибка синхронного блокирующего вывода нарушающая асинхронность ManagerEvent событий. Правильным решением было бы реализовать ManagerAction-Command как реализован ManagerAction-BDGet.

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

спросил 2014-09-03 14:54:59 +0400

CallCenterCoder Gravatar CallCenterCoder
1 5 1 4

обновил 2014-09-04 11:33:00 +0400

Comments

ошибка архитектурного плана в разработке которая использует AMI подобным образом... как правило в грамотных решениях для обменна данными используют Restful API сервер и клиент - или, в крайнем случае - прямое соединение с базой данных через VPN... гонять кучу данных из внутренней БД Asterisk через AMI - думаю не самое лучшее решение и неудивительно что разработчики Астера такое не предусмотрели... тем более- "database show" - довольно бессмысленная команда...

octopas ( 2014-09-05 00:02:28 +0400 )редактировать

В коем веке несколько килобайт это куча данных? Каменный век что ли? Притом что AMI может легко выплевывать десятки мегабайт эвентов под высокой нагрузкой. Да и Restful API до *11 нет, ну а c прямым доступом по VPN можно съесть большую админскую свинью и батхёрт BerkleyBD x SQLLite. В тоже время "database show" весьма осмысленно использовать, чтобы продемонстрировать данный баг, который может вылезти и в других командах только внезапно.

CallCenterCoder ( 2014-09-05 14:25:57 +0400 )редактировать

а свою реализацию Restful сервера сделать - никак? на любом выбранном языке программирования и нормальном MVC фреймворке... зачем использовать Asterisk для передачи данных? внутренняя БД Астериска - для экспериментаторов, она изначально ИМХО не предназначена чего-то серъезного... берем Postgresql, MySql и реализуем restful контроллеры... и забываем про встроенную в Астер БД, потому что ничего серъезного опять-же реализовать на ее основе не получится (ну нет Berkley DB нормальных индексов, foreign key и тп, не говорю уже о хранимых процедурах, оконных функциях и других фичах - которые неизвестно когда понадобятся - на каком этапе развития системы). если речь идет о PHP - север - ZF2+Doctrine2+ZFCUser (реализуем AbstractRestfulController), клиент - ZF2+Guzzle HTTP. почти уверен что на любых других языках программирования есть соответсвующие реализации и библиотеки...

octopas ( 2014-09-06 21:15:26 +0400 )редактировать

Теоретически можно сделать не только Restful, но и космический корабль как Энтерпрайз NX-01. Вопрос зачем?? Restfull? Обычно для задач которые решают всяческие типа CTI-API как AsteriskAMI больше не нужно чем получения состава устройств, юзеров и т.п. и манипулирование этим. Для этого AsterBD вполне самодостаточна и вполне достаточно Application_Database. Зачем городить ещё что-то?

И вообще по мне так логичнее было бы использовать стандарт OSI и ECMA типа CSTA или TSAPI, а не выдумывать велосипеды типа AMI. Как и все птичие языки диалпланов заменить на созданный международным консорциумом W3C стандарт VXML, CCXML.

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

CallCenterCoder ( 2014-09-08 15:16:53 +0400 )редактировать

Будьте первым, кто ответит на этот вопрос!

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2014-09-03 14:54:59 +0400

Просмотрен: 475 раз

Обновлен: Sep 04 '14

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.