Если у вас еще нет amoCRM
Создать прямо сейчасНеразобранное – это системный статус воронки сделок, поэтому к сделкам в этом статусе можно обратиться и через API методы работы со сделками. Изначально неразобранное было в отдельном хранилище и являлось отдельной сущностью именно поэтому до сих пор в интерфейсах amoCRM и в API есть особенности которые отличают поведение сделки в статусе Неразобранное от сделок в других статусах.
Основная задача статуса – накапливать лиды из разных источников и дать простой инструмент их разбора менеджерам. Как можно видеть в интерфейсе в статусе неразобранное присутствует дополнительная фильтрация по источнику:
Отдельной особенностью неразобранного является работа со статусами. Для того, чтобы менеджерам было легче работать с первым статусом, где могут быть как нужные так и не очень сделки, мы предусмотрели два типовых быстрых действия: «Принять», которое приводит к автоматическому переводу сделки в след. этап и «Отклонить», чтобы быстро удалить сделку из воронки. Также именно поэтому в статус неразобранного невозможно вернуть сделку из других этапов. Сделка в статусе неразобранное может быть создана в нем только изначально.
Следующая особенность неразобранного заключается в том, что вместе с данными сделки могут быть переданы данные связанных контакта и компании и некоторых событий. При этом их не будет видно нигде кроме как в самой карточке (к примеру, подобные контакты нельзя будет найти в списках контактов) пока сделка находится в статусе неразобранное. Но как только сделка будет Принята, то сущности автоматически создадутся полноценно. Более подробно о спецификациях можно прочитать ниже.
Метод позволяет добавлять неразобранное по одному или пакетно.
| Параметр | Тип | Описание |
|---|---|---|
| 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 | Массив, содержащий информацию для создания новой компании. Может содержать все параметры и дополнительные поля доступные для компаний для текущего аккаунта. |
POST /api/v2/incoming_leads/sip
Обращаем внимание, что неразобранного типа звонок может быть только входящим, т.к. исходящий звонок всегда инициирован сотрудником компании, т.е. он не нуждается в разборе, а должен сразу быть прикреплен к сделке из рабочих статусов.
При добавлении заявки из входящего звонка минимальное количество полей 4:
| Параметр | Тип | Описание |
|---|---|---|
| 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). При этом стоит учитывать существующий приоритет получения информации из этих массивов по типу сущности.
Приоритет типов сущностей, для отображения информации в карточке заявки:
Для отображения в карточке заявки, берётся следующая информация.
POST /api/v2/incoming_leads/form
При добавлении из веб-формы минимальное количество полей 3
| Параметр | Тип | Описание |
|---|---|---|
| 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, на создание неразобранного в одном аккаунте, данные поля останутся без изменений, система отдаст ответ о существовании данного неразобранного и определит его как дубль
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 | Код сервиса |
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 | Адрес сайта |
Метод для принятия неразобранных заявок.
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 содержит следующие заголовки:
{
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());
}
Метод для отклонения неразобранных заявок.
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 содержит следующие заголовки:
{
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 заявок.
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 содержит следующие заголовки:
{
_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());
}
Метод для получения аггрегированной информации о неразобранных заявках с возможностью фильтрации по дате.
GET /api/v2/incoming_leads/summary
| Параметр | Тип | Описание |
|---|---|---|
| data/filter/date/from | timestamp | Начальная дата |
| data/filter/date/to | timestamp | Конечная дата |
| Параметр | Тип | Описание |
|---|---|---|
| sip | int | Количество неразобранных заявок полученных через входящие звонки |
| forms | int | Количество неразобранных заявок полученных через веб-формы |
| 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 содержит следующие заголовки:
{
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());
}