Только нужно так
exten => *55,n,ExecIF($["${SIPPEER(status):0:2}" = "OK"]?ChanSpy(SIP/${SPYNUM},d):ChanSpy(PJSIP/${SPYNUM},d))
eux ( 2022-02-03 20:50:15 +0400 )редактироватьЗдравствуйте!
Понадобилось "подслушивать" разговоры с определенного номера:
exten => *55,1,Authenticate(327)
exten => *55,n,Read(SPYNUM,agent-newlocation)
exten => *55,n,ChanSpy(SIP/${SPYNUM},d)
exten => *55,n,Hangup()
Приведенная выше конструкция "работает" только для номеров на "chan_sip".
Но.. к asterisk телефоны подключены не только используя chan_sip, но и pjsip. Если SIP/ поменять на PJSIP/, то все работает только для номеров pjsip. Не нашёд способа избавиться от указания типа канала. ChanSpy(Local/${SPYNUM},d) - не работает. ExtenSpy(${SPYNUM}) работает как ChanSpy без аргументов. Т.е. присоединяется к произвольному каналу, не связанному с номером в SPYNUM, и позволяет перебирать каналы по нажатию *.
Проверял на asterisk 13 и 16.
Я что-то недопонимаю? Как-то можно подсоединиться к каналу, связанному с определенным номером, не указывая типа канала?
Используйте конструкцию с проверкой наличия пира в chan_sip . Или что-то аналогичное для проверки наличия пира в памяти.
exten => *55,n,ExecIF($["${SIPPEER(status)}" = "OK"]?ChanSpy(SIP/${SPYNUM},d):ChanSpy(PJSIP/${SPYNUM},d))
Только нужно так
exten => *55,n,ExecIF($["${SIPPEER(status):0:2}" = "OK"]?ChanSpy(SIP/${SPYNUM},d):ChanSpy(PJSIP/${SPYNUM},d))
eux ( 2022-02-03 20:50:15 +0400 )редактироватьЗадан: 2022-01-29 21:19:24 +0400
Просмотрен: 405 раз
Обновлен: Jan 30 '22
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.