organium
@organium

Настройка asterisk?

Здравствуйте. Хотелось бы попросить совета у людей, имеющих опыт работы с Asterisk. Каким образом вы делаете настройку диал плана удаленно? Т.е. код на языке программирования должен генерировать необходимые настройки, в зависимости от действий пользователя. Я вижу несколько вариантов:
  1. Настройка через команды по Ami. Плох вариант тем, что нужно ручками генерировать содержимое файла, к тому же для изменения контекста приходится переписывать весь файл.
  2. Настройка через AGI. Минус — скрипты должны располагаться локально. В моем случае серверов с астериском предполагается несколько и находятся удаленно, так что вариант отпадает.
  3. FastAGI. Тот же AGI, только расположенный на удаленной машине.


Кажется, третий вариант выглядит предпочтительней остальных. Но как же его реализуют? На каком языке предпочтительнее чтобы висел сервер. Веб интерфейс приложения написан на PHP. Есть специальная библиотека для работы с AGI, есть так же реализация FastAgi от того же автора — FastPAGI. Единственное, что меня пугает, так это сервер на PHP(в котором нет многопоточности), где, если взглянуть в код, с помощью форков создаются процессы, которые обрабатывают сценарии написанные на том же PHP. Так вот, будет ли это правильным решением? Не слишком ли большая будет нагрузка, скажем при наличии 100 или более активных линий. Подходит ли для данной задачи PHP?
  • Вопрос задан
  • 7491 просмотр
Пригласить эксперта
Ответы на вопрос 5
beho1der
@beho1der
Посоветую вам использовать Asterisk realtime и перенести меняющие части extensions.conf в mysql базу и соотвевенно уже напрямую sql запросами менять логику звоков! Если нужна помошь по настройке, пишите!
Ответ написан
foxmuldercp
@foxmuldercp
Системный администратор, программист, фотограф
Простите, не очень понял — у Вас что, dialplan меняется ежесекундно?
Обычно dialplan меняется только при смене/изменении sip провайдера, что бывает ну очень редко.
При чём тут сервер на PHP и многопоточность, и тем более, линии?
Ответ написан
zepps
@zepps
Спец по Asterisk и IP-телефонии
Наверное, знаете про директиву #include в файле extensions.conf, которая вкладывает содержимое другого файла в место, откуда она вызывается.

Есть её аналог, директива #exec, напр.: "#exec /etc/asterisk/extensions_dynamic.sh". Думаю, уже понятен принцип её действия, но на всякий — распишу. В момент парсинга диалплана, в момент прохождения этой директивы вызывается указанный скрипт, выводом которого предполагается обыкновенный текстовый диалплан.

Вы можете реализовать данный скрипт, который по расписанию или событию генерить необходимый диалплан, после чего делать asterisk -rx'dialplan reload'. Нагрузка на сервер, как понимаете, будет полностью аналогичной обыкновенному plain-диалплану.
Ответ написан
Комментировать
@PuzzleW
ну если у вас настройка dialplan в зависимости от действий пользователя, то наверное это какая-то веб-форма, тогда вам php-шный FastAGI вполне подойдет.
но если честно, то совершенно не ясно, ЧТО и ЗАЧЕМ вы собираетесь делать, если вы говорите, цитирую: «100 активных линий»
вы точно правильно придумали решение задачи? вы хотите постоянно менять 100 разный частей диалплана?
может все-таки, один кусок диалплана который, отвечает за обработку событий на всех нужных вам линиях?
уточните что вы меняете.

а если же вы просто иногда собираетесь с помощью php поменять 100 мест в dialplan'e — то не страшно, при условии что это не с огромной частотой будет происходить.
Ответ написан
AmdY
@AmdY
PHP и прочие вебштучки
Для php есть решения на php daemon, поищите на гитхабе. Реализация как демона позволит избавиться от проблем с производительностью.
Мой коллега реализовал всё на node.js, с которым был незнаком, кода не много, но ИМХО, лучше не распылять технологии.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы