171 похожих чатов

Всем привет! Вопрос по компоненту для amocrm. у меня работает в

режиме хука для Formit - ajaxform.
Проблема - не создается контакт в amo, телефон пишется в доп полях.
Создается на сколько я понял, только когда авторизован в modx.
Поковырял исходники. Там вроде как контакт создается на событие - OnUserFormSave (создание, обновление юзера).
Мне надо бы для анонимов сделать. Кто сталкивался?

9 ответов

22 просмотра

Покажи вызов ajaxForm

Сергей-Моисеев Автор вопроса
Николай Савин
Покажи вызов ajaxForm

их много. Ну например вот {'!AjaxForm' | snippet : [ 'frontend_css' => '', 'hooks' => 'nospam,email,FormItSaveForm,amoCRMAddContact', 'formName' => 'Форма санатория', 'formFields' => 'phone,name,categories,arrival_date,departure_date,count,email', 'fieldNames' => ' phone==Телефон, name==Имя, categories==Категории номера, arrival_date==Дата прибытия, departure_date==Дата отбытия, count==Кол-во человек, email==E-mail, ', 'form' => '@FILE chunks/forms/sanatorium.tpl', 'amoCRMmodxAmoFieldsEq' => 'phone||email||name||categories==1081063||arrival_date==1080875||departure_date==1080877||count==1080293||url==1080301||istochnic==1081083', 'emailTpl' => '@FILE chunks/tpls/formit/email.tpl', 'emailSubject' => 'Новая заявка с сайта', 'emailTo' => 'emailTo' | config, 'emailFrom' => 'emailFrom' | config, 'emailFromName' => 'Санатории КМВ', 'validate' => 'phone:required', 'validationErrorMessage' => 'Форма не отправлена, пожалуйста, проверьте заполненные поля.' ]}

Сергей Моисеев
их много. Ну например вот ...

Заполнено верно. Не так давно еще кто-то писал о такой же проблеме. Возможно механизм самого AMO изменился.

Сергей-Моисеев Автор вопроса
Николай Савин
Заполнено верно. Не так давно еще кто-то писал о...

ВОт код создания контакта //Если контакт в базе AMO не найден добавляю новый. Иначе обновляю //TODO Разделить на разные методы if (empty($amoUserId)) { unset($contact['id']); //Добавляю новый контакт $response = $this->tools->invokeEvent('amocrmOnBeforeUserSend', [ 'contact' => $contact, 'action' => 'add', 'modUserId' => $modUserId, 'amoUserId' => $amoUserId, 'amoCRM' => $this, ]); $contact = array_merge($contact, $response['data']['contact']); $data = [$contact]; $result = $this->tools->sendRequest('/api/v4/contacts', $data, 'POST'); $contactData = $result['_embedded']['contacts'][0]; if (isset($contactData['id'])) { $amoUserId = $contactData['id']; if ($modUserId) { $this->setUserId($modUserId, $amoUserId); } } $this->tools->invokeEvent('amocrmOnUserSend', [ 'contact' => $contact, 'action' => 'add', 'modUserId' => $modUserId, 'amoUserID' => $amoUserId, 'amoCRM' => $this, 'amoCRMResponse' => $result, ]); return $amoUserId; } Надо попробовать подебажить его наверное

Для начала. Во-первых событие регистрации пользователя в данном случае не при чем. Инициация передачи контакта в CRM происходит из хука Во вторых для решения проблемы нужно расставить логи и посмотреть где теряются данные. Регистрацией клиента занимается класс amocrm/controllers/contacts.php Открыть метод prepareContact() и в нем по ходу процесса расставить логи. Затем то же самое в методе addContact()

Сергей-Моисеев Автор вопроса
Сергей Моисеев
ВОт код создания контакта //Если контакт в баз...

Т.е получается вот этот код из хука не работает?

Сергей Моисеев
Т.е получается вот этот код из хука не работает?

Это код не из хука. А из класса компонента. Я не знаю, я не работаю с АМО. Он работал точно. Возможно какие то механизмы изменились. Говорю же расставь логи и посмотри на каком шаге теряются данные

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта