IgorPI
@IgorPI

Как определить что оператор разговаривает?

Приветствую коллеги!

Передо мной стоит задача и на первый взгляд очень простая.
Нужно определить факт занятости оператора.

Где мне эта информация нужна?
Информация о состоянии мне нужна в неком механизме автоматического обзвона, который написан на PHP
При переборе списка операторов, я однозначно мог сказать, вот этот оператор сейчас занят.

Мнения моих коллег разделилось при выборе способа.
Одни говорят, используй AMI
Другие просто определяй в браузере (привяжись к событиям технологии WebRTC)

В случае с AMI, если я это буду делать в PHP мой скрипт захлебнётся от потока информации, так как асинхронности не будет и мне придётся по очереди обрабатывать каждую строчку потока информации.

Во втором случае, вроде всё хорошо, но до того момента пока не откроется вторая вкладка, потому что пи открытии вкладки я планировал освежать состояние статуса.

Подкиньте плиз идейку.
  • Вопрос задан
  • 180 просмотров
Решения вопроса 1
@Drill
Игорь,
В случае с AMI, если я это буду делать в PHP мой скрипт захлебнётся от потока информации

В случае с AMI при аутентификации надо указать Events: off, и никто тогда не захлебнется, астериск вообще будет нем, как рыба...
Action: Login
ActionID: 1
Username: ВАШ_ЛОГИН
Secret: ВАШ_ПАРОЛЬ
Events: off


а затем достаточно послать одну команду :
Action: Command
Command: core show hints


В ответ получите пару десятков строк (или сколько там у вас пиров) такого вида :
240@ext-local           : SIP/240,CustomPresen  State:Idle            Watchers  0
241@ext-local           : SIP/241,CustomPresen  State:InUse           Watchers  0
242@ext-local           : SIP/242,CustomPresen  State:Unavailable     Watchers  0


Осталось распарсить два поля:
1. в первом номер пира (оператора) - например 241
2. в третьем поле его состояние - InUse (занят)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Можно через ARI получить список эндпоинтов (/enpoints) и посмотреть, у кого из них есть активные каналы.
Можно получить активные каналы (/channels) и посмотреть, какие эндпоинты с ними связаны.
Можно перебрать все устройства (/deviceStates/{deviceName}) и посмотреть их состояние.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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