В Asterisk интерфейсы ARI предоставляют набор примитивов, позволяющих реализовывать собственные приложения, задавая собственную гибкую логику.
Например мы можем сделать сложные «конференции», в которых выборочно ограничивать слышимость между участниками или добавляя индивидуальные оповещения её участникам. Сделать это можно используя ARI endpoint /snoop.
Однако, как и у ChanSpy (а обе функции используют одни и те же функции внутри asterisk) у snoop есть фундаментальное ограничение — передаваемое из snoop канала аудио добавляется к аудио, проходящему в выбранном направлении. Если в выбранном направлении в выбранном канале нет звука — переданное из snoop канала аудио будет проигнорировано.
В нашем случае приложение, к каналу которого происходит подключение, может генерировать звук в с перерывами, поэтому для непрерывной генерации звука пришлось добавить канал, передающий тишину используя специальны moh класс.
PS. Как бонус — исходный код простого приложения, демонстрирующего работу snoop.