Неразобранное

Неразобранное – это системный статус воронки сделок, поэтому к сделкам в этом статусе можно обратиться и через API методы работы со сделками. Изначально неразобранное было в отдельном хранилище и являлось отдельной сущностью именно поэтому до сих пор в интерфейсах amoCRM и в API есть особенности которые отличают поведение сделки в статусе Неразобранное от сделок в других статусах.

Основная задача статуса – накапливать лиды из разных источников и дать простой инструмент их разбора менеджерам. Как можно видеть в интерфейсе в статусе неразобранное присутствует дополнительная фильтрация по источнику:

  • Чаты ( неразобранное данного типа нельзя создать через АПИ неразобранного, для этого нужно интегрировать источник чатов через отдельное комплексное API)
  • Формы ( API спецификации представлены ниже)
  • Звонки ( API спецификации представлены ниже
  • Почта ( неразобранное данного типа через API неразобранного создать нельзя, для интеграции такого рода рекомендуем использовать встроенные инструменты почты amoCRM: парсинг, ящики для создания сущностей

Отдельной особенностью неразобранного является работа со статусами. Для того, чтобы менеджерам было легче работать с первым статусом, где могут быть как нужные так и не очень сделки, мы предусмотрели два типовых быстрых действия: «Принять», которое приводит к автоматическому переводу сделки в след. этап и «Отклонить», чтобы быстро удалить сделку из воронки. Также именно поэтому в статус неразобранного невозможно вернуть сделку из других этапов. Сделка в статусе неразобранное может быть создана в нем только изначально.

Следующая особенность неразобранного заключается в том, что вместе с данными сделки могут быть переданы данные связанных контакта и компании и некоторых событий. При этом их не будет видно нигде кроме как в самой карточке (к примеру, подобные контакты нельзя будет найти в списках контактов) пока сделка находится в статусе неразобранное. Но как только сделка будет Принята, то сущности автоматически создадутся полноценно. Более подробно о спецификациях можно прочитать ниже.

Добавление в неразобранное:

Метод позволяет добавлять неразобранное по одному или пакетно.

Общие параметры

Параметр Тип Описание
add/pipeline_id int ID воронки, если параметр не передан, то заявка будет добавлена в неразобранное основной воронки
add/incoming_lead_info
require
array Массив содержащий информацию о поступившей заявке. Его структура отличается для неразобранного типа Звонок и типа Форма
add/incoming_entities array Массив, содержащий информацию о создаваемых элементах сущностей..
add/incoming_entities/leads array Массив, содержащий информацию для создания новой сделки. Может содержать все параметры и дополнительные поля доступные для сделок для текущего аккаунта.
add/incoming_entities/contacts array Массив, содержащий информацию для создания нового контакта. Может содержать все параметры и дополнительные поля доступные для контактов для текущего аккаунта.
add/incoming_entities/companies array Массив, содержащий информацию для создания новой компании. Может содержать все параметры и дополнительные поля доступные для компаний для текущего аккаунта.

Добавление неразобранного с типом входящий звонок (sip):

URL метода

POST /api/v2/incoming_leads/sip

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

При добавлении заявки из входящего звонка минимальное количество полей 4:

  • add/incoming_lead_info/to
  • add/incoming_lead_info/from
  • add/incoming_lead_info/date_call
  • add/incoming_lead_info/service_code

Рассмотрим параметры для sip

Параметр Тип Описание
add/incoming_lead_info/to
require
int ID пользователя, который принял звонок
add/incoming_lead_info/from
require
string Внешний номер телефона, с которого поступил звонок
add/incoming_lead_info/date_call
require
timestamp Дата и время звонка
add/incoming_lead_info/duration int Продолжительность звонка
add/incoming_lead_info/link string Ссылка на запись звонка
add/incoming_lead_info/service_code
require
string Код виджета или сервиса, через который был совершён звонок. Эта строка строго не регламентирована, но просим заполнять ее читаемым кодом, чтобы было ясно от какого поставщика пришла данная заявка. К примеру, можно использовать код виджета, «yandex», «twilio» и т.д..
add/incoming_lead_info/add_note bool Флаг, если передан этот параметр, то после принятия неразобранного к сделке будет добавлено событие о совершённом звонке.

Пример запроса


{
	add: [{
		source_name: "ОАО Коспромсервис",
		source_uid: "a1fee7c0fc436088e64ba2e8822ba2b3",
		created_at: "1510261200",
		pipeline_id: "41563",
		incoming_entities: {
			leads: [{
				name: "Техническое обслуживание бензопил",
				created_at: "1509483600",
				status_id: "13667502",
				responsible_user_id: "504141",
				price: "83000",
				tags: "ТО, услуги",
				notes: [{
					note_type: "7",
					element_type: "lead",
					text: "Отправить дубликат договора"
				}],
				custom_fields: [{
					id: "4399917",
					values: [
						"3692247",
						"3692248"
					]
				}]
			}],
			contacts: [{
				name: "Александр Петрович Смирнов",
				custom_fields: [{
						id: "4396818",
						values: [{
							value: "89457898713",
							enum: "WORK"
						}]
					},
					{
						id: "4396819",
						values: [{
							value: "email@email.com",
							enum: "WORK"
						}]
					},
					{
						id: "4400115",
						values: [{
								value: "ул. Ленина, д. 1",
								subtype: "address_line_1"
							},
							{
								value: "Кострома",
								subtype: "city"
							},
							{
								value: "156000",
								subtype: "zip"
							},
							{
								value: "RU",
								subtype: "country"
							}
						]
					}
				],
				responsible_user_id: "504141",
				date_create: "1509483600"
			}],
			companies: [{
				name: "ОАО Коспромсервис"
			}]
		},
		incoming_lead_info: {
			to: "41565",
			from: "89456153101",
			date_call: "1509483600",
			duration: "54",
			link: "https://www.example.com/records/2017/11/01/98431.mp3",
			service_code: "CkKwPam6",
			uniq: "a1fee7c0fc436088e64ba2e8822ba2b3ewrw",
			add_note: "Договорились о сотрудничестве"
		}
	}]
}

В предпросмотре карточки заявки (полученной через веб-форму) в неразобранном отображается информация полученная из массивов сущностей (add/incoming_entities). При этом стоит учитывать существующий приоритет получения информации из этих массивов по типу сущности.

Приоритет типов сущностей, для отображения информации в карточке заявки:

  1. Контакт
  2. Сделка
  3. Покупатель

Для отображения в карточке заявки, берётся следующая информация.

  • Название элемента сущности
  • Теги
  • Дополнительные поля и их значения

Добавление заявки из веб-формы (form):

URL метода

POST /api/v2/incoming_leads/form

При добавлении из веб-формы минимальное количество полей 3

  • add/created_at
  • add/incoming_lead_info/form_id
  • add/incoming_lead_info/form_page

Параметры для веб-формы:

Параметр Тип Описание
add/created_at
require
timestamp Дата создания
add/incoming_lead_info/form_id
require
int Идентификатор формы. Эта строка строго не регламентирована, для вашего удобства можете передать ваш внутренний id.
add/incoming_lead_info/form_page
require
string Адрес страницы, на котором расположена форма
add/incoming_lead_info/ip string IP адрес, с которого поступила заявка
add/incoming_lead_info/service_code string Код виджета или сервиса. Эта строка строго не регламентирована, но просим заполнять ее читаемым кодом, чтобы было ясно от какого поставщика пришла данная заявка. К примеру, можно использовать код виджета, «formstack», «googleforms» и т.д..
add/incoming_lead_info/form_name string Название формы
add/incoming_lead_info/form_send_at timestamp Дата и время отправки данных через форму
add/incoming_lead_info/referer string Параметр содержит информацию откуда был переход на страницу, где расположена форма.

Пример запроса


{
	add: [{
		source_name: "ОАО Коспромсервис",
		source_uid: "a1fee7c0fc436088e64ba2e8822ba2b3",
		pipeline_id: "41563",
		incoming_entities: {
			leads: [{
				name: "Техническое обслуживание перфораторов",
				created_at: "1509483600",
				status_id: "13667502",
				responsible_user_id: "504141",
				sale: "45000",
				tags: "ТО, услуги",
				notes: [{
					note_type: "7",
					element_type: "lead",
					text: "Отправить счёт оплаты"
				}],
				custom_fields: [{
					id: "4399917",
					values: [
						"3692247",
						"3692248"
					]
				}]
			}],
			contacts: [{
				name: "Игорь Владимирович Иванов",
				custom_fields: [{
						id: "4396818",
						values: [{
							value: "89451456510",
							enum: "WORK"
						}]
					},
					{
						id: "4396819",
						values: [{
							value: "email@email.com",
							enum: "WORK"
						}]
					},
					{
						id: "4400115",
						values: [{
								value: "ул. Ленина, д. 1",
								subtype: "address_line_1"
							},
							{
								value: "Кострома",
								subtype: "city"
							},
							{
								value: "156000",
								subtype: "zip"
							},
							{
								value: "RU",
								subtype: "country"
							}
						]
					}
				],
				responsible_user_id: "504141",
				created_at: "1509483600"
			}],
			companies: [{
				name: "ОАО Коспромсервис"
			}]
		},
		incoming_lead_info: {
			form_id: "159783",
			form_page: "example.com",
			ip: "127.0.0.1",
			service_code: "QkKwSam8",
			form_name: "Оставить заявку",
			form_send_at: "1509483600",
			referer: http: //example.com/index.php?ref=103719
		}
	}]
}

Параметры ответа

Параметр Тип Описание
status string Статус добавления, success или fail
data array Массив, содержащий уникальные идентификаторы добавленных заявок в неразобранное
_links array Массив, содержащий информацию о запросе
_links/self array Массив, содержащий информацию о текущем запросе
_links/self/href string Относительный URL текущего запроса
_links/self/method string Метод текущего запроса
error string Описание причины ошибки. Передаётся только при возникновении ошибки.
error_code int Код ошибки

Параметры ответа


{
	status: "success",
	data: {
		"561a8a8b7d7a8cbc440965903605a27685a9ec37317bc395636a481e31f7"
	},
	_links: {
		self: {
			href: "/api/v2/incoming_leads/form?login=example@example.com&api_key=24db154826a13a988893be1da61",
			method: "post"
		}
	}
}

Пример интеграции


/* Для начала нам необходимо инициализировать данные, необходимые для составления запроса. */
$data = array(
    'add' => array(
        0 => array(
            'source_name' => 'ОАО Коспромсервис',
            'source_uid' => 'a1fee7c0fc436088e64ba2e8822ba2b3',
            'pipeline_id' => '41563',
            'created_at' => '1509483600',
            'incoming_entities' => array(
                'leads' => array(
                    0 => array(
                        'name' => 'Техническое обслуживание бензопил',
                        'created_at' => '1509483600',
                        'status_id' => '13667502',
                        'responsible_user_id' => '504141',
                        'price' => '83000',
                        'tags' => 'ТО, услуги',
                        'custom_fields' => array(
                            0 => array(
                                'id' => '4399917',
                                'values' => array(
                                    0 => '3692247',
                                    1 => '3692248',
                                ),
                            ),
                            1 => array(
                                'id' => '4399923',
                                'values' => array(
                                    0 => array(
                                        'value' => 'ул. Ленина, д. 1',
                                        'subtype' => 'address_line_1',
                                    ),
                                    1 => array(
                                        'value' => 'Кострома',
                                        'subtype' => 'city',
                                    ),
                                    2 => array(
                                        'value' => '156000',
                                        'subtype' => 'zip',
                                    ),
                                    3 => array(
                                        'value' => 'RU',
                                        'subtype' => 'country',
                                    ),
                                ),
                            ),
                        ),
                    ),
                ),
                'contacts' => array(
                    0 => array(
                        'name' => 'Александр Петрович Смирнов',
                        'custom_fields' => array(
                            0 => array(
                                'id' => '4396818',
                                'values' => array(
                                    0 => array(
                                        'value' => '89457898713',
                                        'enum' => 'WORK',
                                    ),
                                ),
                            ),
                            1 => array(
                                'id' => '4396819',
                                'values' => array(
                                    0 => array(
                                        'value' => 'email@email.com',
                                        'enum' => 'WORK',
                                    ),
                                ),
                            ),
                        ),
                        'responsible_user_id' => '504141',
                    ),
                ),
                'companies' => array(
                    0 => array(
                        'name' => 'ОАО Коспромсервис',
                    ),
                ),
            ),
            'incoming_lead_info' => array(
                'to' => '41565',
                'from' => '89456153101',
                'date_call' => '1509483600',
                'duration' => '56',
                'link' => 'https://www.example.com/records/2017/11/01/98431.mp3',
                'service_code' => 'CkKwPam6',
                'uniq' => 'a1fee7c0fc436088e64ba2e8822ba2b3ewrw',
                'add_note' => 'Отправить дубликат договора',
            ),
        ),
    ),
);
$subdomain = 'test'; #Наш аккаунт - поддомен
#Формируем ссылку для запроса
$link = 'https://' . $subdomain . '.amocrm.ru/api/v2/incoming_leads/sip';
/* Заметим, что в ссылке можно передавать и другие параметры, которые влияют на выходной результат (смотрите
документацию).
Следовательно, мы можем заменить ссылку, приведённую выше на одну из следующих, либо скомбинировать параметры так, как Вам
необходимо. */
$link = 'https://' . $subdomain . '.amocrm.ru/api/v2/incoming_leads/sip?api_key=' . $api_key . '&login=' . $login;
/* Нам необходимо инициировать запрос к серверу. Воспользуемся библиотекой cURL (поставляется в составе PHP). Подробнее о
работе с этой
библиотекой Вы можете прочитать в мануале. */
$curl = curl_init(); #Сохраняем дескриптор сеанса cURL
#Устанавливаем необходимые опции для сеанса cURL
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, 'amoCRM-API-client/1.0');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Accept: application/json']);
curl_setopt($curl, CURLOPT_URL, $link);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
$out = curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
/* Теперь мы можем обработать ответ, полученный от сервера. Это пример. Вы можете обработать данные своим способом. */
$code = (int) $code;
$errors = array(
    301 => 'Moved permanently',
    400 => 'Bad request',
    401 => 'Unauthorized',
    403 => 'Forbidden',
    404 => 'Not found',
    500 => 'Internal server error',
    502 => 'Bad gateway',
    503 => 'Service unavailable',
);
try
{
    #Если код ответа не равен 200, 201 или 204 - возвращаем сообщение об ошибке
    if (!in_array($code, [200, 201, 204])) {
        throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undescribed error', $code);
    }

} catch (Exception $E) {
    die('Ошибка: ' . $E->getMessage() . PHP_EOL . 'Код ошибки: ' . $E->getCode());
}
/*
Данные получаем в формате JSON, поэтому, для получения читаемых данных,
нам придётся перевести ответ в формат, понятный PHP
 */
$Response = json_decode($out, true);
$Response = $Response['data'];

Так как все перечисленные поля возвращаются методом api/v2/incoming_leads?….. , который описан ниже, вы можете использовать свою логику с участием этих параметров.

Определение неразобранного как Дубль

Если при повторном запросе к следующим методам API, на создание неразобранного в одном аккаунте, данные поля останутся без изменений, система отдаст ответ о существовании данного неразобранного и определит его как дубль

URL метода

POST /api/v2/incoming_leads/sip

Параметры

Параметр Описание
add/incoming_lead_info/to Кому звонок
add/incoming_lead_info/from От кого звонок
add/incoming_lead_info/duration Продолжительность звонка
add/incoming_lead_info/date_call  Дата звонка
add/incoming_lead_info/service_code  Код сервиса
URL метода

POST /api/v2/incoming_leads/form

Параметры

Параметр Описание
add/incoming_lead_info/form_id ID формы
add/incoming_lead_info/created_at Дата создания
add/incoming_lead_info/form_page Адрес сайта

Принятие неразобранных заявок

Метод для принятия неразобранных заявок.

URL метода

POST /api/v2/incoming_leads/accept

Параметры

Параметр Тип Описание
accept array(string) Массив уникальных идентификаторов (uid) неразобранных заявок
user_id int id пользователя аккаунта, от имени которого будут созданы сделки/контакты/компании
status_id int Статус сделок, которые будут созданы в результате принятия неразобранного

Пример запроса


{
	accept: [
		"6d054b50e0769b0d8bdaed73901e6a544ba329aa1d0d2f0d25fde025398e",
		"56df4sg6dfs5g1f56bdaed65498e6asd56f4ds65f4SDds6f54sd65f4d89q"
	],
	user_id: "504141",
	status_id: "142"
}

Параметры ответа

Параметр Тип Описание
status string Статус добавления, success или fail
data array Массив, содержащий уникальные идентификаторы добавленных заявок в неразобранное
data//companies array Массив, содержащий id созданной компании
data//leads array Массив, содержащий id созданных сделок
data//contacts array Массив, содержащий id созданных контактов
_links array Массив, содержащий информацию о запросе
_links/self array Массив, содержащий информацию о текущем запросе
_links/self/href string Относительный URL текущего запроса
_links/self/method string Метод текущего запроса
error string Описание причины ошибки. Передаётся только при возникновении ошибки.

Response Headeres содержит следующие заголовки:

  • Content-Type:application/hal+json
  • Runtime-Timestamp:1508320306

Пример ответа


{
	status: "success",
	data: {
		561 a8a8b7d7a8cbc440965903605a27685a9ec37317bc395636a481e31f7: {
			companies: [
				1099388
			],
			leads: [
				1090596
			],
			contacts: [
				1099389
			]
		}
	},
	_links: {
		self: {
			href: "/api/v2/incoming_leads/accept?login=dhnikolas2@gmail.com&api_key=24dbfd65b23ff2ea13a988893be1da61",
			method: "post"
		}
	}
}

Для принятия неразобранного необходимо описать массив, содержащий идентификаторы заявок. Также необходимо указать id пользователя, как элемент массива $data. Имеется возможность указать статус результирующей сделки.

Пример интеграции:


$data = array(
    'accept' => array(
        '6d054b50e0769b0d8bdaed73901e6a544ba329aa1d0d2f0d25fde025398e',
        '56df4sg6dfs5g1f56bdaed65498e6asd56f4ds65f4SDds6f54sd65f4d89q',
    ),
    'user_id' => 102525,
    'status_id' => 1023486,
);
$subdomain = 'test'; #Наш аккаунт - поддомен
#Формируем ссылку для запроса
$link = 'https://' . $subdomain . '.amocrm.ru/api/v2/incoming_leads/accept/';
/* Заметим, что в ссылке можно передавать и другие параметры, которые влияют на выходной результат (смотрите
документацию).
Следовательно, мы можем заменить ссылку, приведённую выше на одну из следующих, либо скомбинировать параметры так, как Вам
необходимо. */
$link = 'https://' . $subdomain . '.amocrm.ru/api/v2/incoming_leads/accept?api_key=' . $api_key . '&login=' . $login;
/* Нам необходимо инициировать запрос к серверу. Воспользуемся библиотекой cURL (поставляется в составе PHP). Подробнее о
работе с этой
библиотекой Вы можете прочитать в мануале. */
$curl = curl_init(); #Сохраняем дескриптор сеанса cURL
#Устанавливаем необходимые опции для сеанса cURL
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, 'amoCRM-API-client/1.0');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Accept: application/json']);
curl_setopt($curl, CURLOPT_URL, $link);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
$out = curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
/* Теперь мы можем обработать ответ, полученный от сервера. Это пример. Вы можете обработать данные своим способом. */
$code = (int) $code;
$errors = array(
    301 => 'Moved permanently',
    400 => 'Bad request',
    401 => 'Unauthorized',
    403 => 'Forbidden',
    404 => 'Not found',
    500 => 'Internal server error',
    502 => 'Bad gateway',
    503 => 'Service unavailable',
);
try
{
    #Если код ответа не равен 200, 201 или 204 - возвращаем сообщение об ошибке
    if (!in_array($code, [200, 201, 204])) {
        throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undescribed error', $code);
    }

} catch (Exception $E) {
    die('Ошибка: ' . $E->getMessage() . PHP_EOL . 'Код ошибки: ' . $E->getCode());
}

