В Asterisk интерфейсы ARI предоставляют набор примитивов, позволяющих реализовывать собственные приложения, задавая собственную гибкую логику.

Например мы можем сделать сложные «конференции», в которых выборочно ограничивать слышимость между участниками или добавляя индивидуальные оповещения её участникам. Сделать это можно используя ARI endpoint /snoop

Однако, как и у ChanSpy (а обе функции используют одни и те же функции внутри asterisk) у snoop есть фундаментальное ограничение — передаваемое из snoop канала аудио добавляется к аудио, проходящему в выбранном направлении. Если в выбранном направлении в выбранном канале нет звука — переданное из snoop канала аудио будет проигнорировано.

В нашем случае приложение, к каналу которого происходит подключение, может генерировать звук в  с перерывами, поэтому для непрерывной генерации звука пришлось добавить канал, передающий тишину используя специальны moh класс.

PS. Как бонус — исходный код простого приложения, демонстрирующего работу snoop.

Оригинал: https://blog.iqtek.ru/?p=306

автор igorg