Amocrm api добавление сделки
Для добавления сделки через API amoCRM необходимо, обратиться к методу POST leads/set в документации и в массиве данных отправить
$leads[‘request’][‘leads’][‘add’] . В самом массиве нам потребуется связать сделку с добавленным контактом, который инициировал обращение.
Но, перед этим, нам необходимо авторизоваться в API AMOCRM, для это нужно знать свой логин в системе и хеш-авторизации, который находится в настройках профиля.
Авторизация
Далее мы формируем запрос к API для авторизации
Далее сам процесс создания сделки в AMO CRM из данных с формы нашего сайта. (В нашем случае сайт был на CMS ModX, но принципиальной разницы от выбранной CMS нет).
И далее снова запрос к API как и показано было выше, только теперь обращаемся к скрипту сделок
Последний шаг, это создание контакта и связывание его со сделкой, чтобы в личном кабинете, при поступлении заявки, сразу формировался новый контакт из данных формы и задача в сделках была связанна с этим контактом.
И далее снова запрос к API AmoCRM к скрипту добавление контактов
При создании в AMO после заявки с формы сразу сущности leads с заполненными полями для API версии 2.0, у которого немного изменилась структура массива, который отправляется в CURL, запрос надо видоизменить
Если вы не поняли всё равно в итоге, как добавлять сделку в Amo CRM, то мы можем помочь вам в интеграции форм AMOCRM и автоматизировать добавление сделки в личный кабинет AmoCRM с вашего сайта.
Стоимость интеграции
Последние события
Управление проектами — правильный путь для начинающих. Новая книга Петра Дикого
27.08.2019
Создание новостного портала Науки и Техники
Клиенту был нужен новостной блог под рекламу и продвижение продукта, мы быстро и профессионально организовали сайт Science & Tech.
Привет, друзья, выкладываю библиотеку, которую сам использую в своей работе, она очень простая, умещается в одном файле, легкая и понятная. Позволяет копировать примеры запросов из документации по api AmoCRM прямо в ваш код и сразу же запускать.
В ней есть метод авторизации, метод запросов, свойство авторизован или нет и служебный метод для вывода дампа с форматированием.
Рабочий пример авторизации в апи AmoCRM и запрос на последние сделки по api.
require_once(‘hamtim-amocrm.php’);
$amo = new HamtimAmocrm(‘test@email.com’/*логин*/, ‘API’/*api ключ*/, ‘SUBDOMAIN’/*субдомен*/);
if(!$amo->auth) die(‘Нет соединения с amoCRM’);
//все примеры запросов на https://developers.amocrm.ru/rest_api/
//получаем список сделок в работе
$path = ‘/private/api/v2/json/leads/list’;
//формируем дату -1 день
$ifModifiedSince = date(‘D, d M Y H:i:s’, (time()-1*24*3600));
//если передается пустой массив fields, то данные post не передаются в заголовке запроса
$fields = array();
//делаем запрос
$leads = $amo->q($path, $fields, $ifModifiedSince);
if(!$leads) die(‘Сделок в работе не найдено’);
//выводим дамп с сделками из ответа
print_r($leads);
Как видите достаточно сложный запрос легко сделать с помощью моей библиотеки.
Создание сделки с помощью api AmoCRM
//создаем новую сделку
$path = ‘/private/api/v2/json/leads/set’;
$fields[‘request’][‘leads’][‘add’]=array(
array(
‘name’=>’Название сделки’,
‘status_id’=>12345,#id статуса, обязательное поле
//’responsible_user_id’=>12345,#id Отвественного
‘tags’ => ‘создано с помощью hamtim.ru’, #Теги
)
);
$leadAnswer = $amo->q($path, $fields);
Как работать с библиотекой (по шагам)
- Подключаем с помощью require или include
- Создаем объект с параметрами авторизации $amo = new HamtimAmocrm(‘test@email.com’/*логин*/, ‘API’/*api ключ*/, ‘SUBDOMAIN’/*субдомен*/);
- Авторизуемся
if(!$amo->auth) die(‘Нет соединения с amoCRM’); - Делаем запросы к aпи амоцрм
Вопросы, предложения и благодарности пишите в комментариях.
Нужна разработка? Свяжитесь со мной.
// amo |
// ПРЕДОПРЕДЕЛЯЕМЫЕ ПЕРЕМЕННЫЕ |
$responsible_user_id = 7292136 ; // id ответственного по сделке, контакту, компании |
$lead_name = ‘ Заявка с сайта ‘ ; // Название добавляемой сделки |
$lead_status_id = ‘ 11331793 ‘ ; // id этапа продаж, куда помещать сделку |
$contact_name = $cname ; // Название добавляемого контакта |
$contact_phone = $cphone ; // Телефон контакта |
$contact_email = $cemail ; // Емейл контакта |
// АВТОРИЗАЦИЯ |
$user = array ( |
‘ USER_LOGIN ‘ => ‘ ### ‘ , # Ваш логин (электронная почта) |
‘ USER_HASH ‘ => ‘ ### ‘ # Хэш для доступа к API (смотрите в профиле пользователя) |
); |
$subdomain = ‘ ### ‘ ; |
# Формируем ссылку для запроса |
$link = ‘ https:// ‘ . $subdomain . ‘ .amocrm.ru/private/api/auth.php?type=json ‘ ; |
$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_URL , $link ); |
curl_setopt ( $curl , CURLOPT_POST , true ); |
curl_setopt ( $curl , CURLOPT_POSTFIELDS , http_build_query ( $user )); |
curl_setopt ( $curl , CURLOPT_HEADER , false ); |
curl_setopt ( $curl , CURLOPT_COOKIEFILE , dirname ( __FILE__ ) . ‘ /cookie.txt ‘ ); # PHP>5.3.6 dirname(__FILE__) -> __DIR__ |
curl_setopt ( $curl , CURLOPT_COOKIEJAR , dirname ( __FILE__ ) . ‘ /cookie.txt ‘ ); # PHP>5.3.6 dirname(__FILE__) -> __DIR__ |
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 ); # Получим HTTP-код ответа сервера |
curl_close ( $curl ); # Завершаем сеанс cURL |
$Response = json_decode ( $out , true ); |
// echo ‘Авторизация:‘; echo »; |
// ПОЛУЧАЕМ ДАННЫЕ АККАУНТА |
$link = ‘ https:// ‘ . $subdomain . ‘ .amocrm.ru/private/api/v2/json/accounts/current ‘ ; # $subdomain уже объявляли выше |
$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_URL , $link ); |
curl_setopt ( $curl , CURLOPT_HEADER , false ); |
curl_setopt ( $curl , CURLOPT_COOKIEFILE , dirname ( __FILE__ ) . ‘ /cookie.txt ‘ ); # PHP>5.3.6 dirname(__FILE__) -> __DIR__ |
curl_setopt ( $curl , CURLOPT_COOKIEJAR , dirname ( __FILE__ ) . ‘ /cookie.txt ‘ ); # PHP>5.3.6 dirname(__FILE__) -> __DIR__ |
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 ); |
$Response = json_decode ( $out , true ); |
$account = $Response [ ‘ response ‘ ][ ‘ account ‘ ]; |
// echo ‘Данные аккаунта:‘; echo »; |
// ПОЛУЧАЕМ СУЩЕСТВУЮЩИЕ ПОЛЯ |
$amoAllFields = $account [ ‘ custom_fields ‘ ]; // Все поля |
$amoConactsFields = $account [ ‘ custom_fields ‘ ][ ‘ contacts ‘ ]; // Поля контактов |
// echo ‘Поля из амо:‘; echo »; |
// ФОРМИРУЕМ МАССИВ С ЗАПОЛНЕННЫМИ ПОЛЯМИ КОНТАКТА |
// Стандартные поля амо: |
$sFields = array_flip ( array ( |
‘ PHONE ‘ , // Телефон. Варианты: WORK, WORKDD, MOB, FAX, HOME, OTHER |
‘ EMAIL ‘ // Email. Варианты: WORK, PRIV, OTHER |
) |
); |
// Проставляем id этих полей из базы амо |
foreach ( $amoConactsFields as $afield ) < |
if ( isset ( $sFields [ $afield [ ‘ code ‘ ]])) < |
$sFields [ $afield [ ‘ code ‘ ]] = $afield [ ‘ >’ ]; |
> |
> |
// ДОБАВЛЯЕМ СДЕЛКУ |
$leads [ ‘ request ‘ ][ ‘ leads ‘ ][ ‘ add ‘ ] = array ( |
array ( |
‘ name ‘ => $lead_name , |
‘ status_ >’ => $lead_status_id , // id статуса |
‘ responsible_user_ >’ => $responsible_user_id , // id ответственного по сделке |
// ‘date_create’=>1298904164, //optional |
// ‘price’=>300000, |
// ‘tags’ => ‘Important, USA’, #Теги |
// ‘custom_fields’=>array() |
) |
); |
$link = ‘ https:// ‘ . $subdomain . ‘ .amocrm.ru/private/api/v2/json/leads/set ‘ ; |
$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_URL , $link ); |
curl_setopt ( $curl , CURLOPT_CUSTOMREQUEST , ‘ POST ‘ ); |
curl_setopt ( $curl , CURLOPT_POSTFIELDS , json_encode ( $leads )); |
curl_setopt ( $curl , CURLOPT_HTTPHEADER , array ( ‘ Content-Type: application/json ‘ )); |
curl_setopt ( $curl , CURLOPT_HEADER , false ); |
curl_setopt ( $curl , CURLOPT_COOKIEFILE , dirname ( __FILE__ ) . ‘ /cookie.txt ‘ ); # PHP>5.3.6 dirname(__FILE__) -> __DIR__ |
curl_setopt ( $curl , CURLOPT_COOKIEJAR , dirname ( __FILE__ ) . ‘ /cookie.txt ‘ ); # PHP>5.3.6 dirname(__FILE__) -> __DIR__ |
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 ); |
$Response = json_decode ( $out , true ); |
// echo ‘Новая сделка:‘; echo »; |
if ( is_array ( $Response [ ‘ response ‘ ][ ‘ leads ‘ ][ ‘ add ‘ ])) |
foreach ( $Response [ ‘ response ‘ ][ ‘ leads ‘ ][ ‘ add ‘ ] as $lead ) < |
$lead_id = $lead [ " >" ]; // id новой сделки |
>; |
// ДОБАВЛЯЕМ СДЕЛКУ — КОНЕЦ |
// ДОБАВЛЕНИЕ КОНТАКТА |
$contact = array ( |
‘ name ‘ => $contact_name , |
‘ linked_leads_ >’ => array ( $lead_id ), // id сделки |
‘ responsible_user_ >’ => $responsible_user_id , // id ответственного |
‘ custom_fields ‘ => array ( |
array ( |
‘ >’ => $sFields [ ‘ PHONE ‘ ], |
‘ values ‘ => array ( |
array ( |
‘ value ‘ => $contact_phone , |
‘ enum ‘ => ‘ MOB ‘ |
) |
) |
), |
array ( |
‘ >’ => $sFields [ ‘ EMAIL ‘ ], |
‘ values ‘ => array ( |
array ( |
‘ value ‘ => $contact_email , |
‘ enum ‘ => ‘ WORK ‘ |
) |
) |
) |
) |
); |
$set [ ‘ request ‘ ][ ‘ contacts ‘ ][ ‘ add ‘ ][] = $contact ; |
# Формируем ссылку для запроса |
$link = ‘ https:// ‘ . $subdomain . ‘ .amocrm.ru/private/api/v2/json/contacts/set ‘ ; |
$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_URL , $link ); |
curl_setopt ( $curl , CURLOPT_CUSTOMREQUEST , ‘ POST ‘ ); |
curl_setopt ( $curl , CURLOPT_POSTFIELDS , json_encode ( $set )); |
curl_setopt ( $curl , CURLOPT_HTTPHEADER , array ( ‘ Content-Type: application/json ‘ )); |
curl_setopt ( $curl , CURLOPT_HEADER , false ); |
curl_setopt ( $curl , CURLOPT_COOKIEFILE , dirname ( __FILE__ ) . ‘ /cookie.txt ‘ ); # PHP>5.3.6 dirname(__FILE__) -> __DIR__ |
curl_setopt ( $curl , CURLOPT_COOKIEJAR , dirname ( __FILE__ ) . ‘ /cookie.txt ‘ ); # PHP>5.3.6 dirname(__FILE__) -> __DIR__ |
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 ); |
CheckCurlResponse( $code ); |
$Response = json_decode ( $out , true ); |
// ДОБАВЛЕНИЕ КОНТАКТА — КОНЕЦ |
// amo |
? > |
This comment has been minimized.
Copy link Quote reply
rustamgaliev commented Mar 31, 2018
а как добавлять сделку в неразобранное?
This comment has been minimized.
Copy link Quote reply
jackillman commented Apr 11, 2018
Можешь подсказать, как сюда добавить переменную "город"?
This comment has been minimized.
Copy link Quote reply
jackillman commented Apr 11, 2018
Очень нужно, помоги пож
This comment has been minimized.
Copy link Quote reply
webag commented Apr 11, 2018
Если раскомментить 68 строку, то в ответ в консоли получим все кастомные поля контакта. отсюда узнаем id нужного поля.
Затем когда формируем массив на создание контакта добавляем новое значение типа того:
‘custom_fields’=>array( array( ‘id’ => $sFields[‘PHONE’], ‘values’ => array( array( ‘value’ => $contact_phone, ‘enum’ => ‘MOB’ ) ) ), array( ‘id’ => $sFields[‘EMAIL’], ‘values’ => array( array( ‘value’ => $contact_email, ‘enum’ => ‘WORK’ ) ) ) , array( ‘id’ => ****ID_НУЖНОГО_ПОЛЯ****, ‘values’ => array( array( ‘value’ => ***Значение из вашей формы или откуда-то еще***, ) ) ) )