Asterisk настройка ChanSpy

  Функция ChanSpy (шпион) в Elastix (FreePBX) по умолчанию доступна на номере 555, изменить или отключить её можно в меню Feature Codes (рис.1 и рис.2). С помощью данной функции можно прослушивать текущие разговоры, для этого набираем номер 555 и система подключиться к выбранному случайным образом активному каналу. При этом мы можем воспользоваться следующими доп. функциями:

# — увеличение звука по кругу;

* — переход к следующему активному каналу, если такой имеется.

ChanSpy Asterisk
Рис.1
ChanSpy FreePBX
Рис.2

Для большинства владельцев АТС такого функционала будет вполне достаточно, кто-то и вовсе этим не пользуется. Однако далеко не все знают о всех возможностях этой функции, и в этой статье мы не просто опишем их, но и подробно рассмотрим варианты настроек с примерами.

Самый популярный вопрос от тех, кто знает об этой функции — как настроить шепот в Asterisk? Допустим у вас есть менеджер-стажер, нуждающийся в контроле. Вы хотите средствами АТС организовать подключение к его разговору с потенциальным клиентом более опытного сотрудника, который сможет слышать переговоры, подсказывать стажеру, но при этом клиент подсказки слышать не будет. Это, собственно, и есть шепот. Чтобы реализовать такой функционал, необходимо внести коррективы в конфигурационный файл extension_custom.conf. Редактировать этот файл можно из командной строки (версия asterisk должна быть выше 1.6):

$ nano /etc/asterisk/extension_custom.conf

или в web интерфейсе Elastix, раздел tools:

Elastix tools
Рис.3

Предположим, что номер у стажера 101, добавим в файл такую строку:

