Привет, друзья, выкладываю библиотеку, которую сам использую в своей работе, она очень простая, умещается в одном файле, легкая и понятная. Позволяет копировать примеры запросов из документации по 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пи амоцрм
Скачать библиотеку hamtim-amocrm
На github.com
Вопросы, предложения и благодарности пишите в комментариях.
Нужна разработка? Свяжитесь со мной.
спасибо, я заработал так первый миллион!
https://toster.ru/q/511651 🙂
Ответил на тостере. Дублирую здесь:
в библиотеке запрос делается так
$leads = $amo->q($path, $fields);
и ид сделки и вообще создалась ли сделка и тд информация возвращается методом (то есть ответ от амоцрм ) и в данном случае присвоится в $leads, посмотрите его дамп. Там найдете нужный вам ИД.
На моем канале есть пара стримов, где я показываю, как работать с апи амоцрм.
https://www.youtube.com/watch?v=Jf4d6F3eokM
https://www.youtube.com/watch?v=WJPQuwMY3FM
Добрый день. Вопрос такой, как при помощи вашей библиотеки ПРИНЯТЬ запрос web hooks. Т.е. например создал я вот такой веб хук:
URL: http://mysite.ru/amo_update_user.php
Действие: Изменить контакт
Подскажите код для файла amo_update_user.php чтобы например передать в эту строку имя изменяемого пользователя:
$this->users->updateuser(array(‘id’=>$НОВОЕ_ИМЯ_В_CRM))
Добрый день, Сергей.
В вашем случае при изменении контакта amoCRM отправляет как-будто форму методом POST на адрес http://mysite.ru/amo_update_user.php
Соответственно все данные, которые передает амоцрм, вы можете получить из массива $_POST. Как посмотреть, что получает скрипт, я описывал в посте http://hamtim.ru/2018/01/24/как-смотреть-данные-вебхуков-amocrm-быстро/
Огромное вам спасибо 🙂
Точнее чтобы при изменении пользователя в CRM, в этом файле выполнялось действие:
$this->users->updateuser(array(‘id’=>$НОВОЕ_ИМЯ_В_CRM))
Незнаю, что за метод (функция) у вас, но мне кажется данные не верные, id должен быть числом. Скорее всего правильно будет:
array(
‘id’=>1111,
‘name’=>$НОВОЕ_ИМЯ_В_CRM,
);
Где 1111 это id сущности из вебхука
Это я на скорую руку написал, точный код вот такой
$this->users->updateuser($user_amocrm_id, array(‘name’=>$новое_имя_в_crm));
Добрый день! Возвращает такой
stdClass Object
(
[response] => stdClass Object
(
[error] => Неверный логин или пароль
[error_code] => 110
[ip] => 95.213.174.147
[domain] => acc522ed9547785b.amocrm.ru
[server_time] => 1525420626
)
)
Смотрите Коды ошибок в документации amocrm api, это значит неправильный логин пароль, проверьте, если все правильно, то я знаю особенность некоторых хостингов, там http_build_query() работает не так как амо ожидает.
Я просто заметил такую фразу в документации. Но вот интересно как его передать на другой IP? (((
401 Unauthorized Not Authorized. На сервере нет данных аккаунта. Нужно сделать запрос на другой сервер по переданному IP.
Описание ошибки 401 Not Authorized (на сервере нет данных аккаунта)
Возникает, когда аккаунт зарегистрирован на одном сервере, а запрос идет к другому серверу, на котором нет данных этого аккаунта. Чаще всего это бывает, когда аккаунт зарегистрирован на одном сервере, к примеру, на amocrm.ru, а запрос к API идет на другой сервер, к примеру на amocrm.com.
Для обеспечения бесперебойной работы проекта у нас используется не один, а несколько серверов, поэтому бывают ситуации, когда в ответе может вернуться HTTP-код 401 и error_code 401, даже на верные данные авторизации. В этот момент в ответе также будет передан верный IP сервера, на который должен быть произведен повторный запрос. Обратите внимание, что в таком случае клиентом должен быть передан тот же hostname, который использовался и при запросе, выдавшем 401 для верной работы сертификатов.
Вообще-то у вас 110 код, а не 401. Я закомметил на гитхаб изменения кода, должно заработать, если моя гипотеза верна.
Скачал новую версию с гитхаба, тоже самое пишет ((
Как варинт проблемы — нет прав на запись файла куков, надо проверить пишутся ли они…
Черт возьми, да вы гений! Сколько бы я без вас мучался…
Не подскажете что делать?
Добрый день! Подскажите, а есть запрос список сделок по номеру телефона ?
Добрый день! Подскажите, что делаю не правильно? Мне нужно создать сделку и после создать и прикрепить к ней контакт. Написал код. Сделка создаётся, контакт не прикрепляется. Вот код создания контакта:
// ДОБАВЛЕНИЕ КОНТАКТА
$pathСontact = ‘/private/api/v2/json/contacts/set’;
$fieldsСontact[‘request’][‘contacts’][‘add’][] = array(
‘name’ => $name,
‘linked_leads_id’ => array($leadAnswer), //id сделки
//’responsible_user_id’ => $responsible_user_id, //id ответственного
‘custom_fields’=>array(
array(
#Дополнительное телефон
‘id’=>50606, // ID дополнительного поля
‘values’=>array(
array(
‘value’=>$phone, // дополнительное поле с ID
‘enum’ => ‘WORK’,
)
)
),
)
);
$contactAnswer = $amo->q($pathСontact, $fieldsСontact);
Конечно не будет, посмотрите что у вас в $leadAnswer, должен быть только ID сделки.
Подскажите пожалуйста, как тогда правильно получить ID 🙂
Подскажите, пожалуйста, создаю сделку и хочу прикрепить к ней товары. В разделе Список создал сущность товары. Но вот как их через api добавлять к сделке — ума не приложу, тех.поддержка амо црм говорит чточерез апи никак, может через виджет есть способ?
А как обновить?
Здравствуйте. пытаюсь сдвинуть сделку по воронке, возвращает ошибку 217 (ошибка указывает на то, что не заполнены обязательные поля, но все обязательные в массиве вроде есть), никак не могу разобраться, почему…
//перенос сделки на этап
$path = ‘/private/api/v2/json/leads/set’;
$fields[‘request’][‘leads’][‘update’]=array(
array(
‘id’=>22094039,
‘name’=>’тестовая’,
‘status_id’=>37402141,
‘updated_at’=>time(),
)
);
$leadAnswer = $amo->q($path, $fields);