Страница 1 из 3
Asterisk как облачная ATC
Добавлено: 30 июн 2014, 16:55
vladqa
Здравствуйте!
В нашей компании встала задача предоставить нашим клиентам услугу "Облачной АТС" (могу ошибаться в терминологии, поправьте, пожалуйста).
Суть в следующем: клиенты - мелкие организации, которым нужно предоставить возможность подключить свои телефоны к нашей АТС, указать для них короткие внутренние номера (101, 102, 103..), дать из возможность звонить в пределах своей сети + звонки наружу. То есть, внутренние добавочные номера должны быть изолированы внутри группы телефонных аппаратов клиента.
Ну и биллинг прикрутить ко всему этому тоже будет нужно
Насколько я понимаю, что описывать логику по "разделению" различных клиентов между собой нужно самостоятельно с использованием AMI/AGI, а на стандартные возможности диалплана asterisk надо вообще забить.
В качестве ПО был выбран astrerisk + VOIP-фреймворк adhearsion.
Само-собой, вопросов в духе "а как это все сделать?" я задавать не буду.
Спрошу только лишь у знатоков и тех, кто сталкивался с подобной задачей: правильные ли выбраны инструменты и возможно ли сделать подобное и использованием adhearsion? Или есть какие-либо другие более удобные библиотеки?
Re: Asterisk как облачная ATC
Добавлено: 30 июн 2014, 22:48
gosha
http://www.voip-info.org/wiki/view/Asterisk+AGI
для рубей есть еще пара либ.
Можете сэкономить на программистах и купить готовое на перле, по ссылке ниже:)
Re: Asterisk как облачная ATC
Добавлено: 01 июл 2014, 07:28
virus_net
Мы в итоге
писали с нуля сами, на PHP.
vladqa писал(а):описывать логику по "разделению" различных клиентов между собой нужно самостоятельно с использованием AMI/AGI, а на стандартные возможности диалплана asterisk надо вообще забить.
Этой мысли вообще не понял.
- AMI - Asterisk manager API
AGI - Asterisk Gateway Interface
И то и то, по сути, командный интерфейс. "Разделить" что-то можно как раз в диалплане.
Re: Asterisk как облачная ATC
Добавлено: 01 июл 2014, 14:04
vladqa
Этой мысли вообще не понял.
Я имел в виду, что от статического диалплана на .conf-файлах придется отказаться и реализовывать всю маршрутизацию и функции динамически в своем приложении
Re: Asterisk как облачная ATC
Добавлено: 01 июл 2014, 20:28
virus_net
вот теперь мысль понятна.
vladqa писал(а): от статического диалплана на .conf-файлах придется отказаться
ну не знаю почему озвучивается как "придется", т.к. это выбор каждого и смотря как "построить". если при изменениях перезаписывать не все и вся, а только то что меняют, то вполне жизнеспособная схема.
а если динамика, то тогда уж =>
Asterisk RealTime Extensions, а не ami/agi
Re: Asterisk как облачная ATC
Добавлено: 02 июл 2014, 10:43
Samael28
А в чем преимущества realtime перед agi?
Re: Asterisk как облачная ATC
Добавлено: 02 июл 2014, 11:13
Aven
А в чем преимущества окна перед дверью? Это совершенно разные вещи и сравнить их нельзя.
Realtime служит для хранения конфигов в БД.
AGI - для интеграции с внешними программами (в основном скриптами).
AMI - для управления Asterisk по сети.
AGI и AMI не пригодны для хранения информации о пользователях.
Re: Asterisk как облачная ATC
Добавлено: 02 июл 2014, 15:04
Samael28
Оно понятно. Просто вопрос именно в динамичном диалплане. Динамично можно и базу менять внешними запросами. Т.е. аналогия, как с FreePBX. Только конфиги - в базе.
Re: Asterisk как облачная ATC
Добавлено: 03 июл 2014, 07:57
virus_net
Раз вопрос в динамичном dialplan, то для этого в * и есть RealTime.
Re: Asterisk как облачная ATC
Добавлено: 03 июл 2014, 18:26
vladqa
Проанализировав все, что смог найти по астериску, увидел два способа решения задачи:
1. Использовать Asterisk Realtime для динамического создания диалплана. Каждому клиенту выделяется свой контекст, для которого генерируются строки диалплана и пишутся в БД.
Минусы: Сложно генерировать более-менее сложные диалпланы, сложно вносить изменения в сгенерированные диалпланы (например, пользователь изменил тип подключения одного телефона с sip на iax2)
2. Использовать AGI/AMI и обойтись одним контекстом на всех вида:
exten => _X.,1,AGI(/opt/pagi/some-app)
Плюсы: можно динамически в скрипте читать настройки/внутренние номера пользователя из БД и на основании этого выполнять команды через AGI и направлять вызов на другой телефон/ставить в очередь итп.
Минусы: если с AGI все понятно, то для чего именно нужен AMI, я до сих пор не могу понять. В чем ключевая разница между этими интерфейсами и для каких задач надо использовать один, а для каких другой? В AMI можно ловить все события на всех каналах.. но получается, что в AMI нужно много чего реализовывать "с нуля"?
Заранее извиняюсь за этот глупый вопрос, но для меня пока телефония - это некий закрытый клуб )