Как правильно поймать событие звонка в Asterisk?

Здравствуйте.

Есть Asterisk. Есть пользователи. Задача, написать декстопное приложение, которое будет показывать алерт при входящем и исходящем вызове пользователю. При этом мне надо знать телефон\имя пользователя кому звонят\кто звонит.

Собственно как это правильно делать?
1. Писать клиента для SIP (при этом будет ли это работать, если пользователь будет звонить через физический телефон, т.е. будет два подключения одного пользователя)? Вроде входящий должен буду я поймать, а вот исходящий?
2. Писать клиента к Asterisk Manager Interface, который будет подписываться на какие то события и я буду ловить инфу о том, что пользователь звонит\ему звонят.
3. Еще как то.

Спасибо, буду признателен за инфу и доки.
  • Вопрос задан
  • 5756 просмотров
Решения вопроса 1
@spisarenko
Перфекционист-прокрастинатор
Думаю, что AMI - оптимальный вариант. Впоследствии, при желании можно будет наращивать функционал приложения.
Быстрое гугление по теме дало такой вариант:
https://asternet.codeplex.com/releases/view/134917
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
интерфейсы AJAM2 или AMI - самый простой способ получить все что нужно

можно и без обработки event-ов через AMI получить
спросить (Action: Command)
core show channels
найти в выхлопе нужный канал внутреннего номера
затем
core show channel имя_канала
в выхлопе будет куча полей, в том числе и "Connected Line ID"
дольше отрабатывает, но вполне работоспособный способ

из велосипедов: XMPP, отправка специально формируемого UDP или TCP пакета на определенный адрес и порт
Ответ написан
falsebyte
@falsebyte
Зачем клиент, настройте jabber и пускай asterisk сам отправляет уведомления с помощью jabbersend
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы