Работа с API AmoCRM

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

Как работать с 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 КОНТАКТА"}.