Отправляем данные из форм в AmoCrm
Поступил мне заказ от человека на отправку данных форм в AmoCrm и после небольших обсуждений как лучше поступить: купить пакет или разбираться самому вынесли совместно решение купить пакет amocrm на modstore так как все пакеты, конечно же, сделаны для того чтобы быстрее внедрить в жизнь определенные решения.
Пакет заказчик купил, я сделал на нем определенные простейшие вещи, но застрял на подключении доп полей по id-шникам в amocrm и создании события к сделке, о чем я попросил заказчика задать вопрос, так как он покупал пакет на свой аккаунт, и вот спустя 5 дней после обращения и неполучения до сих пор ответа выходит моя заметка.
Первое, что надо понять — это то, что без знания хотя бы основ самой AmoCrm, названий полей, порядка действий ничего сделать у вас не получится в принципе, ни с пакетом ни без него, поэтому, если вы не сталкивались с AmoCrm, то надо потратить пару часов и просто понять основы работы в AmoCrm, просто как менеджеру, как добавлять поля, сделки и контакты, как они отображаются, как их удалить или редактировать, и после этого можно переходить к работе с Api AmoCrm
Итак, отправляем данные из форм в Амо:
Собственно все описано здесь — youtube.com/watch?v=UMFDtkzFpnw&t=618s
и вот библиотека, которая нам нужна — github.com/dotzero/amocrm-php
Единственная сложность, которая может возникнуть у многих — это скачать библиотеку с гитхаба через composer подключить ее к проекту. И чтобы вы не парились по этому поводу даю ссылку на уже скачанный проект ( test.sgusch1.beget.tech/files/amocrm.tar ) — качаете выкладываете папку «amocrm/все файлы» в корень, ну или куда вы там хотите, можете в core, главное потом правильно подключить, здесь я расскажу из корня.
Далее вызываем самые обычные наши формы, например
И здесь обращаем внимание на хук amo — он и будет делать всю работу.
В хуке amo мы первым делом подключаем нашу библиотеку, а дальше… у нас полный набор функций для работы с api AmoCrm, все есть на гитхабе, и примеры и документация, вот пример одного из моих хуков, в котором создается сделка + создается контакт + они связываются + заполняются различные поля + создается событие к сделке в виде примечания, туда поступает комментарий и наименование товара
Пакет заказчик купил, я сделал на нем определенные простейшие вещи, но застрял на подключении доп полей по id-шникам в amocrm и создании события к сделке, о чем я попросил заказчика задать вопрос, так как он покупал пакет на свой аккаунт, и вот спустя 5 дней после обращения и неполучения до сих пор ответа выходит моя заметка.
Первое, что надо понять — это то, что без знания хотя бы основ самой AmoCrm, названий полей, порядка действий ничего сделать у вас не получится в принципе, ни с пакетом ни без него, поэтому, если вы не сталкивались с AmoCrm, то надо потратить пару часов и просто понять основы работы в AmoCrm, просто как менеджеру, как добавлять поля, сделки и контакты, как они отображаются, как их удалить или редактировать, и после этого можно переходить к работе с Api AmoCrm
Итак, отправляем данные из форм в Амо:
Собственно все описано здесь — youtube.com/watch?v=UMFDtkzFpnw&t=618s
и вот библиотека, которая нам нужна — github.com/dotzero/amocrm-php
Единственная сложность, которая может возникнуть у многих — это скачать библиотеку с гитхаба через composer подключить ее к проекту. И чтобы вы не парились по этому поводу даю ссылку на уже скачанный проект ( test.sgusch1.beget.tech/files/amocrm.tar ) — качаете выкладываете папку «amocrm/все файлы» в корень, ну или куда вы там хотите, можете в core, главное потом правильно подключить, здесь я расскажу из корня.
Далее вызываем самые обычные наши формы, например
[[!AjaxForm?
&snippet=`FormIt`
&form=`treedeForm`
&hooks=`amo,email`
&emailTpl = `treedeEmailTpl`
&emailSubject=`Запрос на расчет стоимости`
&emailTo=`[[#2.admin_mail]]`
&validate=`name:required:minLength=^2^`
&emailFrom = `XXXX`
&emailFromName = `XXXX`
&validationErrorMessage=`В форме содержатся ошибки!`
&successMessage=`Сообщение успешно отправлено`
]]Поля типа XXXX естественно меняются на свои.И здесь обращаем внимание на хук amo — он и будет делать всю работу.
В хуке amo мы первым делом подключаем нашу библиотеку, а дальше… у нас полный набор функций для работы с api AmoCrm, все есть на гитхабе, и примеры и документация, вот пример одного из моих хуков, в котором создается сделка + создается контакт + они связываются + заполняются различные поля + создается событие к сделке в виде примечания, туда поступает комментарий и наименование товара
<?php
require_once $_SERVER['DOCUMENT_ROOT'] .("/amocrm/vendor/autoload.php");
$subdomain = 'XXXX';
$login = 'XXXXX';
$api_key = 'XXXXX';
// получаем данные из формы
$name = $hook->getValue("name");
$tags = $hook->getValue("tags");
$model = $hook->getValue("model");
$city = $hook->getValue("city");
$phone = $hook->getValue("phone");
$email = $hook->getValue("email");
$comment = $hook->getValue("comment");
$model_number = $hook->getValue("model_number");
$modnum = $hook->getValue("modnum");
$price = $hook->getValue("price");
$saloon = $hook->getValue("saloon");
if($saloon == 1){
$salon=true;
}
try{
$amo = new \AmoCRM\Client($subdomain, $login, $api_key);
// регистрируем события сделки и заполняем поля сделки
$lead = $amo->lead;
$lead['name'] = $name;
$lead['price'] = $price;
$lead['responsible_user_id'] = 374842;
$lead['tags'] = $tags;
$lead['pipeline_id'] = 1938876;
$lead->addCustomField(1784764, $model);
$lead->addCustomField(1801364, $city);
$lead->addCustomField(1675857, $modnum);
if($salon){
$lead->addCustomField(1784224, [
[4176514], // выбор из выпадающего списка
]);
}
$id = $lead->apiAdd(); // добавляем сделку
// добавляем контакт
$contact = $amo->contact;
$contact["name"] = $name;
$contact["phone"] = $phone;
$contact['linked_leads_id'] = [(int)$id]; // по этому параметру связывается сделка и контакт
$contact->addCustomField(1666265, $phone, 'WORK');
$contact->addCustomField(1666267, $email, 'WORK');
$contact['responsible_user_id'] = 374842;
$id = $contact->apiAdd(); // добавили контакт
// примечание
$note = $amo->note;
$note['element_id'] = $id;
$note['element_type'] = 1;//\AmoCRM\Models\Note::TYPE_CONTACT; // 1 - contact, 2 - lead
$note['note_type'] = 4; // \AmoCRM\Models\Note::COMMON @see https://developers.amocrm.ru/rest_api/notes_type.php
if(!empty($model_number)){
$mnum = " <br /><strong>Вариант комплектации: </strong>".$model_number;
}else{
$mnum="";
}
$note['text'] = $comment.$mnum;
$id = $note->apiAdd(); // добавили примечание
}catch (\AmoCRM\Exception $e) {
printf('Error (%d): %s', $e->getCode(), $e->getMessage());
}Пользуйтесь на здоровье. Комментарии: 9
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Гущин СергейЯ задаю вопрос сюда, потому что вот есть тема где магазин отвечает на такой же вопрос, по этому же пакету и этому же разработчику modx.pro/help/17167
А вообще действительно, завтра скажу клиенту чтобы написал вопрос на email магазина.
Ну вот, да. В этой теме отвечаю на этот вопрос, магазин без проблем предлагает вернуть деньги. Вы наверняка все комментарии там прочитали, просто решили лишний раз «уколоть» магазин или разработчика. Ну да ладно -) у каждого свои тараканы в голове.
Гущин СергейК магазину-то какие претензии?
Действительно, у каждого свои тараканы.
Гущин СергейСоздания примечания не хватает конечно. Но можно опять же для этого Доп поле использовать.
Плюсом в компоненте реализована передача visitor_uid, которая позволяет самой AmoCRM отслеживать повторное посещение сайта пользователем и через диджитал воронку настраивать дополнительную логику.