-
-
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 | |
?> |
Перестало работать. $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 и этот скрипт работать не будет
Поняла, спасибо
Да для тех же форм обратного звонка или заказа в один клик так не сделать. Человек может несколько раз открыть разные формы и вписать один и тот же номер