Интеграция asterisk+freepbx c CRM-системой на примере amoCRM
В данной статье рассмотрим, как подключить AmoCRM к Asterisk c предустановленным FreePBX. Технические требования Настройка подключения Настройка cidlookup Карточка клиента Умная переадресация Настройка отдачи файлов разговоров Технические требования Серверная часть: Asterisk версии 1.8 и выше с поддержкой технологии AJAM или AMI Вебсервер, с поддержкой протокола https (если вебсервер или Asterisk находятся в локальной сети то потребуется настройка […]
В данной статье рассмотрим, как подключить AmoCRM к Asterisk c предустановленным FreePBX.
- Технические требования
- Настройка подключения
- Настройка cidlookup
- Карточка клиента
- Умная переадресация
- Настройка отдачи файлов разговоров
Технические требования
Серверная часть:
- Asterisk версии 1.8 и выше с поддержкой технологии AJAM или AMI
- Вебсервер, с поддержкой протокола https (если вебсервер или Asterisk находятся в локальной сети то потребуется настройка Hairpid NAT или подмены DNS)
- Для ведения аналитики и закрепления записей разговоров требуется SSL сертификат на доменное имя подписанное доверенным ЦС
- PHP с поддержкой json_encode (5.1+PECL_json и выше версии)
- PHP с расширением PDO с модулем соответствующего бэкэнда CDR
- Asterisk собранный с модулем Curl (или системный wget на линуксе)
- Разрешить доступ с ip по ссылке.
- Настроить локальный заворот: со всех рабочих мест в локальной сети домен <company>.voxlink.ru должен вести на локальный интерфейс asterisk.
- Доступ к серверу от локальных ПК должен быть разрешен.
Клиентская часть:
Т.к. AmoCRM представляет собой облачный сервер подключение, к которому осуществляется посредством браузера, то и требования заключаются только в нем.
Заявленные в официальных источниках поддерживаемые интернет обозреватели (список предоставлен с учетом поддержки начиная с указанной версии):
- Internet Explorer 11
- Google Chrome 46
- Mozilla Firefox 43.0
- Opera 17
- Safari 8
- MS Edge 11
Дополнительных требований, таких как наличие JavaScript или установка расширений не требуется.
Настройка подключения
- Одним из важнейших и необходимых пунктов интеграции является разрешение доступа к АТС на сетевом оборудовании. Для этого требуется разрешить проброс портов 443 и 8088 (tcp). Следует обратить внимание, что в файервол АТС должны быть добавлены ip-адреса сетей, из которых впоследствии будет использоваться CRM система.
- Следующим шагом создадим нового AMI пользователя. Для этого на АТС редактируем файл: /etc/asterisk/manager.conf. Логин и пароль могут быть произвольными. Но в целях безопасности рекомендовано использовать сложные пароли.
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
webenabled = yes
httptimeout = 60
[amoCRMuser]
secret = amoCRMpassword
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.0
read = cdr,reporting,originate
write = reporting,originate
3. Далее настроим доступ к ajam интерфейсу по стандартному порту 8088, отредактируем файл: /etc/asterisk/http.conf
[general]
enabled=yes
enablestatic=yes
bindaddr=0.0.0.0
bindport=8088
prefix=asterisk
Bыполним в консоли CLI команду:
# core restart now
Или если есть доступ к web-интерфейсу выполнить комбинацию submit+apply config. Это безопасно позволит обновить всю конфигурацию из файлов настроек. Затем для проверки статуса в той же консоли выполним:
# http show status
Если все правильно, результат будет примерно следующий
Для окончательной проверки в адресной строке браузера выполним переход по адресу:
http://ip-asteriska:8088/asterisk/rawman?action=login&username= amoCRMuser&secret=amoCRMpassword
Если вы используете внутрений ip Asterisk необходимо добавить разрешение на свой ip в manager.conf. И если получаем:
Следовательно со стороны астериска все настроено правильно и ajam интерфейс работает корректно.
4. Сертификат и ключ можно размещать в любой директории, но впоследствии необходимо прописать полный путь в файле: /etc/httpd/conf.d/ssl.conf, например, как это показано на скриншоте:
Для проверки правильности в адресной строке вашего браузера заменяем ip-адрес, на доменное имя. После проверки аутентификации откроется стандартный web-интерфейс.
5. На этом шаге можно приступать к настройке виджета AmoCRM. В личном кабинете переходим в Интеграции->Asterisk. Скачиваем скрипт по предоставленной ссылке и распаковываем в корневую директорию apache или аналогов и делаем его доступным извне. После чего возвращаемся к настройке виджета:
- Логин\пароль: указываем прописанные нами в manager.conf
- Добавляем соответствие пользователей внутренним номерам
- Путь к скрипту: обязательно «https://» в начале, следом доменное имя и файл скрипта «amocrm.php».
- Щелкаем переключатель «включить виджет» и жмем «сохранить».
6. Отредактируем исходный код скрипта: /var/www/html/amocrm.php. Для того чтобы не создавать своего пользователя базы данных, воспользуемся уже существующим.
7. Логин+пароль смотрим в файле: /etc/freepbx.conf.
Тут же нужно проверить подключение и доступ к внутренней базе Asterisk, выполнив ряд запросов:
https://domain.sertname.ru/amocrm.php&_login&_secret=&_action=test_cdr
Возвращает результат пробного соединения с CDR таблицей.
https://domain.sertname.ru/amocrm.php&_login&_secret=&_action=status
Возвращает результат текущего состояния соединения с базой.
https://domain.sertname.ru/amocrm.php&_login&_secret=&_action=cdr
Возвращает несколько последних записей из таблицы.
Настройка cidlookup
Для настройки cidlookup нам нужно во FreePBX в разделе Admin — CallerID Lookup Sources добавить источник откуда мы будем брать имя звонящего:
Хост: <account>.amocrm.ru
Порт: 443
Имя пользователя: логин из пункта №2
Пароль: пароль из логин из пункта №2
Путь: /private/acceptors/asterisk_new/
Запрос: number=[NUMBER]&USER_LOGIN=<login>&USER_HASH=<hash>
<login> логин из пункта №2
<hash> API ключ amocrm
<account> ваш аккаунт в amocrm
При использовании в качестве логина длинных email адресов возможно потребуется изменить размерность (длину) колонки в таблице, используемой для хранения ссылки из настроек выше, т.к. по умолчанию она может содержать не более 100 символов и этого не всегда достаточно для хранения всей ссылки. Для этого необходимо выполнить запрос:
ALTER TABLE `cidlookup` CHANGE COLUMN `http_query` `http_query` VARCHAR (255) NULL DEFAULT NULL AFTER `http_path`;
Теперь нам нужно переписать диалплан, для этого идем в /etc/asterisk/extensions_additional.conf и находим там контекст [cidlookup]. Он будет выглядеть примерно так же как и ниже, для нас главное exten => cidlookup_1, если это так(если нет то меням cidlookup_1 на тот что указан у вас в контексте) то копируем контекст указанный ниже и вставляем его в /etc/asterisk/extensions_override_freepbx.conf и делаем
# dialplan reload
[cidlookup]
include => cidlookup_custom
exten => cidlookup_1,1,Set(CALLERID(name)=${SHELL(wget -O - --quiet https://your.amocrm.ru/private/acceptors/asterisk_new/?number=${CALLERID(num)}\&[email protected]\&USER_HASH=xxxxxxxxxxxxxxxxxxxxxxxxxxx)})
exten => cidlookup_1,n,Return()
exten => cidlookup_return,1,ExecIf($["${DB(cidname/${CALLERID(num)})}" !=""]?Set(CALLERID(name)=${DB(cidname/${CALLERID(num)})}))
exten => cidlookup_return,n,Return()
Где USER_HASH – это Ваш уникальный API ключ предоставляемый в личном кабинете AmoCRM –> настройки –> API.
Прежде чем проверять callerid lookup (например забить в amocrm свой мобильный и звонить на ваш did) нужно проверить, отдает ли amocrm имя звонящего, для этого нужно выполнить запрос в браузере (предварительно быть залогиненным в системе amocrm):
https://domain.amocrm.ru/private/acceptors/asterisk_new/?number=номерклиента&USER_LOGIN=емейлдлявходавамоцрм&USER_HASH=ключапи
Если все правильно, должны увидеть имя клиента
Далее желательно проверить отдачу имени абонента через консоль севрера, для этого нужно выполнить фактически тот же запрос, но с небольшими изменениями: необходимо будет экранировать символ &
Запрос из консоли будет выглядеть примерно так
curl https://domain.amocrm.ru/private/acceptors/asterisk_new/?number=<номерклиента>\&USER_LOGIN=<емейл-для-входа-в-амоцрм>\&USER_HASH=ключапи
Карточка клиента
Теперь можно убедиться во всплытии карточки клиента. Для этого необходимо быть залогиненым в личном кабинете AmoCRM, находится в одной из вкладок контакты или сделки и совершить входящий вызов на внешний номер, который маршрутизируется хотя бы на один из внутренних номеров добавленных в виджет. При этом стоит учитывать, что задержка всплытия может достигать до 5 секунд.
Если карточка не всплывает нужно проверить следующие пункты:
- Блокировка всплывающих окон на странице браузером
- Расширение для браузера с тем же функционалом
- Перезагрузить страницу, включая кеш: ctrl+shift+R
Если это не дало результата, можно включить в браузере «режим разработчика», чтобы видеть события и логи ошибок: нажимаем F12 и переходим во вкладку Networks.
Умная переадресация
Умная переадресация позволяет перевести вызов на ответственного менеджера
Для этого нам нужно создать специальный контекст, назовем его amocrmtransfer
; 151 виртуальный добавочный
; DEFEXT добавочный по умолчанию.
; <login> логин в amocrm
; <hash> API ключ amocrm
; <account> ваш аккаунт в amocrm
[amocrmtransfer]
exten => 151,1,Set(DEFEXT=101);
exten => 151,n,Set(TOEXT=${CURL(https://<account>.amocrm.ru/private/acceptors/asterisk_new/?redirect=Y&number=${CALLERID(num)}&USER_LOGIN=<login>&USER_HASH=<hash>)})
exten => 151,n,GotoIf($[${TOEXT}]?from-internal,${TOEXT},1:from-internal,${DEFEXT},1)
Зарегистрируйте виртуальный Extension (меню Application>Extensions). (допустим 151)
- Добавьте Custom Destination (меню admin) amocrmtransfer,151,1
- Добавьте в файл /etc/asterisk/extensions_custom.conf модификацию диалплана amocrmtransfer.
- В настройке Not Reachable ext. 151 установите Custom Destination / amocrmtransfer
- Примените изменения
Теперь все звонки, переведённые на номер 151, будут переведены на ответственного менеджера или номер по умолчанию.
Настройка отдачи файлов разговоров
Для того что бы в amoCRM мы могли слушать и скачивать записи разговоров нам нужно сделать следующее:
- Сделать папку с записями разговоров доступными по https (напр. http://sip.loc/records/) Мы рекомендуем сделать символьную ссылку на эту папку, а так же в целях безопасности открыть доступ только для доверенных IP адресов (актуальный список ip адресов amocrm всегда можно посмотреть тут, а просмотр содержимого (dirlisting) отключить.
- Не забываем прописать в скрипте amocrm.php параметр AC_RECORD_PATH которому нужно присвоить значение https://records.sip.loc/records/%Y/%m/%d/# (#имя файла, %Y %d %m дата звонка покомпонентно).
- Теперь через некоторое время в кабинете amocrm при просмотре карточки клиента мы увидим время звонка, а так же возможность скачать и прослушать разговор
Если у вас FreePBX версии 2.9 и ниже, то в CDR БД поля recordingfile не будет, и его нужно будет добавить вручную:
# ALTER TABLE `cdr` ADD `recordingfile` VARCHAR (120) NOT NULL
После чего нужно будет внести изменения в контекст записи разговоров. Для FreePBX это [macro-record-enable]. Скопируйте его из extensions_additional.conf в extensions_override_freepbx.conf, и после назначения переменной имени файла записи добавьте следующую строку:
Если вы хотите что бы статистика отображалась корректно, а также что бы записи исходящих вызовов тоже отображались в CDR необходимо выполнить следующее:
В /etc/asterisk/extensions_custom.conf создаем контекст:
[from-amocrm]
exten => _.,1,Macro(user-callerid)
same => n,Goto(from-internal,${EXTEN},1)
Затем делаем
# dialplan reload
Далее в скрипте amocrm.php 98 строка, меняем 'Context'=>'from-internal', на 'Context'=>'from-amocrm',
Если через какое то время вы стали наблюдать долгое выполнение диалплана в астериске, то вам необходимо в amocrm.php использовать не ajam а ami, для этого укажите порт 5038 и закомментируйте define(‘AC_PREFIX’,’/asterisk/’) используя знак # в начале данной строки
Если http
show status отображает не все URI’s, то необходимо проверить следующие
пункты:
1. В manager.conf стоит enabled=no или не указан параметр webenabled=true
2. Не выполнена команда core restart now
3. Владелец файла /etc/asterisk/http.conf является root а не asterisk (или пользователь
под которым запускается asterisk)
4. Прочитать статью еще раз более внимательно
Если у вас asterisk 13, то карточка работать не будет,
пока не будет поправлен amocrm.php. Пример скрипта можно найти в комментариях
от наших пользователей
Остались вопросы?
Я - Кондрашин Игорь, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.
Добрый день!
В amocrm отказались от API ключей в пользу OAUTH авторизации.
Как теперь настроить cidlookup и умную переадресацию?
Нет, ты можешь написать в тп и тебе выдадут в чате ключ API