Online чаты

Функционал онлайн чатов позволяет пользователям amoCRM обмениваться мгновенными сообщениями со своими клиентами. При этом клиенты используют для коммуникации привычный для себя мессенджер.

Как правило, инициировать переписку может только клиент.

API amoCRM позволяет разработчикам интегрировать различные каналы мгновенных сообщений. Для конечного пользователя работа в интерфейсе amo с такими каналами ничем не будет отличаться от уже встроенных в CRM (vk, facebook, telegram и тд).

Разработчик может сделать интеграцию только для своего аккаунта, либо тиражировать решение на всех пользователей amoCRM посредством виджета.

Чтобы приступить к интеграции вам потребуется:

  • Активный аккаунт amoCRM. Можно зарегистрировать триал на сайте https://www.amocrm.ru
  • Открыть публичный endpoint на своем сервере, куда будут приходить уведомления о новых сообщениях из интерфейса amoCRM
  • Доступы к API online чатов. Его необходимо запросить через техническую поддержку amoCRM. Подробнее этот процесс описан в разделе регистрация нового канала

Обмен сообщениями

Диаграмма ниже демонстрирует процесс отправки и получения сообщений через аккаунт amoCRM

Регистрация нового канала

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

  • Наши страницы в соц. сетях
  • Бот в телеграм
  • Через наш промо сайт
  • Прямо из вашего аккаунта amoCRM

В формате:

  1. Название сервиса, с которым вы планируете интеграцию. Название должно состоять из латинских символов и не
    должно начинаться с цифры. Название сервиса будет отображаться вместе с SVG иконкой в социальном профиле, то
    есть под именем контакта, созданного с помощью данного канала чата
  2. Webhook URL, на который будут присылаться сообщения из amoCRM. URL должен быть вида https://domain.com/location/:scope_id.
    Маркер :scope_id будет динамически подставляться системой. С его помощью вы сможете идентифицировать,
    из какого аккаунта пришло сообщение.
  3. Список аккаунтов (номер клиента), которым будет разрешена работа с новым каналом.
  4. Включить функцию “написать первым”?
  5. Email для связи в случае возникновения ошибок.
  6. SVG иконка вашего канала. Иконка должна иметь форму круга либо вписываться в круг. Размер 14х14px
  7. ID интеграции, которая будет работать с API чатов
  8. Планируете ли вы тиражировать решение на всех пользователей amoCRM?

    1. Есть ли уже подобное решение в amoCRM?
    2. Если подобное решение есть, в чем уникальность вашего?

В ответ вам будут высланы параметры доступа к API онлайн-чатов.

Срок рассмотрения заявок 1-3 рабочих дня.

Пример параметров доступа

Параметр Описание
Символьный код канала amo.ext.some_code
ID канала a4490ccc-5d7f-11e7-907b-a6006ad3dba0
Секрет da39a3ee5e6b4b0d3255bfef95601890afd80709
Список аккаунтов, для которых одобрено подключения канала 11223344 (somesubdomain)
11334455 (somesubdomain2)

Получение ID аккаунта для работы с сервисом online чатов

Для работы с сервисом вам необходимо получить уникальный ID аккаунта. Он отличается от номера клиента.

Получить его можно двумя способами:

  • На фронте, с помощью скрипта Javascript
  • C помощью запроса к API amoCRM

Javascript

Данный способ может использоваться виджетом. Выполните следующий скрипт:

Пример:

AMOCRM.constant('account').amojo_id

Запрос к API

Необходимо использовать метод /api/v4/account?with=amojo_id

Пример:

<?php
/**
 * Получение id аккаунта для работы с online чатами
 */

// composer require amocrm/amocrm-api-library

require __DIR__ . '/vendor/autoload.php';

$clientId = 'dbcb764d-b02d-4a3b-bc4d-25e1d80fdcad';
$clientSecret = 'BbL70GJrKcBlg8cag9VaXKxrzUnxiaPOG4XU3Sc6ddFj9GxOStKryI4wOK4g9kjo';
$redirectUri = 'https://example.com/sample-integration';
$baseDomain = 'onlinechat.amocrm.ru';
$code = <<<EOF
def50200189...<код авторизации интеграции>...159f568
EOF;

$apiClient = new \AmoCRM\Client\AmoCRMApiClient($clientId, $clientSecret, $redirectUri);
$apiClient->setAccountBaseDomain($baseDomain);
try {
    $accessToken = $apiClient->getOAuthClient()->getAccessTokenByCode($code);

    $apiClient->setAccessToken($accessToken);

    $account = $apiClient->account()->getCurrent([\AmoCRM\Models\AccountModel::AMOJO_ID]);
    echo "amojoId: " . $account->getAmojoId() . PHP_EOL;
} catch (Exception $e) {
    die((string)$e);
}

Пример:

amojoId: 52a350c1-b0e1-4e38-ab2e-125e5f046dfa