Отклонение неразобранных заявок

Метод для отклонения неразобранных заявок.

URL метода

POST /api/v2/incoming_leads/decline

Параметры

Параметр Тип Описание
decline array Массив уникальных идентификаторов (uid) неразобранных заявок
user_id int id пользователя, от чьего имени будет отклонена заявка

Пример запроса


{
	decline: [
		"6d054b50e0769b0d8bdaed73901e6a544ba329aa1d0d2f0d25fde025398e",
		"56df4sg6dfs5g1f56bdaed65498e6asd56f4ds65f4SDds6f54sd65f4d89q"
	],
	user_id: "504141"
}

Параметры ответа:

Параметр Тип Описание
status string Статус добавления, success или fail
data array Массив, содержащий уникальные идентификаторы заявок в неразобранном
_links array Массив, содержащий информацию о запросе
_links/self array Массив, содержащий информацию о текущем запросе
_links/self/href string Относительный URL текущего запроса
_links/self/method string Метод текущего запроса
error string Описание причины ошибки. Передаётся только при возникновении ошибки.

Response Headeres содержит следующие заголовки:

  • Content-Type:application/hal+json
  • Runtime-Timestamp:1508320306

Пример ответа


{
	status: "success",
	data: {
		86 c4ff85844722b75fcd0bed7b6fe0ac099a3a1e20e70823dcd634fc8e69: false
	},
	_links: {
		self: {
			href: "/api/v2/incoming_leads/decline?login=example@example.com&api_key=7d4cebf7b176a2c3dc84b365eea7e1260af",
			method: "post"
		}
	}
}

