amoCRM

Чаты amoCRM (amojo): что нужно от техподдержки, как подключить аккаунт, формат обмена и подпись.

Канал выдаёт техподдержка #

Канал у сервиса один на всех клиентов, и выдаёт его техподдержка amoCRM по заявке (обычно 1–3 рабочих дня). В ответ приходят код канала, channel_id и секрет подписи. Пока канала нет, раздел amoCRM в кабинете говорит об этом прямо и подключить аккаунт нельзя.

Секрет канала подписывает обмен всех подключённых аккаунтов сразу, поэтому он живёт только в окружении сервиса и никогда не показывается в кабинете.

Подключение аккаунта #

amojo_id — не обычный номер аккаунта: обычный здесь не принимается, и ошибка выглядит как «аккаунт не найден».

Подключение уходит с hook_api_version: v2 и выключенным временным окном. Без первого не приходят подробные события, без второго amoCRM закрывает чат через сутки молчания, и ответ менеджера на давнее обращение не доходит.

ШагЧто
1В amoCRM: GET /api/v4/account?with=amojo_id — скопировать amojo_id
2В кабинете: вставить amojo_id и сохранить
3Мы зовём POST /v2/origin/custom/{channel_id}/connect и сохраняем scope_id
4Проверить, что в списке чатов появился канал WidgetChat

Обмен #

Наружу уходит event_type: new_message с полями msgid, conversation_id, sender и message. Дедупликация на стороне amoCRM идёт по msgid; мы кладём запись о попытке до отправки, поэтому повтор после отказа не создаёт второй реплики.

Ответ менеджера приходит вебхуком на /amocrm/hook/{scope_id}. Мы отвечаем 200 сразу и уводим работу в очередь: вебхук amoCRM присылается один раз и при ошибке приёма не повторяется.

Запрос
POST /v2/origin/custom/{scope_id}
Date: Fri, 22 Aug 2026 09:15:04 +0000
Content-MD5: 3f9a…
X-Signature: 6b2f…

{"event_type": "new_message",
 "payload": {"msgid": "wc-…", "conversation_id": "…", "sender": {"id": "…", "name": "Иван"},
             "message": {"type": "text", "text": "Здравствуйте"}}}

Подпись #

Исходящий запрос подписывается HMAC-SHA1 по строке из метода, MD5 тела, типа содержимого, даты и пути. Входящий вебхук подписан HMAC-SHA1 от тела целиком — проверяется до всякой работы.

Проверено на подставном канале: живого канала amoCRM у нас пока нет.