Команда ChanSpy позволяет подслушивать разговор или подсказывать сотруднику, который совершает или принимает входящий вызов. Данный функционал будет полезен для работы в Call-центрах. ChanSpy позволяет быстро научить молодого сотрудника правильно вести деловые беседы.

ChanSpy позволяет прослушать любой вызов, по любому каналу Zapata, SIP, IAX.

Общий синтаксис команды:

Chanspy([][,<оptions>])

Chanspy([][|<оptions>]) - для Asterisk 1.4

В chanprefix подставляется SIP канал или агент, примеры рассмотрим ниже.

Доступные опции(options):

q: тихий режим, не анонсировать на канале свое присутствие звуковым сигналом, и т.д.

b: шпионить за каналами, которые имеют два и более абонента. Работает на каналах bridged

v( [-4..4] ): настройка начального уровня звука. (отрицательное значение делает звук тише)

g(grp): заставляет использовать группу. Читает ${SPYGROUP} и сканирует вызовы только из этой группы

r( [basename] ): запись сеанса в разговора в каталог аудиозаписей Asterisk. Имя файла указывать необязательно

w: режим шепота, вы слышите обоих участников, вас слышит только один (указывается в параметрах)

W: частный шепот, «шпион» не слышит разговор, но может “прошептать” информацию, тем самым помочь своему сотруднику

d: режим ручного переключения между прослушиванием: 4 — прослушивание, 5 — шепот, 6 — оба канала

o: позволяет прослушивать аудио с канала

Все остальные функции ChanSpy можно изучить после ввода команды «core show application ChanSpy» в CLI Asterisk:

*CLI > core show application ChanSpy

Во время подслушивания, можно выполнить следующие действия:

Набор: # циклически изменяет уровень звукового сигнала.

Набор: * останавливает контроль за одним абонентом и ищет другой подходящий канал для контроля.

Набор последовательности цифр, завершенный нажатием кнопки #, создает имя канала, которое будет добавлено к параметру (например, выполните Chanspy(Agent) и наберите 1234#, в процессе контроля, тогда вы перейдете на канал Agent/1234)

С теорией закончили, теперь перейдем к примерам.

Все настройки делаются в файле /etc/asterisk/extensions.conf — это подходит для «голого» Asterisk.

Если вам необходимо прослушивать конкретного пользователя (например 1001), то в настраиваемый контекст необходимо внести следующую строчку.

exten => 9991001,1,ChanSpy(SIP/1001,wqdv(-1))

Т.е. при наборе номера 9991001 мы подключимся к прослушиванию внутреннего номера 1001, ключи мы рассматривали выше. Набираемый номер 9991001 может быть любым.

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

exten => _999.,n,ChanSpy(SIP/${EXTEN:3},wqdv(-1))

такой план набора подойдет для трехзначного номерного плана АТС. Если вы используете 4-х или 5-ти значный номера, то строка будет выглядеть следующим образом:

exten => _999.,n,ChanSpy(SIP/${EXTEN:4},wqdv(-1)) - для 4-х значного номерного плана 

exten => _999.,n,ChanSpy(SIP/${EXTEN:5},wqdv(-1)) - для 5-ти значного номерного плана

Чтобы разрешить пользоваться функцией ChanSpy только c определенных номеров, необходимо прописать следующую строку:

exten => _999./_200X,n,ChanSpy(SIP/${EXTEN:4},wqdv(-1))

— в данном примере мы даем возможность пользоваться функционалом ChanSpy для номеров 2000-2009.

Так же мы можем перечислить конкретные номера, которым разрешено пользоваться функцией ChanSpy:

exten => _999./_200[123],n,ChanSpy(SIP/${EXTEN:4},wqdv(-1))

— в данном примере мы даем возможность пользоваться функционалом ChanSpy для номеров 2001,2002,2003.

Теперь напишем контекст, который позволяет подключаться к ChanSpy по паролю:

[context-chanspy]

exten => _999.,1,Authenticate(123456789)

exten => _999.,n,Answer

exten => _999.,n,NoCDR

exten => _999.,n,Wait(1)

exten => _999.,n,ChanSpy(SIP/${EXTEN:4},wqdv(-1))

exten => _999.,n,Hangup

Т.е. только после ввода пароля «123456789», будет доступен ChanSpy.

Теперь поговорим о FreePBX и Elastix.

Функция ChanSpy, по умолчанию, доступна при наборе номера 555, изменить номер или отключить ChanSpy можно в меню Feature Codes.

В файле /etc/asterisk/extensions_additional.conf штатный контекст выглядит следующим образом:

[app-chanspy]

include => app-chanspy-custom

exten => 555,1,Set(COS_DEST=chanspy)

exten => 555,n,Set(COS_TYPE=FC)

exten => 555,n,Macro(user-callerid,)

exten => 555,n,Answer

exten => 555,n,Wait(1)

exten => 555,n,ChanSpy()

exten => 555,n,Hangup

;--== end of [app-chanspy] ==--;

Если вы хотите изменить штатный контекст, то необходимо внести изменения в файл /etc/asterisk/extensions_override_freepbx.conf.

Например, для авторизации пользователей по паролю, можно прописать:

[app-chanspy]

exten => 555,1,Macro(user-callerid)

exten => 555,2,Authenticate(123456789)

exten => 555,3,Read(SPYNUM,agent-newlocation)

exten => 555,4,ChanSpy(SIP/${SPYNUM},wqv(-1))

;--== end of [app-chanspy] ==--;

Если вы хотите дополнить контекст ChanSpy, то необходимо внести изменения в файл /etc/asterisk/extensions_custom.conf и создать там контекст app-chanspy-custom.

На разные функции можно назначить разные коды, например:

[app-custom-chanspy]

;простое прослушивание 

exten => _556.,1,Macro(user-callerid,)

exten => _556.,n,Answer

exten => _556.,n,NoCDR

exten => _556.,n,Wait(1)

exten => _556.,n,ChanSpy(SIP/${EXTEN:3},qv(-1)

exten => _556.,n,Hangup

;шепот

exten => _557.,1,Macro(user-callerid,)

exten => _557.,n,Answer

exten => _557.,n,NoCDR

exten => _557.,n,Wait(1)

exten => _557.,n,ChanSpy(SIP/${EXTEN:3},wqv(-1)

exten => _557.,n,Hangup

;оба канала

exten => _558.,1,Macro(user-callerid,)

exten => _558.,n,Answer

exten => _558.,n,NoCDR

exten => _558.,n,Wait(1)

exten => _558.,n,ChanSpy(SIP/${EXTEN:3},qBv(-1)

exten => _558.,n,Hangup

;ручной выбор режимов

exten => _559.,1,Macro(user-callerid,)

exten => _559.,n,Answer

exten => _559.,n,NoCDR

exten => _559.,n,Wait(1)

exten => _559.,n,ChanSpy(SIP/${EXTEN:3},qdv(-1)

exten => _559.,n,Hangup