exten => 555101,1,ChanSpy(SIP/101,wqv(-1)

после этого сохраняем файл и делаем reload настроек.

extensions_custom.conf
Рис.4

Теперь топ-менеджер может набрать номер 555101 и подключиться к линии 101 в режиме “нашептывания”. Подключение происходит принудительно, т.е. даже если номер 101 не разговаривает, мы все равно подключаемся и слушаем “тишину”, пока не появится активный звонок. Номер 555101 может быть любым, как вы понимаете, т.е. строка:

exten => *7,1,ChanSpy(SIP/101,wqv(-1)

будет работать так же, только набирать нужно будет код *7, тут уж как вашей душе будет угодно! Таких строк можно написать несколько, допустим, у вас 3 стажера с номерами 101,102 и 103, тогда добавим такие строки:

exten => 555101,1,ChanSpy(SIP/101,wqv(-1)

exten => 555102,1,ChanSpy(SIP/102,wqv(-1)

exten => 555102,1,ChanSpy(SIP/103,wqv(-1)

Как вы заметили, мы используем ключи wqv(-1), они означают следующее:

w — режим шепота, вы слышите обоих участников, вас слышит только 101;

q — тихий режим, с этим ключом подключение не анонсируется звуковым сигналом;

v(+/-n) — громкость шепота, (-1) означает тише на один тон (диапазон от 4 до -4);

Есть и другие ключи, их можно менять и комбинировать, например:

W — частный шепот, шпион не слышит разговор, но может “прошептать” какую-то важную фразу (например офис менеджер директору);

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

b — возможность прослушивать каналы, которые имеют двух и более абонентов, соединенных между собой (аудио-конференция);

B — прослушивание и участие в обоих каналах;

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

r — позволяет записывать весь разговор.

Все остальные функции можно изучить после вывода команды:

*CLI > core show application ChanSpy

А как быть, спросите вы, если операторов в вашем call центре 50 или 200, для каждого прописывать строку довольно хлопотно, поэтому мы напишем свой контекст. Итак, давайте сделаем так, чтобы можно было набрать код + номер линии, которую хотим слушать. В файле extensions_custom.conf создадим строку include => app-custom-chanspy и в конце запишем:

[app-custom-chanspy]

exten => _555.,1,Macro(user-callerid,) # определим номер и имя

exten => _555.,n,Answer # ответ

exten => _555.,n,NoCDR # без записи в CDR

exten => _555.,n,Wait(1) # задержка 1 секунда

exten => _555.,n,ChanSpy(SIP/${EXTEN:3},qdv(-1) # описание функции

exten => _555.,n,Hangup # освобождаем линию

 

Сохраняемся и делаем reload. Теперь после набора 555 и любого номера, например 101 (т.е. набираем 555101), система подключит нас к линии 101 и, благодаря ключу d, вы сможете переключаться между режимами цифрами 4,5,6.

Если необходимо мониторить только определенные линии, например номер 200, тогда диалплан будет выглядеть так:

 

[app-custom-chanspy]

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

exten => _555.,n,Answer

exten => _555.,n,NoCDR

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

exten => _555.,n,ChanSpy(SIP/200,qdv(-1)

exten => _555.,n,Hangup

 

Таким образом, система позволит подключиться только к номеру 200, набрав 555200, остальные номера будут нам недоступны.

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

 

[app-custom-chanspy]

exten => _555./_30X,1,Macro(user-callerid,)

exten => _555./_30X,n,Answer

exten => _555./_30X,n,NoCDR

exten => _555./_30X,n,Wait(1)

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

exten => _555./_30X,n,Hangup

 

в таком случае этот диалплан будет доступен только номерам 300-309, остальным же при попытке набора 555+номер будет проиграно сообщение о невозможности набора номера!

Аналогично можно сделать еще варианты:

 

exten => _555./301,1,Macro(user-callerid,) — разрешено подключаться с номера 301

exten => _555./_[23]10,1,Macro(user-callerid,) — разрешено номерам 210 и 310

exten => _555./_[3456789]XX,1,Macro(user-callerid,) — разрешено номерам 300-999

 

Для безопасности и предупреждения несанкционированных “шпионов” можно установить пароль на пользование функцией ChanSpy:

 

[app-custom-chanspy]

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

exten => _555.,n,Authenticate(847596)

exten => _555.,n,Answer

exten => _555.,n,NoCDR

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

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

exten => _555.,n,Hangup

 

теперь, чтобы воспользоваться функцией прослушивания, необходимо будет ввести пароль 847596. При этом необходимо помнить о том, что есть стандартный код 555, его необходимо отключить в настройках Feature Codes, либо добавить отдельно защиту на него в extension_custom.conf:

;Password Protect Channel Spy — защита паролем

exten => 555,1,Authenticate(12121,5)

exten => 555,n,Goto(app-chanspy,${EXTEN},1)

exten => 555,n,Hangup

 

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

 

[app-custom-chanspy]

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

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

exten => _550.,n,Answer

exten => _550.,n,NoCDR

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

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

exten => _550.,n,Hangup

 

 

; шепот

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

exten => _551.,n,Answer

exten => _551.,n,NoCDR

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

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

exten => _551.,n,Hangup

 

;оба канала

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

exten => _552.,n,Answer

exten => _552.,n,NoCDR

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

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

exten => _552.,n,Hangup

 

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

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

exten => _553.,n,Answer

exten => _553.,n,NoCDR

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

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

exten => _553.,n,Hangup

 

Если вам все же не хватает безопасности для настроенной функции, можно настроить уведомления на e-mail событий пользования chanspy. Каждый раз, когда кто-то набирает волшебный номер, вам на почту приходит уведомление кто звонил и когда. Таким образом, вы сможете мониторить использование данной функции. В составленный ранее диалплан необходимо добавить такую строку:

exten => 555,n,System(/bin/echo «Номер: ${CALLERID(num)}\nВремя вызова: ${STRFTIME(${EPOCH},,%H:%M:%S)}» | mail -s «Звонок на ChanSpy» aster@yourmail.com)

На примере это будет выглядеть так:

[app-custom-chanspy]

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

exten => _555.,n,Authenticate(847596)

exten => _555.,n,Answer

exten => _555.,n,NoCDR

exten => _555.,n,System(/bin/echo «Номер: ${CALLERID(num)}\nВремя вызова: ${STRFTIME(${EPOCH},,%H:%M:%S)}» | mail -s «Звонок на ChanSpy» aster@yourmail.com)

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

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

exten => _555.,n,Hangup

 

Ну вот, собственно, и все! Удачи!

 

8 thoughts on “Asterisk настройка ChanSpy”

  1. Спасибо! Статья супер, давно искал подробную статью про chanspy. Спасибо большое!

  2. Спасибо за статью!
    Единственное чего я не понимаю, так это как пользоваться параметром «g» . Если не сложно, приведите пример.

    1. Владимир, спасибо за отзыв. Использование опции g позволяет нам разбить extensions на группы. Для этого нужно каждому присвоить значение ${SPYGROUP}. Например операторы — группа 1, технический отдел — группа 2, руководители — группа — 3 и т.д. Таким образом мы изолируем группы от сканирования и прослушивания. Это актуально для крупных call центров.

      1. Добрый день, подскажите пожалуйста как необходимо присвоить ${SPYGROUP} для определенных групп? Т.е у меня есть операторы группы 1 и группы 2, в эти группы необходимо назначить определенные extensions. Спасибо Вам заранее!

        1. Как-то так:

          ;Dialing either 8810, 8820 and 8830 will all match this SIP call
          exten => 1000,1,Set(SPYGROUP=10:20:30)
          exten => 1000,2,Dial(SIP/1000@somewhere)
          exten => _88XX,1,Chanspy(|g(${EXTEN:2}))

  3. g — продолжить выполнение диалплана на следующем приоритете в текущем расширении, если канал назначения вешает трубку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *