-
-
Save webag/58ad75276aaa14325ab02a0189c9e37d to your computer and use it in GitHub Desktop.
<? | |
//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 '<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>Поля из амо:</b>'; echo '<pre>'; print_r($amoConactsFields); echo '</pre>'; | |
//ФОРМИРУЕМ МАССИВ С ЗАПОЛНЕННЫМИ ПОЛЯМИ КОНТАКТА | |
//Стандартные поля амо: | |
$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['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'=>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 '<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); | |
//ДОБАВЛЕНИЕ КОНТАКТА - КОНЕЦ | |
//amo | |
?> |
Можешь подсказать, как сюда добавить переменную "город"?
Очень нужно, помоги пож
Если раскомментить 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' => ***Значение из вашей формы или откуда-то еще***, ) ) ) )
Жить тебе долго и счастливо добрый человек :)
Спасибо тебе огромное!) Очень выручил.
О боже, ты лучший, даже не представляешь как выручил. Спасибо большое!!!
Работает. Люблю, целую, обнимаю!
Спасибо
Кто-то придумал, как бороться с дубликатами на основе этого скрипта? Каждый раз создается новый контакт
Кто-то придумал, как бороться с дубликатами на основе этого скрипта? Каждый раз создается новый контакт
в респонсе приходит id клиента. сохраняешь его, потом когда клиент добавляет сделку, проверяешь сохранен ли id клиента. если сохранен, то просто линкуешь соответствуещего клиента иначе создаешь нового.
в респонсе приходит id клиента. сохраняешь его, потом когда клиент добавляет сделку, проверяешь сохранен ли id клиента. если сохранен, то просто линкуешь соответствуещего клиента иначе создаешь нового.
Так если его запускать каждый раз всё равно будет новый id клиента каждый раз
в респонсе приходит id клиента. сохраняешь его, потом когда клиент добавляет сделку, проверяешь сохранен ли id клиента. если сохранен, то просто линкуешь соответствуещего клиента иначе создаешь нового.
Так если его запускать каждый раз всё равно будет новый id клиента каждый раз
да если делать amocrm.ru/private/api/v2/json/contacts/set каждый раз, то будет каждый раз новый клиент. просто не надо его делать каждый раз, а использовать уже созданного клиента
да если делать amocrm.ru/private/api/v2/json/contacts/set каждый раз, то будет каждый раз новый клиент. просто не надо его делать каждый раз, а использовать уже созданного клиента
Да для тех же форм обратного звонка или заказа в один клик так не сделать. Человек может несколько раз открыть разные формы и вписать один и тот же номер
Перестало работать. $amoConactsFields пустой, далее
Warning: Invalid argument supplied for foreach()
Я так понимаю не может раздать полям ID.
Перестало работать. $amoConactsFields пустой, далее
Warning: Invalid argument supplied for foreach()Я так понимаю не может раздать полям ID.
А $account тоже пустой? Может у вас с коннектом что-то
@xynobo
Техподдержка упорно говорит что используется устаревшие методы в account.
Даже когда авторизовывается нормально - массив пустой. Черт знает, может, не там он теперь.
Данные аккаунта поменялись
https://www.amocrm.ru/developers/content/api/account
URL сменился и json с ответом
//ПОЛУЧАЕМ ДАННЫЕ АККАУНТА
$link = 'https://' . $subdomain . '.amocrm.ru/api/v2/account?with=pipelines,groups,note_types,task_types,custom_fields';
...
//ПОЛУЧАЕМ СУЩЕСТВУЮЩИЕ ПОЛЯ
$amoAllFields = $Response['_embedded']['custom_fields']; //Все поля
$amoConactsFields = $amoAllFields['contacts']; //Поля контактов
с LEAD то же самое похоже. И с Note
Добрый день. Можешь подсказать как при переходе на определенный этап сделки сделать чтобы к контакту сделки добавлялись теги из сделки?
Добрый день! А как добавить в неразобранное?
@lagodina-anastasia оно и так добавляется в неразобранное. Суть только в том, что этот пример давно не работает, они обновили API и этот скрипт работать не будет
Поняла, спасибо
а как добавлять сделку в неразобранное?