Oktell Antirobot
Oktell Antirobot — анализатор голосовых ответов мобильных операторов.
Содержание
Введение
Зачастую, если абонент недоступен в трубке при звонке можно услышать такие фразы как
- "Телефон абонента выключен или находится вне зоны действия сети"
- "В настоящее время абонент не может ответить на ваш звонок. Оставьте сообщение после сигнала"
- "Абонент временно недоступен. Попробуйте позвонить позднее"
Эти фразы относительно системы Antirobot называются Эталонами.
Oktell Antirobot предназначен для того, чтобы правильно распознавать такие ответы и разрывать соединение при попадании на голосовую почту. Особенно это актуально для компаний, которые используют исходящие задачи.
Antirobot регистрируется между установленной в офисе системой телефонии и провайдером связи и работает за счёт реализованного в Oktell метода сравнения голосовых данных с эталонными файлами операторских ответов. В момент, когда звонок call-центра попадает на автоответчик, программа разрывает соединение и направляет в call-центр ответ о занятости или недоступности абонента.
Анализ голосовых сообщений от провайдера и сравнение их с эталонами - ресурсозатратная задача. Затраты сильно зависят от количества совершаемых звонков и количества эталонов в системе.
ВНИМАНИЕ: Рекомендуется устанавливать Antirobot и Oktell на разные компьютеры.
Требования к серверу Antirobot:
- Процессор с процессором Intel Core i7.
- Оперативная память не менее 4 Гб. Рекомендуется 8 Гб и больше.
Требования к операционной системе:
- Протестировано на операционных системах: Windows xp, Windows 7.
- Для работы требуется Framework 4.0.
В данной статье рассказывается об установке и настройке Oktell Antirobot. Для написания данной статьи использовались следующие файлы.
В данной статье "Oktell" установлен на сервере с ip-адресом "192.168.0.81" , "Oktell Antirobot" установлен на сервере с ip-адресом "192.168.0.82".
ВНИМАНИЕ: Если вы хотите разместить Oktell Antirobot на той же рабочей станции, где установлен Oktell, то вам следует поменять порты в конфигурационном файле.
Установка и обновление Oktell Antirobot
1. Установка системы на сервере Antirobot. Запустите AntirobotSetup.msi. Следуйте инструкции.
1. 2. 3.
4. 5.
2. Обновление системы. Откройте "Управление службами" (Мой компьютер "правой кнопкой" -> Управление -> Службы и приложения -> Службы). Остановите службу Oktell Antirobot Service.
3. Распакуйте архив с обновлением. Например, для написания статьи использовалось обновление "antirobot 1.2.6.0 (01.10.13).zip". Скопируйте все файлы в корень папки Antirobot, как показано на рисунке.
4. Откройте "Управление службами", как в пункте 2. Запустите службу Oktell Antirobot Service.
Ваша система установлена и обновлена до последней версии. Можете переходит к следующему шагу - настройке системы.
ВНИМАНИЕ: Oktell Antirobot использует порт 5060 (udp). Убедитесь, что этот порт не занимается другим процессом.
Наберите в командной строке:
netstat -anop udp
По PID процесса в диспетчере задач найдите наименование процесса. Если порт занимается другим процессом, завершите его и перезагрузите службу Oktell Antirobot.
Настройка системы
1. Зайдите в панель управления Antirobot, для этого кликните на ярлык "AntiRobot Admin" на вашем рабочем столе. Или наберите в браузере "http://localhost:8888/".
Наберите пароль "123". Нажмите Войти.
2. Введите регистрационные данные. (Если у вас их нет, обратитесь к менеджерам Oktell). Нажмите "Активировать"
3. Нажмите "Добавить шлюз". Введите следующие данные:
- Название: любое, будет отображаться в списке Шлюзы. В примере, Сипнет
- Тип регистрации: выберите нужный тип регистрации
ВНИМАНИЕ: В связке Oktell с Antirobot рекомендуется использовать тип "С регистрацией" для облегчения маршрутизации SIP-сообщений.
- Домен: домен провайдера. В примере, sipnet.ru
- Outbound proxy: по умолчанию, совпадает с доменом. В примере, sipnet.ru
Нажмите "Сохранить".
4. Так как вы не настроили Oktell, вы увидите следующую схему. На ней показано, что Antirobot не связан с Oktell (регистрация не завершена).
5. Перейдите на сервер Oktell. Необходимо настроить Oktell для работы с Antirobot. Зайдите в Oktell -> раздел "Администрирование" -> модуль "Карта сети". Зайдите в настройки шлюза, через линии которого работает исходящая задача. Поменяйте "IP адрес SIP-Proxy сервера" на ip-адрес сервера Antirobot.
6. Нажмите ОК. Перейдите на вкладку "Сохранение". Нажмите "Проверить" -> "Сохранить карту" -> "Перезагрузить".
7. После перезагрузки в панели управления Antirobot будет показано, что регистрация успешно завершена .
Сохранение и добавление эталонов в систему
Эталон - голосовое сообщение получаемое от провайдера. В процессе своей работы Oktell Antirobot записывает сообщение от провайдера и сравнивает его с эталоном. Если сходство файлов высоко, то Oktell Antirobot распознает это как соответствующий сигнал ("Занято" или "Недоступен"), отсылает сигнал серверу Oktell и разрывает связь.
1. Чтобы записать голосовое сообщение от провайдера воспользуйтесь программой-сниффером Wireshark. Запустите программу и откройте окно выбора интерфейса.
2. Выберите необходимый сетевой интерфейс. Распознать сетевой интерфейс поможет столбец Packets. Если количество захваченных пакетов будет увеличиваться, значит через этот интерфейс идет сетевой трафик. Нажмите Options.
3. В окне фильтра захвата (Capture Filter) наберите: udp. Далее нажмите "Start".
4. Позвоните через Oktell на любой телефон. Для того, чтобы записать голосовое сообщение от провайдера, смоделируйте такую ситуацию, например, отключите ваш телефон и позвоните на него. Подождите пару циклов голосового сообщения. Нажмите "Стоп".
5. Найдите запись разговора. Выберите в меню Telephony -> RTP -> Show All Streams. Выберите необходимую запись разговора. Отбирать следует только те записи у которых столбец "Src addr" совпадает с ip-адресом сервера Antirobot, а "Dst addr" совпадает с ip-адресом сервера Oktell. Нажмите Analyze.
6. В открывшемся окне, вы можете прослушать запись разговора нажав на Player -> Decode -> установить галочку на потоке -> нажать Play. Если эта запись не содержит голосового сообщения от провайдера, вернитесь на 5 пункт.
Сохраните запись, нажав на "Save payload...". Укажите следующие параметры:
- Name: имя файла. В примере, "raw-format".
- Save in folder: выберите место, куда сохранить файл. В примере, Desktop.
- Format: .raw
- Channels: forward.
Нажмите ОК.
7. Сохраните ваш raw-файл в wav-формат. Воспользуйтесь программой Audacity. Запустите программу нажмите "Импортировать"-> "Звуковой файл без заголовка Raw".
Выберите следующие параметры:
- Кодирование: кодек, в котором была произведена запись в wireshark (поле Payload) в пункте 5. В примере, A-Law.
- Каналов: 1 канал (моно).
- Частота сэмплирования: 8000 Гц.
Нажмите "Импортировать".
Выберите нужный файл. В примере, созданный ранее "raw-format".
8. Прослушайте запись разговора. Выберите корректное устройство воспроизведения. Если воспроизведение некорректно перейдите в пункт 7.
9. Экспортируйте файл в нужном формате. Oktell Antirobot принимает файлы в формате WAV (8000 кГц, 16 бит, Моно). Нажмите Файл->Экспортировать.
Выберите место, куда вы хотите сохранить файл. Напишите имя файла, выберите тип файла: WAV (Microsoft) signed 16 bit PCM. Нажмите "Сохранить". В следующем окне нажмите ОК.
Пример записанного файла: Файл:Ростелеком недоступен.zip
10. Зайдите в панель администрирования Oktell. Перейдите на вкладку "Эталоны". Нажмите "Добавить эталон".
Выберите следующие параметры:
- "Название": в примере, "Ростелеком - недоступен".
- "Тип ответа": ответ, соответствующий данному голосовому сообщению. В примере, "Недоступен (вне действия сети, голосовая почта)"
- "Расположение файла"
11. Для большей вероятности распознавания добавьте несколько однотипных голосовых сообщений.
ВНИМАНИЕ! Количество эталонов влияет на нагрузку системы.
Конфигурационный файл
Каталог с Oktell Antirobot, по умолчанию, располагается по пути "C:\Program Files (x86)\oktell\Antirobot". Конфигурационный файл "antirobot.json.cfg" находится в корне папки, открывается с помощью блокнота (рекомендуется использовать notepad++).
Параметры конфигурационного файла:
Раздел "log" - настройки логирования
"max_storing_days" - длительность хранения лог-журналов, по умолчанию, 4
"common_enabled" - общее логирование системы, по умолчанию, 1
"media_enabled" - логирование медиа-трафика, по умолчанию, 0
"web_enabled" - логирование web-интерфейса, по умолчанию, 0
Раздел "sip" - настройки sip-протокола.
"local_port" - локальный sip-порт. Есть возможность добавить несколько портов, для этого скопируйте строку и укажите другой sip-порт. Также может использоваться для обеспечения работы antirobot и oktell на одном сервере. По умолчанию, 5060
"call_session_lifetime_seconds" - максимальная продолжительность любого разговора в секундах, по умолчанию, 7200
"keep_alive_interval_seconds" - интервал отправки сообщений keep-alive в секундах, по умолчанию, 30
"min_udp_port" и "max_udp_port" - интервал udp портов для передачи звуковых rtp пакетов. Если antirobot и oktell находятся на одном сервере, то порты не должны пересекаться с портами, определенными в oktell server. , по умолчанию 2000 и 12000 соответственно
Раздел "web" - настройки web-интерфейса
"listener_port" - порт web-сервера. По умолчанию, 8888
"session_expire_seconds" - максимальное время продолжительности сессии в секундах. По умолчанию, 3600
Раздел "analysis" - настройка анализа голосовых сообщений
"disabled" - деактивирует режим анализа голосовых сообщение, по умолчанию, 0
"response_time_milliseconds" - интервал времени для принятия решения, в миллисекундах. По умолчанию, 5000
"frame_length_milliseconds" - длина временного окна, в миллисекундах. По умолчанию, 20. ВНИМАНИЕ: данную настройку менять не рекомендуется.
"bands_count" - количество полос частотного спектра окна. По умолчанию, 20. ВНИМАНИЕ: данную настройку менять не рекомендуется.
"criterion" - порог принятия решения (диапазон: 0 - 100). По умолчанию, 50.
- При уменьшении коэффициента, вероятность срабатывания системы возрастает (увеличится количество распознанных сообщений). Также увеличивается вероятность ошибки (увеличится количество неправильно распознанных сообщений).
"save_temp_files" - сохранение временных файлов, по умолчанию, 0
Метод настройки
1. В конфигурационном файле поставьте ключу save_temp_files значение "1". Перезагрузите службу antirobot.
2. Пронаблюдайте за состоянием системы. Если голосовое сообщение от провайдера не распознано, найдите записанный файл в папке \Antirobot\temp, и включите его в список эталонов.
ВНИМАНИЕ! Количество эталонов влияет на нагрузку системы.
Подключение к базе данных SQLite
В процессе своей работы Oktell Antirobot использует СУБД SQLite. Файл базы данных antirobot.sqlite.db располагается в корневом каталоге Oktell Antirobot.
Для того, чтобы посмотреть содержимое базы данных рекомендуется использовать, например, SQLiteBrowser.
Перечень таблиц:
- stats : статистика работы
- settings: настройки
- gateways: шлюзы
- etalons: список эталонов
- rejected: список отклоненных (распознанных) вызовов
Прилинковать SQLite к MSSQL поможет следующая инструкция.