Voipnotes
Услуги
  • 3CX Phone System
    • Купить IP АТС - 3CX Phone System
Ещё
    Задать вопрос
    +7 (499) 113-65-73
    Заказать звонок
    sale@voipnotes.ru
    г. Москва 2-й Михайловский проезд 9
    +7 (499) 113-65-73
    Заказать звонок
    Voipnotes
    Услуги
    • 3CX Phone System
      • Купить IP АТС - 3CX Phone System
      Voipnotes
      Услуги
      • 3CX Phone System
        • Купить IP АТС - 3CX Phone System
        Voipnotes
        Voipnotes
        • Услуги
          • Назад
          • Услуги
          • 3CX Phone System
            • Назад
            • 3CX Phone System
            • Купить IP АТС - 3CX Phone System
        • +7 (499) 113-65-73
        sale@voipnotes.ru
        г. Москва 2-й Михайловский проезд 9
        • Главная
        • Блог
        • Интеграция amoCRM и Asterisk

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

        13 Июля 2016

        Сегодня, ни одна компания не обходится без сайта и CRM (системы управления взаимоотношениями с клиентами), причем последних, на данный момент, уже довольно много: 1C CRM, VtigerCRM, SugarCRM, Bitrix24, AmoCRM. Интеграция CRM систем с телефонией позволяет ускорить обработку входящих вызовов, грамотно обслуживать ваших клиентов, и следить за качеством переговоров.

        • Предварительное информирование менеджера о том, кто ему звонит (карточка клиента появляется на экране компьютера сразу после звонка, еще до того, как сотрудник взял трубку)
        • Набор номера прямо из CRM системы (если кликнуть по нужному номеру в CRM, система произведет автоматический вызов по данному контакту)
        • Прослушивание звонков прямо из CRM системы

        В сегодняшней статье мы расскажем, как интегрировать одну из самых популярных CRM систем для малого бизнеса и среднего бизнеса AmoCRM с Asterisk (FreePBX 12).


        Технические требования к платформе Asterisk:

        • Asterisk c поддержкой технологии AJAM или AMI
        • Вебсервер с поддержкой протокола https
        • PHP с поддержкой json_encode (5.2+ или 5.1+PECL_json)
        • PHP с расширением PDO с модулем соответствующего бэкэнда CDR


        Разобьем работы по интеграции AmoCRM с Asterisk (FreePBX 12) на несколько этапов, описывая в каждом из этапов настройки для FreePBX и для голого Asterisk:

        Настройка AMI MANAGER И AJAM

        Использовать мы будем технологию AJAM. Для начала, нам нужно создать пользователя для управления Asterisk, например, amocrm.

        Asterisk

        Если у вас голый Asterisk, то достаточно внести соответствующую запись в /etc/asterisk/manager.conf. В примере ниже, добавлен пользователь amocrm с паролем dnhYZ8wzGI. В параметрах permit, мы должны указать сервер, на котором находится скрипт - в данном случае это localhost. Так же, необходимо указать минимальные права доступа read и write. Важно, также, в секцию general добавить опции, указанные в примере.

        nano /etc/asterisk/manager.conf

        [general]
        enabled = yes
        port = 5038
        bindaddr = 0.0.0.0
        webenabled = yes
        httptimeout = 60

        [amocrm]
        secret = dnhYZ8wzGI
        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


        FreePBX

        Если у вас FreePBX, то в /etc/asterisk/manager.conf в секцию general добавляем следующее:

        webenabled = yes
        httptimeout = 60

        У вас должно получиться:

        [general]
        enabled = yes
        port = 5038
        bindaddr = 0.0.0.0
        webenabled = yes
        httptimeout = 60


        Теперь переходим в Settings – Asterisk Manager Users и добавляем пользователя amocrm.

        amocrm - Asterisk Manager Users.jpg

        Нажимаем Submit Changes, потом Apply Config

        Теперь, нам нужно включить ajam интерфейс на стандартном порту 8088, используя http.

        Asterisk

        Если, у вас голый Asterisk, то создаем или редактируем файл /etc/asterisk/http.conf и вносим следующее:

        [general]
        enabled=yes
        enablestatic=yes
        bindaddr=0.0.0.0
        bindport=8088
        prefix=asterisk


        FreePBX

        Если, у вас FreePBX, то переходим в Settings - Advanced Settings и в секции Asterisk Builtin mini-HTTP server вносим следующие изменения:

        amocrm - Asterisk Builtin mini-HTTP server.jpg

        Нажимаем на появившиеся зеленые кружки, после чего, нажимаем Apply Config.

        Перейдем в консоли Asterisk и выполним команду: core restart now.

        Затем, для проверки http статуса, в консоли asterisk выполним: http show status и, если все сделано правильно, вы должны увидеть примерно следующее:

        localhost*CLI> http show status
        HTTP Server Status:
        Prefix: /asterisk
        Server: Asterisk/13.5.0
        Server Enabled and Bound to 0.0.0.0:8088

        Enabled URI's:
        /asterisk/httpstatus => Asterisk HTTP General Status
        /asterisk/amanager => HTML Manager Event Interface w/Digest authentication
        /asterisk/arawman => Raw HTTP Manager Event Interface w/Digest authentication
        /asterisk/manager => HTML Manager Event Interface
        /asterisk/rawman => Raw HTTP Manager Event Interface
        /asterisk/static/... => Asterisk HTTP Static Delivery
        /asterisk/amxml => XML Manager Event Interface w/Digest authentication
        /asterisk/mxml => XML Manager Event Interface
        /asterisk/ari/... => Asterisk RESTful API
        /asterisk/ws => Asterisk HTTP WebSocket

        Enabled Redirects:
        None.

        Теперь, можно проверить работу интерфейсов, перейдя в браузере по следующему адресу:

        http://ip_сервера:8088/asterisk/httpstatus?action=login&username=amocrm&secret=dnhYZ8wzGI

        Указать в секциях:

        ami_user – созданного вами пользователя (в нашем случае - amocrm)

        ami_password – пароль созданного нами пользователя (в нашем случае - dnhYZ8wzGI)

        Должны увидеть следующее:

        asterisk httpstatus.jpg

        http://asterisk_ip:8088/asterisk/rawman?action= login&username=amocrm&secret=dnhYZ8wzGI

        asterisk rawman.jpg

        Следовательно, со стороны Asterisk все настроено правильно и ajam интерфейс работает корректно.

        Настройка AmoCRM

        В личном кабинете amoCRM, переходим в Настройки – Интеграция, находим AsteriskNew и нажимаем установить.

        amocrm интеграция.jpg

        В разделе Подключение скачиваем необходимый архив со скриптом для интеграции, распаковываем его и кладем в папку /var/www/html/.

        Можно сделать немного проще:

        cd /var/www/html/
        wget https://developers.amocrm.ru/download/asterisk.zip
        unzip asterisk.zip
        mv Asterisk/amocrm.php ./

        amocrm виджет.jpg

        Настраиваем авторизационные данные:

        Логин: указываем тот, который создали в manager.conf (amocrm)

        Пароль: указываем тот, который создали в manager.conf (dnhYZ8wzGI)

        Добавочные номера: указываем внутренние номера ваших менеджеров

        Путь к скрипту: указываем путь к скрипту (сохраняем из скачанного архива amocrm.php на вашем сервере телефонии в веб директории).

        Включаем виджет и нажимаем Сохранить.

        Так же нам нужно запомнить API-ключ для дальнейшего использования amocrm. Для этого переходим в Настройки – API и копируем Ваш API ключ, он нам пригодится.

        amocrm api.jpg


        Настройка amocrm.php

        Нам нужно настроить параметры подключения в скрипте amocrm.php

        nano /var/www/html/amocrm.php

        Вносим следующие изменения:

        ini_set('display_errors',0);
        define('AC_HOST','localhost');
        define('AC_PORT',8088);
        define('AC_PREFIX','/asterisk/');
        define('AC_TLS',false);
        define('AC_DB_CS','mysql:host=localhost;port=3306;dbname=asteriskcdrdb');
        define('AC_DB_UNAME',' freepbxuser');
        define('AC_DB_UPASS','password');
        define('AC_TIMEOUT',0.75);
        define('AC_RECORD_PATH','https://pbx.v.qsoft.ru/monitor/%Y/%m/%d/#');

        AC_HOST ip/hostname сервера AMI/AJAM (localhost)

        AC_PORT порт сервера AMI/AJAM (если AMI, то пусто, если AJAM, то 8088)

        AC_DB_UNAME логин для подключения к бд, обычно freepbxuser (если стоит сборка с FreePBX)

        AC_DB_UPASS пароль для подключения к бд (логин и пароль можно посмотреть в /etc/asterisk/cdr_mysql.conf)

        AC_RECORD_PATH путь к записям разговоров (пока оставляем пустым, позже вернемся к этой настройке)

        Если у вас стоит Asterisk 13 версии, то в amocrm.php нужно будет внести изменение для корректной обработки channelstatedesc, иначе не будет работать карточка клиента. 

        Проверить версию Asterisk вы можете набрав в консоли asterisk -V

        Теперь нам нужно проверить работу скрипта amocrm.php. Ддля этого запустим скрипт с параметрами status, test_cdr и cdr.

        login и pwd - логин и пароль пользователя ajam, в нашем случае это amocrm и dnhYZ8wzGI

        https:// asterisk_ip /amocrm.php?_login=amocrm&_secret=dnhYZ8wzGI&_action=status

        https:// asterisk_ip /amocrm.php?_login=amocrm&_secret=dnhYZ8wzGI&_action=test_cdr

        При проверке status вы должны увидеть следующее:

        asterisk_cb({"status":"ok","action":"status","data":[]});

        При проверке test_cdr вы должны увидеть следующее:

        asterisk_cb({"status":"ok","data":"connection ok"});

        Если у вас:

        asterisk_cb({"status":"error","data":"SQLSTATE[28000] [1045] Access denied for user 'freepbx'@'localhost' (using password: YES)"});

        тo еще раз проверьте корректность

        define('AC_DB_UNAME','freepbx');
        define('AC_DB_UPASS','fpbx');

        в amocrm.php

        При запросе cdr вы должны увидеть информацию о звонках(если они у вас были)

        https:// asterisk_ip //amocrm.php?_login=amocrm&_secret=dnhYZ8wzGI&_action=cdr

        {"status":"ok","data":[{"calldate":"2016-07-10 10:10:17","src":"+74957874467","dst":"100","duration":"7","billsec":"5","uniqueid":"1468149017.0","recordingfile":""}]}

        Если все скрипты отработались нормально, то можно продолжать настройку.

        Настройка СIDLOOKUP

        Если у вас отсутствует модуль СIDLOOKUP, то переходим в Admin – Module Admin и устанавливаем модуль CallerID Lookup.

        FreePBX CallerID Lookup.jpg

        Для настройки СIDLOOKUP в FreePBX переходим в разделе Admin — CallerID Lookup Sources и добавляем источник, откуда мы будем брать имя звонящего:

        amocrm CallerID Lookup Sources.jpg

        Хост: <account>.amocrm.ru
        Порт: 443
        Имя пользователя: ami пользователь
        Пароль: пароль ami пользователя
        Путь: /private/acceptors/asterisk_new/
        Запрос: number=[NUMBER]&USER_LOGIN=<login>&USER_HASH=<hash>
        
        <login> email для входа <hash> API ключ amocrm (личный кабинет amocrm - Настройки – API ) <account> ваш аккаунт в amocrm

        Нажимаем Submit Changes и Apply Config

        Теперь нам нужно, чтобы входящие вызовы проходили через наш cidlookup, для этого переходим в ваши входящие правила (Connectivity - Incoming Route) и в Source выбираем amocrm.

        Incoming Route Source.jpg

        Нажимаем Submit Changes и Apply Config

        Если у вас голый Asterisk, то в extensions.conf в правила входящей связи в начале диалплана добавим

        exten => 414232,1,Set(CALLERID(name)=${SHELL(wget -O - --quiet https:// your.amocrm.ru /private/acceptors/asterisk_new/?number=${CALLERID(num)}\&USER_LOGIN= your@mail.ru \&USER_HASH=xxxxxxxxxxxxxxxxxx)})
        exten => 414232,n,Return()
        exten => 414232,1,ExecIf($["${DB(cidname/${CALLERID(num)})}" !=""]?Set(CALLERID(name)=${DB(cidname/${CALLERID(num)})}))
        exten => 414232,n,Return()


        Прежде чем проверять callerid lookup нужно проверить, отдает ли amocrm имя звонящего (предварительно залогиненного в системе amocrm). Для этого в amocrm создадим контакт со своим мобильным телефоном, и выполним запрос в браузере, например:

        https://вашаккаунт.amocrm.ru/private/acceptors/asterisk_new/?number=номер&amp;USER_LOGIN=ваша_по... _авторизации_в _amocrm&USER_HASH=API_ключ

        Если все правильно, должны увидеть имя клиента

        amocrm.jpg

        Теперь можно проверить получение карточки клиента из самого amocrm. Переходим во вкладку Контакты и при поступлении вызова от клиента, который занесен в контакты, видим следующее:

        amocrm входящий вызов.jpg

        Если звонит не известный клиент, то видим:

        amocrm неизвестный входящий вызов.png

        Советуем номера ваших клиентов заносить в том формате, в котором вам передает оператор, иначе может получиться, что вы занесли номер контакта как +7_номер, а оператор передал А-номер вида 8_номер. В таком случае amocrm будет считать, что такого клиента нет, и предложит создать контакт.

        Если у вас голый Asterisk, то вы можете в самом диалплане привести номер к некому стандарту, если у вас FreePBX и оператор отдает вам разные номера в разном формате, то стоит написать им письмо и попросить преобразовывать А-номера в нужный вам формат.

        Запись разговора в amocrm

        Для того что бы в amoCRM вы могли слушать и скачивать записи разговоров, нам нужно сделать следующее:

        Во FreePBX в настройках входящих правил(Connectivity - Incoming Route) устанавливаем Call Recording – Yes.

        Сделать папку с записями разговоров доступными по https (напр. https://asterisk_ip/rec/). Мы рекомендуем сделать символьную ссылку на эту папку, а также, в целях безопасности, открыть доступ только для доверенных IP адресов.

        mkdir /var/www/html/rec/
        ln -s /var/spool/asterisk/monitor /var/www/html/rec

        В скрипте amocrm.php параметру AC_RECORD_PATH присвоить значение

        define('AC_RECORD_PATH','https://109.234.36.31/rec/monitor/%Y/%m/%d/#');

        Теперь, через некоторое время (на момент написания статьи период обновления записей составлял 1.5 часа), в кабинете amocrm при просмотре карточки клиента мы увидим время звонка, а также получим возможность скачивать и прослушивать разговоры.

        amocrm записи вызово.jpg

        Исходящая связь через amocrm

        Для совершения исходящей связи через amocrm во FreePBX или Asterisk у нас должны быть созданы исходящие правила с маршрутом на вашего оператора.

        Если правила не созданы, то переходим в Connectivity – Outbound Routes и создаем исходящее правило. В нашем примере все контакты в amocrm занесены в формате e.164 (7_номер), так что создадим правило набора через 7.

        amocrm freepbx outboundroutes.jpg

        Нажимаем Submit Changes и Apply Config

        Прежде чем проверять исходящие вызовы через amocrm, проверим их из браузера. Залогинемся под добавочном номером 100 (тем, что мы указывали в Настройки - Интеграция - AsteriskNew) на АТС, и из консоли браузера попробуем инициировать вызов, например:

        https://asterisk-ip/amocrm.php?_login=amocrm&amp;_secret=dnhYZ8wzGI&amp;_action=call&amp...=номер _кому_звоним&as=Amocrm&rand=0.2903593583748121&_=1468160806724

        В браузере должно появиться:

        asterisk_cb({"status":"ok","action":"call","data":{"response":"Success","message":"Originate successfully queued"}});

        и в этот момент ваш добавочный номер должен зазвонить. После поднятие трубки asterisk инициирует вызов на указанный вами номер.

        amocrm call.gif

        Если все прошло удачно, то можем попробовать позвонить одному из клиентов. Переходим в Контакты, выбираем нужного нам клиента и переходим в его профиль, далее нажимаем на его номер и в открывшимся меню выбираем AsteriskNew.

        amocrm call 2.gif

        На этом наша интеграция завершена.

        Нужна консультация?

        Наши специалисты ответят на любой интересующий вопрос

        Задать вопрос
        Поделиться
        Назад к списку
        © 2021 Все права защищены.
        +7 (499) 113-65-73
        Заказать звонок
        sale@voipnotes.ru
        г. Москва 2-й Михайловский проезд 9
        Политика конфиденциальности
        Версия для печати
        © 2021 Все права защищены.
        Заказать звонок
        Написать сообщение