Для отклонения неразобранного необходимо описать массив, содержащий идентафикаторы заявок. Также необходимо указать id пользователя.

Пример интеграции


$data = array(
    'decline' => array(
        '6d054b50e0769b0d8bdaed73901e6a544ba329aa1d0d2f0d25fde025398e',
        '56df4sg6dfs5g1f56bdaed65498e6asd56f4ds65f4SDds6f54sd65f4d89q',
    ),
    'user_id' => 102525,
);
$subdomain = 'test'; #Наш аккаунт - поддомен
#Формируем ссылку для запроса
$link = 'https://' . $subdomain . '.amocrm.ru/api/v2/incoming_leads/decline';
/* Заметим, что в ссылке можно передавать и другие параметры, которые влияют на выходной результат (смотрите
документацию).
Следовательно, мы можем заменить ссылку, приведённую выше на одну из следующих, либо скомбинировать параметры так, как Вам
необходимо. */
$link = 'https://' . $subdomain . '.amocrm.ru/api/v2/incoming_leads/decline?api_key=' . $api_key . '&login=' . $login;
/* Нам необходимо инициировать запрос к серверу. Воспользуемся библиотекой cURL (поставляется в составе PHP). Подробнее о
работе с этой
библиотекой Вы можете прочитать в мануале. */
$curl = curl_init(); #Сохраняем дескриптор сеанса cURL
#Устанавливаем необходимые опции для сеанса cURL
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, 'amoCRM-API-client/1.0');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Accept: application/json']);
curl_setopt($curl, CURLOPT_URL, $link);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
$out = curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
/* Теперь мы можем обработать ответ, полученный от сервера. Это пример. Вы можете обработать данные своим способом. */
$code = (int) $code;
$errors = array(
    301 => 'Moved permanently',
    400 => 'Bad request',
    401 => 'Unauthorized',
    403 => 'Forbidden',
    404 => 'Not found',
    500 => 'Internal server error',
    502 => 'Bad gateway',
    503 => 'Service unavailable',
);
try
{
    #Если код ответа не равен 200, 201 или 204 - возвращаем сообщение об ошибке
    if (!in_array($code, [200, 201, 204])) {
        throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undescribed error', $code);
    }

} catch (Exception $E) {
    die('Ошибка: ' . $E->getMessage() . PHP_EOL . 'Код ошибки: ' . $E->getCode());
}

