Работа с API AmoCRM

Если Вам недостаточно штатного функционала, то вы можете его расширить вызовами API AmoCRM

AmoCRM не для крупных проектов. Не стоит использовать API при массовых действиях. Для крупных проектов рекомендуем bitrix24

Как работать с API

Работа с API из Salebot

Базовые понятия как работать с API в конструкторе, описаны в статье по этой ссылке, https://docs.salebot.pro/api-v-konstruktore-salebot.pro/integraciya-bota-so-storonnimi-api

Рекомендуется ее изучить перед интеграцией с amocrm, иначе некоторые моменты будут непонятны.

Конструктор позволяет осуществлять двухстороннюю интеграцию с amocrm через api запросы методом POST и GET.

API AmoCRM

Можно настроить любое взаимодействие, которое указано в документации amo. https://www.amocrm.ru/developers/content/crm_platform/api-reference

Работа с API AmoCRM

Далее будут рассмотрены 2 способа интеграции - это прямые api запросы (в общих чертах) и запросы через сервер salebot.pro, так как некоторые прямые запросы имеют ряд ограничений в конструкторе. И поэтому, необходимо будет использовать дополнительный готовый скрипт на phyton, который доступен по ссылке https://drive.google.com/file/d/1mssbenJDXIIndD3R_cIERAt_Qd95gOtJ/view?usp=sharing

Получение ссылки на вспомогательный скрипт

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

Общий пример настроек запроса

Передача данных из амо в бота

Передача данных по сделке, КРОМЕ кастомных полей

метод: POST-json url: https://chatter.salebot.pro/api/АПИ_КОНСТРУКТОРА/amoapi_lead_info параметры запроса: {"lead_id": "id СДЕЛКИ"}

Далее необходимо распарсить ответ и сохранить его в переменные, например: data|0|id->id_ответственного

Передача данных по контакту, КРОМЕ кастомных полей

метод: POST-json url: https://chatter.salebot.pro/api/АПИ_КОНСТРУКТОРА/amoapi_contact_info параметры запроса: {"contact_id": "id КОНТАКТА"}

Далее необходимо распарсить ответ и сохранить его в переменные.

Получение кастомных поле

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

метод: POST-json url: https://store.salebot.pro/function/codexecutor параметры запроса для контакта: {"file":"ссылка на скрипт", "command": "contact_info", "contact_id":"id КОНТАКТА", "token": "АПИ_КОНСТРУКТОРА","field_id": "id_поля1, id_поля2, id_поля3, и т.д."} параметры запроса для сделки: {"file":"ссылка на скрипт", "command": "lead_info", "lead_id":"id СДЕЛКИ", "token": "АПИ_КОНСТРУКТОРА","field_id": "id_поля1, id_поля2, id_поля3, и т.д."}

Сохраняем данные из ответа в переменные: answer|id поля1->переменная1; answer|id поля2->переменная2

Как получить id сделки и id контакта

Принять неразобранное через желтый блок и получим сделку, в разделе “Клиенты” появятся соответствующие id.

Как получить id полей

Необходимо в браузере выполнить GET запрос (открыть ссылку) типа: вашдомен.amocrm.ru/api/v4/leads/custom_fields и для контакта: вашдомен.amocrm.ru/api/v4/contacts/custom_fields

Передача данных из бота в amocrm, смена этапа и все что связано с обновлением сделки

Здесь прямой запрос не актуален, т.к. редактирование всех сущностей амо происходит методом PATCH, который недоступен из интерфейса конструктора.

Используя этот метод, можно теггировать сделки

метод: POST-json url для сделки: https://chatter.salebot.pro/api/АПИ_КОНСТРУКТОРА/amoapi_update_lead url для контакта: https://chatter.salebot.pro/api/АПИ_КОНСТРУКТОРА/amoapi_update_contact параметры запроса для сделки: {"id": "id СДЕЛКИ", "pipeline_id": "id ВОРОНКИ", "tags": "Тег1, или несколько тегов через запятую", "status_id": "id ЭТАПА", "custom_fields": [ { "id": ID ПОЛЯ, "values":[ { "value": "сюда данные"}]}]} параметры запроса для контакта: {"id": "id контакта", "custom_fields": [ { "id": 56297, "values":[ { "value": "сюда номер телефона", "enum": "WORK"}]} ]}

Получение параметров

Как получить id всех этапов

Необходимо в браузере выполнить GET запрос (открыть ссылку) типа: вашдомен.amocrm.ru/api/v4/leads/pipelines/id ВОРОНКИ/statuses

Как получить id воронки и id ответственного

Необходимо в браузере выполнить GET запрос (открыть ссылку) типа: вашдомен.amocrm.ru/api/v4/leads/id СДЕЛКИ

Другие параметры, примеры и полное описание в документации амосрм:

Редактирование сделки: https://www.amocrm.ru/developers/content/crm_platform/leads-api#leads-edit

Редактирование контакта: https://www.amocrm.ru/developers/content/crm_platform/contacts-api#contacts-edit

Создание задачи в амо

метод: POST-json url: https://chatter.salebot.pro/api/АПИ_КОНСТРУКТОРА/amoapi_create_task параметры запроса: { "lead_id": "id СДЕЛКИ", "deadline": "ВРЕМЯ В МИНУТАХ ДО ЗАВЕРШЕНИЯ ЗАДАЧИ", "assigned_user_id": "ID ОТВЕТСТВЕННОГО", "task_type_id": “ID ТИПА ЗАДАЧИ”, "title": "ТЕКСТ ЗАДАЧИ"}

Как получить id типа задачи

Необходимо в браузере выполнить GET запрос (открыть ссылку) типа: вашдомен.amocrm.ru/api/v4/tasks

Прямые запросы к api amocrm

Перед тем, как выполнять прямые запросы к api amocrm, необходимо сначала в первом блоке получить токен авторизации, а уже в следующем блоке выполнять сам запрос.

Получение токена авторизации:

метод: GET url: https://chatter.salebot.pro/api/АПИ_КОНСТРУКТОРА/amoapi_token

Сохраняем токен из ответа в переменную: amo_token->token Во втором блоке в заголовок запроса вставляем полученный токен:

{"Authorization": "Bearer #{token}", "Content-Type": "application/json"}

и прописываем остальные параметры запроса.

Таким образом можно выполнять любые запросы POST и GET из документации amocrm https://www.amocrm.ru/developers/content/crm_platform/api-reference

Запрос на прикрепление контакта к сделке.

Разберем еще 1 нюанс, который требует наличия скрипта, описанного выше.

Частое решение когда необходимо создавать новые сделки с 1 контактом, например периодически покупки, чтобы каждый раз не заполнять данные по контакту и не плодить дубли. Нюанс в том, что когда передаешь параметр id контакта, он должен иметь тип число, но json воспринимает этот id как тип строка, т.к. значение параметра указывается в кавычках, потому что мы передаем переменную. В итоге получим ошибку.

Итак, первым блоком получаем токен, вторым блоком создаем по апи новую сделку (по примеру из документации) и в 3 блоке прикрепляем к новой сделке контакт.

Воспользуемся скриптом:

метод: POST-json url: https://store.salebot.pro/function/codexecutor параметры запроса: {"file":"ССЫЛКА НА СКРИПТ","command": "a_lead_link", "amo_lead_id":"ID НОВОЙ СДЕЛКИ", "domen": "ВАШДОМЕН.amocrm.ru", "token": "ТОКЕН АМО","amo_contact_id": "ID КОНТАКТА"}.