Как определить что оператор разговаривает?
Игорь,
В случае с 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 (занят)
Можно через ARI получить список эндпоинтов (/enpoints) и посмотреть, у кого из них есть активные каналы.
Можно получить активные каналы (/channels) и посмотреть, какие эндпоинты с ними связаны.
Можно перебрать все устройства (/deviceStates/{deviceName}) и посмотреть их состояние.