Список неразобранных заявок

Метод для получения списка неразобранных заявок с возможностью фильтрации и постраничной выборки. Ограничение по возвращаемым на одной странице (offset) данным – 500 заявок.

URL метода

GET /api/v2/incoming_leads

Параметры запроса

Параметр Описание
page_size Кол-во выбираемых строк (системное ограничение 500)
page Страница выборки
categories Массив, содержащий в себе категории, по которым необходима выборка (sip, mail, forms, chats)
order_by Массив из одного элемента. Ключ – поле для сортировки (created_at, например), значение (asc, desc) – направление сортировки
pipeline_id Идентификатор воронки из которой необходимо сделать выборку

Параметры ответа

Параметр Тип Описание
_embedded array Массив, содержащий информацию прилегающую к запросу
_embedded/items array Массив, содержащий информацию по каждому отдельному элементу
source_name
require
string Название источника заявки
uid
require
string Уникальный идентификатор заявки
created_at timestamp Дата и время создания заявки
category string Категория заявки – sip, mail, forms, chats
incoming_entities/leads array Массив, содержащий информацию для создания новой сделки. Может содержать все параметры и дополнительные поля доступные “Сделкам” на аккаунте.
incoming_entities/contacts array Массив, содержащий информацию для создания нового контакта. Может содержать все параметры и дополнительные поля доступные “Контактам” на аккаунте.
incoming_entities/companies array Массив, содержащий информацию для создания новой компании. Может содержать все параметры и дополнительные поля доступные “Компаниям” на аккаунте.
incoming_lead_info/to int Идентификатор пользователя, который принял звонок
incoming_lead_info/from string Внешний номер телефона
incoming_lead_info/date timestamp Дата и время звонка
incoming_lead_info/duration int Продолжительность звонка
incoming_lead_info/link string Ссылка на запись звонка
incoming_lead_info/service_code string Код виджета или сервиса, через который был совершён звонок
incoming_lead_info/form_id int Идентификатор формы
incoming_lead_info/form_page string Адрес страницы, на котором расположена форма
incoming_lead_info/ip string IP адрес, на котором расположена форма
incoming_lead_info/form_name string Название формы
incoming_lead_info/form_send_at timestamp Дата и время отправки данных через форму
incoming_lead_info/referer string Параметр содержит информацию откуда был переход на страницу, где расположена форма.
_links array Массив, содержащий информацию о запросе
_links/self array Массив, содержащий информацию о текущем запросе
_links/self/href string Относительный URL текущего запроса
_links/self/method string Метод текущего запроса

