Отправляем данные из форм в 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 магазина.
Я задаю вопрос сюда, потому что вот есть тема где магазин отвечает на такой же вопрос, по этому же пакету и этому же разработчику modx.pro/help/17167
А вообще действительно, завтра скажу клиенту чтобы написал вопрос на email магазина.
Вы конечно большой молодец, спору нет.
Я задаю вопрос сюда, потому что вот есть тема где магазин отвечает на такой же вопросНу вот, да. В этой теме отвечаю на этот вопрос, магазин без проблем предлагает вернуть деньги. Вы наверняка все комментарии там прочитали, просто решили лишний раз «уколоть» магазин или разработчика. Ну да ладно -) у каждого свои тараканы в голове.
То есть вы считаете, что основанием поста и проделанной работы послужил указанный пост?
К магазину-то какие претензии?
Действительно, у каждого свои тараканы.
К магазину-то какие претензии?
Действительно, у каждого свои тараканы.
Нет! Просто мне последняя часть данного поста показалось немного лишней. Но вы художник — вам видней.
Соглашусь с вами и уберу эту часть, по причине «не несет отношения к инструкции»
Можно использовать
$allFormFields = $hook->getValues();
для получения всех значений, это сократит код. Так же, не особо понятно, что вот это такое и для чего:if($saloon == 1){
$salon=true;
}
Использую данный компонент на нескольких проектах. Никаких проблем с подключением доп. полей не наблюдал.
Создания примечания не хватает конечно. Но можно опять же для этого Доп поле использовать.
Создания примечания не хватает конечно. Но можно опять же для этого Доп поле использовать.
'hooks' => 'amoCRMAddContact'
'amoCRMmodxAmoFieldsEq'=>'phone==phone||email==email||visitor_uid==visitor_uid||utm_source==utm_source'
Плюсом в компоненте реализована передача visitor_uid, которая позволяет самой AmoCRM отслеживать повторное посещение сайта пользователем и через диджитал воронку настраивать дополнительную логику.
Добрый день подскажите данный способ актуален?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.