Несмотря на долгое молчание продолжаем работать с астериском в полную силу. Молчание наверное связано с тем, что работа затягивает сильнее, и желание поделиться своими знаниями погибает под грузом рутины. Однако буквально месяц назад мы столкнулись с просьбой заказчика, который осознал после установки Askozia, что ему необходима еще и CRM, интегрированная с телефонией. Мы выбрали AmoCRM — система проста, понятна и имеет уже возможность интеграции, реализованную компанией VoxLink. Однако инструкция имеет некоторое количество упущений, которые могут выпить у вас много крови, постараюсь собрать здесь дополнения инструкции, они под катом. Наши клиенты получают после интеграции с Asterisk еще и приятную скидку по промо-коду (её можно получить перейдя по ссылке), не стесняйтесь задавать вопросы здесь и по email igorg@iqtek.ru.
Ссылки по теме:
- Сайт AmoCRM
- Инструкция по настройке интеграции с Asterisk
- Получение бесплатного SSL сертификата
- Описание интеграции для разработчиков
Общие сведения о работе интеграции AmoCRM:
Интеграция AmoCRM с Asterisk работает в двух направлениях: AmoCRM может считывать данные и инициировать вызовы в Asterisk'е. Из диалплана можно посредством CURL обращаться к AMOCRM чтобы узнать ответственного сотрудника, назначенного клиенту, а так же получить имя звонящего по его номеру.
- Со стороны AmoCRM обращения идут к HTTPS ресурсу, указанному в настройках виджета, и бывают следующих видов:
- Оригинация вызова. Отправляется из веб-браузера клиента (с IP адреса пользователя) при нажатии в разнообразных местах CRM на номер телефона
- Проверка статуса линии. Отправляется из веб-браузера клиента (с IP адреса пользователя) раз в 5 секунд. Загружается список текущих разговоров. Если по назначенному сотруднику телефону идет разговор — появляется всплывающее окно с именем звонящего.
- Загрузка CDR. Происходит раз в 15 минут с серверов AmoCRM. Вызовы отображаются в разделе «События».
- Доступ к записи разговора. Происходит переход веб-браузера клиента на скрипт, а затем браузер переадресуется на запись разговора.
- Мини-Вывод: Доступ к скрипту интеграции нужно разрешить адресам, с которых возможен вход в CRM и IP адресам AmoCRM. Доступ к AMI/AJAM нужно разрешить только адресу с которого к астериску обращается скрипт интеграции.
- Со стороны Asterisk/диалплана можно обратиться к API AmoCRM используя CURL. Два вида URL описаны в оригинальной инструкции, возможно существуют какие-то еще виды запросов, они мне пока не известны.
Интеграция выполнена так, что её можно использовать чтобы интегрировать CRM не только с Asterisk и FreePBX, а так же с любым продуктом телефонии, основанным на OpenSource решениях (Askozia, решения использующие FreeSwitch и т.д.).
Корректировки к инструкции:
- Скрипт интеграции должен быть доступен по HTTPS протоколу и никак иначе. В инструкции везде указан https протокол, но особо на этом факте внимание не заострено. Иначе веб-браузер не даст JS коду на странице AmoCRM обратиться к вашему http серверу из-за политики безопасности.
- Если на вашем сервере установлен самостоятельно подписанный сертификат, то вам придется вручную добавлять сертификат в браузеры (здесь описано как), где будут работать сотрудники, что проблематично, если сотрудники работают не только с рабочего места в офисе. Либо установите корректный сертификат на свой сервер, это+600р. в год к стоимости CRM в год.
- В manager.conf не нужно указывать весь список IP адресов, так как CRM фактически обращается только к скрипту по HTTPS, к самому Asterisk CRM никогда не обращается напрямую.
- Поиск имени по CallerID работает здорово, только современные версии Asterisk имеют проблему с функцией CURL (начиная с версии 1.8), которая не позволяет корректно получить строку, содержащую non-ASCII символы. Выходом служит обращение к amocrm из скрипта на своем сервере и добавлении к имени ASCII символа в конец строки. В dialplan asterisk'а этот символ можно в дальнейшем удалить и получить корректное имя. Так же такая надстройка позволяет использовать функцию cid lookup стандартным для FreePBX образом.
Коротко добавления сделанные нами:
- Записи разговоров скрыты из публичного доступа.
- При оригинации вызова звонящему на экране телефона мы отображаем имя и телефон, куда идет звонок, а не внутренний номер сотрудника и amocrm
- Для всех клиентов скрипты интеграции мы размещаем у себя на сервере с применением нашего SSL сертификата
- Для получения callerid написана прослойка, позволяющая астериску получить кириллическое имя в корректном формате
- Сделан донабор внутренних номеров используя DTMF
Ссылка на описание интеграции: http://iqtek.ru/amocrmpbx