Response Headeres содержит следующие заголовки:

  • Content-Type:application/hal+json
  • Runtime-Timestamp:1508320306

Пример ответа


{
	_links: {
		self: {
			href: "/api/v2/incoming_leads?login=name@team.amocrm.com&api_key=xxxxxx",
			method: "get"
		}
	},
	_embedded: {
		items: [{
				category: "sip",
				uid: "86c4ff85844722b75fcd74699b5a1ce474f7f73e272395b301ca87b36a33",
				source_name: "686",
				created_at: 1509609502,
				incoming_lead_info: {
					from: "15315",
					to: "8152",
					date: 1509570000,
					duration: "50",
					link: "example.com",
					service_code: "CkKwPam6"
				},
				incoming_entities: {
					leads: [{
						name: "Сделка"
					}]
				}
			},
			{
				category: "form",
				uid: "3b89a37ee72c329753750d9c3b7613a96aefa88e7d6065e383986e353d17",
				source_name: "eterdgf",
				created_at: 1509610029,
				incoming_lead_info: {
					form_id: "154613",
					form_name: "Заявка",
					form_page: "example.com",
					ip: "48221",
					form_send_at: 1509610030,
					referer: null
				},
				incoming_entities: {
					leads: [{
						name: "Сделка",
						custom_fields: [{
							id: 4399916,
							values: [{
								value: "3692245"
							}],
							is_system: false
						}]
					}]
				}
			}
		]
	}
}

