Интеграция amoCRM с сайтом
Для передачи данных из форм сайта в amoCRM есть 2 способа: первый самый популярный, с помощью конструктора форм в личном кабинете амо и второй интеграция с помощью API.
Первый способ простой, но ограничен лишь настройками в личном кабинете. Второй способ конечно же сложнее, но его можно переделать под себя как угодно. Сегодня рассмотрим пример кода, который создает сделку и связанный с ней контакт в amoCRM.
В коде все важные моменты помечены комментариями, поэтому разобраться не составит труда. Скрипт создает сделку и контакт с передаваемыми ему именем, телефоном и e-mail. В примере эти переменные указываются статично, а на деле вам конечно же надо будет получить их, к примеру из передаваемого запроса методом $_GET
или $_POST
.
Важно правильно указать данные в разделах настройки и подключение. Новости IT, блокчейна и дец. технологий
<? //НАСТРОЙКИ $responsible_user_id = 1234567; //ID ответственного по сделке, контакту, компании $lead_name = 'Заявка с сайта'; //Название добавляемой сделки $lead_status_id = '1234567'; //ID этапа продаж, куда помещать сделку //ДАННЫЕ $contact_name = $cname; //Имя контакта $contact_phone = $cphone; //Телефон контакта $contact_email = $cemail; //E-mail контакта //ПОДКЛЮЧЕНИЕ $user=array( 'USER_LOGIN'=>'###', #Ваш логин (электронная почта) 'USER_HASH'=>'###' #Хэш для доступа к API (смотрите в профиле пользователя) ); $subdomain='###'; //имя вашего поддомена amoCRM #Формируем ссылку для запроса $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 '<b>Авторизация:</b>'; echo '<pre>'; print_r($Response); echo '</pre>'; //ПОЛУЧАЕМ ДАННЫЕ АККАУНТА $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 '<b>Данные аккаунта:</b>'; echo '<pre>'; print_r($Response); echo '</pre>'; //ПОЛУЧАЕМ СУЩЕСТВУЮЩИЕ ПОЛЯ $amoAllFields = $account['custom_fields']; //Все поля $amoConactsFields = $account['custom_fields']['contacts']; //Поля контактов //echo '<b>Поля из amoCRM:</b>'; echo '<pre>'; print_r($amoConactsFields); echo '</pre>'; //ФОРМИРУЕМ МАССИВ С ЗАПОЛНЕННЫМИ ПОЛЯМИ КОНТАКТА //Стандартные поля amoCRM: $sFields = array_flip(array( 'PHONE', //Телефон. Варианты: WORK, WORKDD, MOB, FAX, HOME, OTHER 'EMAIL' //Email. Варианты: WORK, PRIV, OTHER ) ); //Проставляем ID этих полей из базы amoCRM foreach($amoConactsFields as $afield) { if(isset($sFields[$afield['code']])) { $sFields[$afield['code']] = $afield['id']; } } //ДОБАВЛЯЕМ СДЕЛКУ $leads['request']['leads']['add']=array( array( 'name' => $lead_name, 'status_id' => $lead_status_id, //id статуса 'responsible_user_id' => $responsible_user_id, //id ответственного по сделке //'date_create'=>0123456789, //optional //'price'=>10000, //'tags' => 'Сайт, Заказ', #Теги //'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 '<b>Новая сделка:</b>'; echo '<pre>'; print_r($Response); echo '</pre>'; if(is_array($Response['response']['leads']['add'])) foreach($Response['response']['leads']['add'] as $lead) { $lead_id = $lead["id"]; //id новой сделки }; //ДОБАВЛЕНИЕ КОНТАКТА $contact = array( 'name' => $contact_name, 'linked_leads_id' => array($lead_id), //ID сделки 'responsible_user_id' => $responsible_user_id, //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' ) ) ) ) ); $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); ?>
Добавить комментарий