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