Пример интеграции


/* Для начала нам необходимо инициализировать данные, необходимые для составления запроса. */
$subdomain = 'test'; #Наш аккаунт - поддомен
#Формируем ссылку для запроса
$link = 'https://' . $subdomain . '.amocrm.ru/api/v2/incoming_leads';
/* Заметим, что в ссылке можно передавать и другие параметры, которые влияют на выходной результат (смотрите
документацию).
Следовательно, мы можем заменить ссылку, приведённую выше на одну из следующих, либо скомбинировать параметры так, как Вам
необходимо. */
$link = 'https://' . $subdomain . '.amocrm.ru/api/v2/incoming_leads?api_key=' . $api_key . '&login=' . $login . '&page_size=15';
/* Нам необходимо инициировать запрос к серверу. Воспользуемся библиотекой cURL (поставляется в составе PHP). Подробнее о
работе с этой
библиотекой Вы можете прочитать в мануале. */
$curl = curl_init(); #Сохраняем дескриптор сеанса cURL
#Устанавливаем необходимые опции для сеанса cURL
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, 'amoCRM-API-client/1.0');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Accept: application/json']);
curl_setopt($curl, CURLOPT_URL, $link);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
$out = curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
/* Теперь мы можем обработать ответ, полученный от сервера. Это пример. Вы можете обработать данные своим способом. */
$code = (int) $code;
$errors = array(
    301 => 'Moved permanently',
    400 => 'Bad request',
    401 => 'Unauthorized',
    403 => 'Forbidden',
    404 => 'Not found',
    500 => 'Internal server error',
    502 => 'Bad gateway',
    503 => 'Service unavailable',
);
try
{
    #Если код ответа не равен 200 или 204 - возвращаем сообщение об ошибке
    if ($code != 200 && $code != 204) {
        throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undescribed error', $code);
    }

} catch (Exception $E) {
    die('Ошибка: ' . $E->getMessage() . PHP_EOL . 'Код ошибки: ' . $E->getCode());
}

