Найти в Дзене

Добавление контакта по API в АМО СРМ

Клиент может говорить что АМО зарубил выдачу апи ключей. это не так. амо выдает ключи апи для закрытых интеграций, на срок до 5и лет - более чем достаточно для ихних стартапов. Всё что нам нужно от клиента - этот ключ и поддомен их АМО консоли: https://вотэтачасть.amocrm.ru Задача - добавлять в амо контак, прикреплять к выбранной воронке. Находим воронку: url = f"{API_URL}/api/v4/leads/pipelines"
headers = {
"Authorization": f"Bearer {API_TOKEN}",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers) Клиент знает название воронки, мы из полученного списка узнаем её айди. Далее создаем новый контакт: url = f"{API_URL}/api/v4/contacts"
headers = {
"Authorization": f"Bearer {API_TOKEN}",
"Content-Type": "application/json"
}
contacts = [
{
"first_name": first_name,
"last_name": last_name,
"created_at": int(datetime.datetime.now().timestamp() * 1000)
}
]
contact_response = requests.post(url, json=contacts, headers=h

Клиент может говорить что АМО зарубил выдачу апи ключей. это не так. амо выдает ключи апи для закрытых интеграций, на срок до 5и лет - более чем достаточно для ихних стартапов. Всё что нам нужно от клиента - этот ключ и поддомен их АМО консоли: https://вотэтачасть.amocrm.ru

Задача - добавлять в амо контак, прикреплять к выбранной воронке.

Находим воронку:

url = f"{API_URL}/api/v4/leads/pipelines"
headers = {
"Authorization": f"Bearer {API_TOKEN}",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)

Клиент знает название воронки, мы из полученного списка узнаем её айди.

Далее создаем новый контакт:

url = f"{API_URL}/api/v4/contacts"
headers = {
"Authorization": f"Bearer {API_TOKEN}",
"Content-Type": "application/json"
}

contacts = [
{
"first_name": first_name,
"last_name": last_name,
"created_at": int(datetime.datetime.now().timestamp() * 1000)
}
]

contact_response = requests.post(url, json=contacts, headers=headers)

Напрямую прикрепить контакт к воронке нельзя. Связкой контакта и воронки служит "Сделка". Создаем сделку, в вложенные поля добавляем айди только что созданного контакта:

contact_id = contact_response['_embedded']['contacts'][0]['id']

url = f"{API_URL}/api/v4/leads"
headers = {
"Authorization": f"Bearer {API_TOKEN}",
"Content-Type": "application/json"
}

contacts = [{
"name": "Сделка через тг бота",
"pipeline_id": pipeline_id,
"created_at": int(datetime.datetime.now().timestamp() * 1000),
"_embedded": {
"contacts": [{
"id":
contact_id
}]
}
}]

response = requests.post(url, json=contacts, headers=headers)

Остался один нюанс - клиент не видит в консоли этот контакт потому что у него нету ни телефона ни почты ничего. Из коробки у контакта под это нет никаких полей, но они могут быть уже в консоли клиента созданы как кастомные. Читаем все кастомные поля консоли:

url = f"{API_URL}/api/v4/contacts/custom_fields"
headers = {
"Authorization": f"Bearer {API_TOKEN}",
"Content-Type": "application/json"
}

response = requests.get(url, headers=headers)

Находим там поле похожее на номер телефона, запоминаем его айди - phone_field_id, и модифицируем метод создания контакта:

contacts = [
{
"first_name": first_name,
"last_name": last_name,
"created_at": int(datetime.datetime.now().timestamp() * 1000),
"custom_fields_values": [
{
"field_id": phone_field_id,
"values": [
{
"value": phone_number
}
]
}
]
}
]

contact_response = requests.post(url, json=contacts, headers=headers)

Готово! Вы прекрасны.