Особистий кабінет OneBox CRM
+38 (095)-163-44-04
info.prostoshop@gmail.com

Менеджер клієнта

Asterisk

Поддерживаемые версии  АТС 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" ) , но  доступы  должны быть прописанны корректные.

 

 


 

 

Интеграция с Asterisk

в  нашем боксе осуществлена  "из коробки". 

То есть при соблюдении  условий:

  1. Asterisk  настроен и  работает
  2. AMI доступна для нашего бокса и данные пользователя AMI  верные.
  3. Заведены внутренние номера абонентов в самом Asterisk
  4. В разделе ASTERISK AMI бокса прописаны  корректные настройки и  доступы к AMI аналогичные п.2 .
  5. Прописаны номера  в карточке клиента
  6. Настроена запись звонков и эти записи  доступны  или  локально, или через FTP.
  7.  Click2call ( звонок по  нажатию на  иконку телефона в  карточке контакта)

Можно считать базовую  интеграцию выполненой.

 

Далее есть  3 основных требования клиентов, выполнение которых обеспечивают более тесное взаимодействие  бокса с телефонией:

  1.  Первое требование - всплывающее окно входящего\исходящего вызова
  2.  Второе требование - события
  3.  Третье требование -  возможность прослушать запись разговора

 

Первое требование  возможно решить 2 способами интеграции:

 

  1. Через PUSH API
  2. Через CRON AMI

Рассмотрим каждый  из них подробнее

 

PUSH API

 Выполняется через правку диалплана(конфига) телефонии Asterisk ,   то есть  выполняется  через правку самих конфигов программы  телефонии (Asterisk) и установки  чекбокса напротив  секции

"Получать список звонков через PUSH".

 Эту интеграцию  может выполнить только администратор после полученя  полного  доступа к телефонии.

CRON AMI

 Выполняется  автоматически , после установки чекбокса напротив секции - "Получать список звонков через AMI CRON"  и  предварительного тестирования  доступов.

 


 

Второе  требование возможно решить

  1. Через  Настройки системы => Asterisk FTP.
     
  2. Использование CDR записей создаваемых  при настройке телефонии через PUSH API.

 

Рассмотрим первый вариант.

 

 

Где

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 нам нужны

  • Настроенный FTP сервер
  • Уже записанные разговоры в формате wav, mp3, ogg  ( 16 bit 8000 Hz )
  • Доступы к FTP серверу и папке  где  лежат записи разговоров
  • Установленный  чекбокс  напротив  поля "Включить парсер звукозаписей через 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.

  • CANCEL: Вызов отменен
  • ANSWER: На вызов был получен ответ
  • NOANSWER: На вызов не ответили
  • BUSY: Получен сигнал занято
  • CONGESTION: Канал перегружен
  • CHANUNAVAIL: Канал недоступен (Для SIP, может быть в случае если пир не зарегистрирован)
Нестандартные\кастомные  статусы  звонков не  поддерживаются.

 

Пример  работы  таких  запросов

 

 

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  клиента  корректно   закрыть  этот  звонок.

 


 

Третье требование -  а именно возможность  прослушивания  звонков возможно  решить через AsteriskFTP

сами настройки  не  отличаются  от  настройки событий  по 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  обсуждаются  в  индивидуальном порядке  с Вашим  руководителем.