Сводная информация о неразобранных заявках

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

URL метода

GET /api/v2/incoming_leads/summary

Параметры запроса

Параметр Тип Описание
data/filter/date/from timestamp Начальная дата
data/filter/date/to timestamp Конечная дата

Параметры ответа

Параметр Тип Описание
sip int Количество неразобранных заявок полученных через входящие звонки
forms int Количество неразобранных заявок полученных через веб-формы
mail int Количество неразобранных заявок полученных через почту
chat int Количество неразобранных заявок полученных через чаты
total int Общее количество неразобранных заявок
avg_time timestamp Среднее время разбора заявки в секундах
>accepted int Общее количество принятых заявок
_links array Массив, содержащий информацию о запросе
_links/self array Массив, содержащий информацию о текущем запросе
_links/self/href string Относительный URL текущего запроса
_links/self/method string Метод текущего запроса

Response Headeres содержит следующие заголовки:

  • Content-Type:application/hal+json
  • Runtime-Timestamp:1508320306

Пример ответа


{
	sip: 34,
	mail: 43,
	form: 33,
	chat: 0,
	total: 110,
	avg_time: 1204101653,
	accepted: 45,
	_links: {
		self: {
			href: "/api/v2/incoming_leads/summary?login=example@example.com&api_key=24dbfd65b23ff2ea13a988893be1da61",
			method: "get"
		}
	}
}

