Поддерживаемые версии АТС Asterisk
версия приложения | необходимые модули asterisk/ модули используемые в интеграции именно бокса выделены зелёным цветом. Остальные модули системные. | примечания |
Asterisk 14 |
Applications: pbx_config.so chan_local.so app_bridgewait.so app_dial.so app_playback.so app_stack.so app_verbose.so app_voicemail.so app_directory.so app_confbridge.so app_queue.so app_dumpchan.so app_mixmonitor.so app_system.so app_userevent.so Bridging: bridge_builtin_features.so bridge_builtin_interval_features.so bridge_holding.so bridge_native_rtp.so bridge_simple.so bridge_softmix.so CDR: cdr_custom.so Channel Drivers: chan_bridge_media.so chan_sip.so Codecs: codec_gsm.so codec_resample.so codec_ulaw.so codec_alaw.so codec_g722.so Resources: res_config_curl.so res_curl.so Functions: func_curl.so если используется pjsip PJSIP: res_pjsip.so res_pjsip_pubsub.so res_pjsip_session.so chan_pjsip.so res_pjsip_exten_state.so res_pjsip_log_forwarder.so |
|
Asterisk 13 | аналогичные Asterisk 14 | |
Asterisk 12 | аналогичные Asterisk 14 | |
Asterisk 11 | аналогичные Asterisk 14 | |
Основное , что нужно понимать перед настройкой телефонии, это что такое AMI и в чем его отличие от CRON AMI нашего бокса.
AMI - это програмный интерфейс к самой програмной АТС Asterisk, тоесть простыми словами, это тот-же ssh, но позволяющий управлять не сервером,
а самой программой Asterisk.
CRON AMI - это компонент нашей CRM Onebox, тот самый коннектор который соединяется с AMI и выполняет команды по управлению телефонией.
Также зачастую многие не понимают сам принцип работы click2dial
CLICK 2 DIAL - нажатие на зеленую трубочку в карточке контакта и во всяких сплывающих формах с целью перезвонить контакту. Самой распостраненной ошибкой является вопрос после нажатия на трубочку
" а какого Х я звоню сам себе если я звоню дяде Васе?", так вот такое поведение нормальное т.к. програмная АТС Asterisk (тобишь телефония), звонит сначала инициатору звонка, а уж потом, после
поднятия трубки, вызываемому абоненту. Ниже я влуплю картинку ибо хоть обьясняй, хоть не.
КОНТЕКСТЫ - контексты звонков, это так называемые основные составные части конфигурации ASTERISK, из контекстов собственно и состоит конфигурация. В рамках интеграции, нас интересуют основные контексты(корневые), из которых собирается сама моршрутизация звонков. Например, мы звоним на 102, и попадаем в контекст police, если звоним на мобильный, то попадаем в контекст mobile, если звонок поступает к нам то попадаем в контекст fromcity. Все эти контексты определяет сам администратор телефонии, он может быть один, а может быть и 10 контекстов. Наша интеграция поддерживает 2 основных контекста, для исходящих и входящих звонков, следовательно телефония должна быть настроена или на 1 контекст или 2.
Принцип работы интеграции - на самом Asterisk (в самой програме, а не на сервере, то есть доступ по ssh не является доступом к AMI) прописывается логин и пароль
для доступа к AMI , в самом боксе в разделе Asterisk AMI прописываются настройки
где интересующие нас секции :
AMI context in - контекст для входящих звонков
AMI context out - контекст для исходящих звонков
AMI host - IP адрес или доменное имя сервера Asterisk
AMI login - Имя пользователя AMI Asterisk
AMI password - Пароль пользователя AMI Asterisk
AMI port - Порт сервера Asterisk на котором слушает и ждёт команд AMI .
проверить доступность AMI можно используя программу telnet которая есть в составе дистрибутивов или устанавливается отдельно ( в случае с новыми версиями windows рекомендуется использовать putty т.к. эта программа более не входит в список компонентов устанавливаемых по умолчанию и устанавливается отдельно)
Пример использования программы telnet:
а) коннектимся на порт
telnet 212.115.231.122 5038
где 212.115.231.122 - AMI host а 5038 - AMI port
б) получаем приглашение для ввода команды
Trying 212.115.231.122...
Connected to 212.115.231.122.
Escape character is '^]'.
Asterisk Call Manager/1.3
, если не получаем, то значит или AMI недоступен (или недоступен сам сервер), или доступ ограничен\закрыт для нашего бокса.
в) туда вводим команду скопировав, и вставив предварительно изменив выделенный текст
ACTION: LOGIN
USERNAME: webproduction
SECRET: 321323
EVENTS: ON
где webproduction - AMI login, а 321323 - AMI password
г) итогом должно быть сообщение
Response: Success
Message: Authentication accepted
Event: FullyBooted
Privilege: system,all
Status: Fully Booted
Это означает, что Ваши доступы корректы и вы успешно авторизировались в AMI.
CRON AMI - использует похожий принцип при работе с AMI Asterisk
Также следует понимать, что для обычного звонка, наличие запущенного CRON AMI не обязательно (чекбокс "Получать список звонков через AMI CRON" ) , но доступы должны быть прописанны корректные.
в нашем боксе осуществлена "из коробки".
То есть при соблюдении условий:
Можно считать базовую интеграцию выполненой.
Далее есть 3 основных требования клиентов, выполнение которых обеспечивают более тесное взаимодействие бокса с телефонией:
Рассмотрим каждый из них подробнее
PUSH API
Выполняется через правку диалплана(конфига) телефонии Asterisk , то есть выполняется через правку самих конфигов программы телефонии (Asterisk) и установки чекбокса напротив секции
"Получать список звонков через PUSH".
Эту интеграцию может выполнить только администратор после полученя полного доступа к телефонии.
CRON AMI
Выполняется автоматически , после установки чекбокса напротив секции - "Получать список звонков через AMI CRON" и предварительного тестирования доступов.
Рассмотрим первый вариант.
Где
FTP directory - директория внутри самой папки доступной по FTP, то есть, у нас есть доступ к папке asterisk через FTP, а записи находятся в папке records которая находится внутри папки asterisk , в этом случае нам нужно указать её(records) в этом поле.
FTP host - IP адрес или хостнейм FTP сервера
FTP passive - пассивный режим FTP используется при настройке FTP сервера в пассивном режиме.
FTP password - пароль пользователя FTP
FTP port - порт на котором "слушает" FTP , стандартный - 21 порт.
Для отображения\парсинга событий через Asterisk FTP нам нужны
Также следует учитывать ограничения которые есть при таком способе интеграции, поскольку мы используем записи разговоров, то событий по "недозвону" , "пропущенных звонках" быть не может. События создаются только на основе реальных звонков которые имеют длительность (пусть даже нулевую).
Второй вариант
Использование CDR записей - может выполнить только администратор , после полученя полного доступа к телефонии. Но примеры запросов, которые необходимо отправлять в CRM можно наблюдать ниже.
Запрос при совершении звонка.
NoOp(${CURL(http://CRMIP/asterisk/push/?ident=${IDENT}&channel=${CHANNEL}&status=OUTGOING&caller=${CALLERID(num)}&callee=${DESTNUM})});
где IDENT вычисляется как уникальный идетификатор звонка, текст ниже является просто примером. Set(IDENT=${STRFTIME(${EPOCH},,%Y%m%d%H%M%S)}${CALLERID(num):-3});
CRMIP - это IP OneBox клиента
CHANNEL - канал который использует телефония, в большинстве случаев используется SIP и этот параметр генерирует сама ATC.
OUTGOING - для входящих звонков этот параметр будет INCOMING для исходящих OUTGOING как в примере.
CALLERID(num) - номер звонящего
DESTNUM - номер вызываемого абонента
По завершенни звонкаNoOp(${CURL(http://CRMIP/asterisk/push/?ident=${IDENT}&channel=${CHANNEL}&status=${DIALSTATUS}&caller=${CALLERID(num)}&callee=${DESTNUM}&pickup=${DIALEDPEERNUMBER}&duration=${DIALEDTIME}&filename=${MIXMONITOR_FILENAME})});
где помимо знакомых уже параметров нас интересуют.
DIALEDPEERNUMBER - номер ответившего абонента
MIXMONITOR_FILENAME - файл записи разговора
DIALEDTIME - время разговора в секундах
DIALSTATUS - статус звонка, поддерживаются все стандартные статусы звонков Asterisk.
Нестандартные\кастомные статусы звонков не поддерживаются.
Пример работы таких запросов
http://CRMIP/asterisk/push/?ident=20161128122129666&channel=SIP/1008-000036b9&status=OUTGOING&caller=401&callee=380979922666
где понятно, что 401 номер звонит на мобильный 380979922666
по звершенииhttp://CRMIP/asterisk/push/?ident=20161128122129666&channel=SIP/1008-000036b9&status=ANSWER&caller=401&callee=380979922666&pickup=380979922666&duration=76&filename=/var/spool/asterisk/monitor/2016-11/28/20161128122129-401-380979922666.wav
Также обращаю внимание что ident(идентификатор) звонков совпадает, что позволит CRM клиента корректно закрыть этот звонок.
сами настройки не отличаются от настройки событий по FTP, но следует понимать, что некоторые форматы с большим битрейтом прослушать в браузере будет нельзя, хотя записи и будут доступны, это ограничения самих браузеров, поэтому возможна ситуация, когда прослушать записи в одном браузере можно , а во втором - нет. В таком случае обратитесь к администратору для уточнения технических ньюансов записи звонка.
И ещё, необходимо не забывать о чекбоксе Не учитывать path (путь) при скачивании файла - эта настройка, помогает если FTP сервер не отдает боксу полный путь файла (самый частый случай - отсутствие командной оболочки у пользователя ftp ), тогда имеет смысл установить этот чекбокс.
Также , при локальном размещении записей (вариант когда бокс и телефония на 1 сервере), необходимо ставить отдельную доработку на программиста\системного администратора или попробовать провести её самому воспользовашись соответствующим чекбоксом , в таком случае проводить любые интеграции через FTP не нужно.
Информация о PBX:
могут быть как Аппаратные IP-PBX(Yeastar, Grandstream, NeoPBX,Panasonic) так и Программные IP-PBX(FreePBX, Elastix). В чем их отличие от Asterisk по назначению? - правильно, различий нет. Разница бывает только в Програмном обеспечении, железе которое используется на этих АТС. Есть PBX основанные на Asterisk , есть самобытные использующие своё ПО . В случае систем, которые основаны на Asterisk , базовая интеграция возможна без проблем при наличии AMI.
Пример manager.conf
[general]
enabled=yes
bindaddr=0.0.0.0
port=5038
[crmonebox]
secret=superpassssssss
displayconnects=yes
deny=0.0.0.0/0.0.0.0
permit=8.8.8.8
read = all,system,call,log,verbose,command,agent,user,config
write = all,system,call,log,verbose,command,agent,user,config
где 8.8.8.8 IP арес CRM клиента
superpassssssss - пароль, который вы придумаете сами.
после необходимо перезапустить сам asterisk\PBX,
также не забыть добавить правила для фаервола на порт 5038, если оный есть. Возможна и более сложная интеграция, но только после получения всех доступов к оборудованию .
Забор записей разговоров решается на уровне обычной интеграции по FTP , если АТС не предоставляет доступ к разговорам по FTP, то необходимо узнать каким образом возможно нашей CRM забрать эти записи и только после ответа клиента выставлять консультацию на системного администратора.
Интеграции с PBX системами не основанными на Asterisk обсуждаются в индивидуальном порядке с Вашим руководителем.