Пример интеграции:


$subdomain = 'test'; #Наш аккаунт - поддомен
#Формируем ссылку для запроса
$link = 'https://' . $subdomain . '.amocrm.ru/api/v2/incoming_leads/summary/';
/* Заметим, что в ссылке можно передавать и другие параметры, которые влияют на выходной результат (смотрите
документацию).
Следовательно, мы можем заменить ссылку, приведённую выше на одну из следующих, либо скомбинировать параметры так, как Вам
необходимо. */
$link = 'https://' . $subdomain . '.amocrm.ru/api/v2/incoming_leads/summary?api_key=' . $api_key . '&login=' . $login;
/* Нам необходимо инициировать запрос к серверу. Воспользуемся библиотекой cURL (поставляется в составе PHP). Подробнее о
работе с этой
библиотекой Вы можете прочитать в мануале. */
$curl = curl_init(); #Сохраняем дескриптор сеанса cURL
#Устанавливаем необходимые опции для сеанса cURL
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_USERAGENT, 'amoCRM-API-client/1.0');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Accept: application/json']);
curl_setopt($curl, CURLOPT_URL, $link);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
$out = curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
/* Теперь мы можем обработать ответ, полученный от сервера. Это пример. Вы можете обработать данные своим способом. */
$code = (int) $code;
$errors = array(
    301 => 'Moved permanently',
    400 => 'Bad request',
    401 => 'Unauthorized',
    403 => 'Forbidden',
    404 => 'Not found',
    500 => 'Internal server error',
    502 => 'Bad gateway',
    503 => 'Service unavailable',
);
try
{
    #Если код ответа не равен 200 или 204 - возвращаем сообщение об ошибке
    if ($code != 200 && $code != 204) {
        throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undescribed error', $code);
    }

} catch (Exception $E) {
    die('Ошибка: ' . $E->getMessage() . PHP_EOL . 'Код ошибки: ' . $E->getCode());
}