[amoCRM] Интеграция с востребованным сервисом

Как многие помнят, месяц назад вместе с MODSTORE.PRO мы объявили о создании компонента для интеграции сайта на MODX Revo с популярной amoCRM. Реакция сообщества тогда обрадовала, что означало достаточно высокую востребованность такого инструмента.

И вот, теперь он готов!

Если вкратце, то AmoCRM — это простая и понятная система учета потенциальных клиентов и сделок, которая поможет контролировать и увеличивать ваши продажи. С помощью нее вы не только с легкостью сможете контролировать сделки, но и не потеряете ни одной заявки от потенциальных клиентов.

Ключевые возможности компонента:

  • Из заказа на сайте создает сделку и контакт (или привязывает существующий)
  • В свойствах заказа указывается метод оплаты и список товаров
  • При смене статуса заказа изменяет статус сделки и наоборот
  • Из любой формы обратной связи создает контакт
  • Автоматически создает новую воронку для заказов с сайта и статусы заказов в ней
  • Автоматически создает дополнительные поля сделок для списка товаров и метода оплаты
  • Автоматически создает и обновляет Контакты при сохранении Пользователей на сайте
  • Может создавать неограниченное количество дополнительных полей для контактов (упрощенный режим)

Установка и настройка

Системные настройки










НазваниеЗначение по умолчанию Описание
amocrm_account Аккаунт. Поддомен домена amocrm.ru amocrm_hashКлюч пользователя, можно получить на странице редактирования профиля пользователя amocrm_loginЛогин, с которым вы авторизуетесь в amoCRM amocrm_new_order_status_id1ID статуса нового заказа minishop2 amocrm_pipeline_idID воронки для нового заказа, заполняется автоматически при первом заказе amocrm_secret_keyСекретный ключ виджета

Как получить значение amocrm_secret_key

Ввод значения секретного ключа необходим только для создания дополнительных полей с помощью модуля. Если Вы планируете создавать поля самостоятельно, ключ вводить не требуется.
Перейдите в раздел API настроек amoCRM (YOUR_DOMAIN.amocrm.ru/settings/dev/) и добавьте новый виджет, если не создан ранее. В окне ввода кода виджета можно ввести что-то осмысленное, но самое главное, чтобы код оказался уникальным в рамках всего amoCRM.
Затем в таблице виджетов скопируйте значение из колонки «Секретный ключ» и введите в системну настройку.

Настройка Webhook

Для получения изменений из amoCRM на сайт в блоке Webhook введите адрес
<http://stite.ru>/assets/components/amocrm/webhook.php
, заменив
<http://stite.ru>
на URL Вашего сайта. После этого в выпадающем списке справа отметьте галочками события: * Изменить сделку * Смена статуса сделки

Добавление дополнительных полей Контактам

При создании или изменении Контакта с сайта могут передаваться любые данные Пользователя. Единственное условие — должны быть созданы соответствующие дополнительные поля. Если секретный ключ виджета указан, то новые поля можно создать прямо с сайта. Для этого удобнее всего использовать компонент Console и выполнить в нем следующий код:
<code>if (!$amo = $modx->getService('amocrm', 'amoCRM', $modx->getOption('amocrm_core_path', null,
        $modx->getOption('core_path') . 'components/amocrm/') . 'model/amocrm/', array())
) {
    return 'Could not load amoCRM class!';
}
$amo->auth();
$amo->addContactsCustomFields(array('username', 'email', 'phone'));</code>
Здесь видно, что перечень полей задается в виде стандартного массива PHP. Важно: поля должны совпадать со свойствами пользователей MODX.

Компонент написан мной, Воеводским Михаилом, совместно с нашим разработчиком Волковым Николаем.
Отдельное спасибо Павлу Гвоздю за предоставление своих наработок в этом направлении.

Пакет отправлен в магазин, доступен здесь.
Воеводский Михаил
Воеводский Михаил
17 декабря 2016, 13:18
modx.pro
12 580
Реклама

Комментарии: 81

Raimei
Raimei Старожил
17 декабря 2016, 16:28
Из любой формы обратной связи создает контакт
На днях просили фичу: если письмо отправлено через AjaxForm (или FormIt) то создается отдельный контакт в CRM. Можно будет сделать такое через ваш модуль?
mngatoff
mngatoff Старожил
17 декабря 2016, 23:48
я сначала подумал, это открытое письмо Паше Гвоздю)))
    Здоров Александр
    18 декабря 2016, 01:02
    я тоже по первому слову так подумал)
      Воеводский Михаил
      18 декабря 2016, 02:06
      Это была чистая случайность :) спасибо, исправил.
      Воеводский Михаил
      19 декабря 2016, 12:48
      Компонент опубликован: modstore.pro/packages/import-and-export/amocrm
        Антон
        Антон Старожил
        20 декабря 2016, 03:33
        Когда ожидается Битрикс24?
          Воеводский Михаил
          20 декабря 2016, 04:14
          Планируем к НГ.
            Антон
            Антон Старожил
            20 декабря 2016, 04:22
            Спасибо, наш Дед Мороз.
              Антон
              Антон Старожил
              31 декабря 2016, 17:44
              Наш подарок уже в пути?
                Воеводский Михаил
                31 декабря 2016, 17:47
                Увы, не успели. Следующий расчетный срок — середина января. В любом случае, постараемся не затягивать :)

                С новым годом!
                  Антон
                  Антон Старожил
                  31 декабря 2016, 17:54
                  Ок. Даем второй шанс — до Старого Нового Года.
                  Иначе добрый Дед Мороз, станет горбатым дедом нетрадиционной ориентации.

                  С Новым Годом!

                    Воеводский Михаил
                    31 декабря 2016, 18:53
                    Пожелание передано Деду Морозу ;)
                      Антон
                      Антон Старожил
                      15 января 2017, 20:02
                      Здравствуй, Дедушка Мороз, борода из ваты! Ты подарки нам принёс?!
          Семён Кудрявцев
          20 декабря 2016, 09:01
          Ждём с нетерпением интеграции с Битрикс24 — у ник как раз выкатили новый релиз, куча новых плюшек и удобностей, поэтому связка MODX + Битрикс24 = СУПЕР ДУЭТ, очень ждём!
          Александр Коваленко
          22 декабря 2016, 14:46
          Спасибо, за компонент.
          Подскажите как можно реализовать передачу контакта или создать сделку при заказе обратного звонка с сайта, через обычную форму?
            Воеводский Михаил
            22 декабря 2016, 17:01
            Сегодня-завтра дополним документацию по компоненту, там будет со скринами освещен этот вопрос.
              Александр Коваленко
              23 декабря 2016, 13:12
              Спасибо. Мы всем ждем!)
                Денис Гром
                Денис Гром Старожил
                05 января 2017, 19:33
                Нет еще документации? очень срочно нужно цепляться к формам на formit (через ajaxform)! Если уже есть, то где почитать?
              Воеводский Михаил
              24 декабря 2016, 03:57
              Выпущена версия 1.0.0-pl. Добавлены системные настройки для указания полей объектов msOrder и msOrderAddress, которые будут переданы в amoCRM.
              Обновляйтесь корректируйте под свои нужды.
                Антон
                Антон Старожил
                24 декабря 2016, 06:26
                Из любой формы обратной связи создает контакт
                Это через ajax работает?
                Контакт или лид создает?
                  Воеводский Михаил
                  24 декабря 2016, 06:34
                  Работает как хук FormIt. Создает контакт.
                    Антон
                    Антон Старожил
                    24 декабря 2016, 07:22
                    Лид нужно сразу делать.
                    Наверно можно легко поправить.
                Игорь Зябко
                Игорь Зябко Старожил
                28 декабря 2016, 13:13
                Михаил, в результате эксплуатации поняли, что реалтайм отправка корзины в amo медленная.
                Секунд около 10 примерно.

                Вишлист:
                опционально в настройках: реалтайм или данные в файл, в csv или json мб.
                А далее можно будет по крону как нито разобрать.

                Спасибо!
                  Воеводский Михаил
                  30 декабря 2016, 14:01
                  Игорь, 10 секунд — странно, не должно быть так. Но пожелание касательно очереди принято, в январе подумаем.
                  Сергей
                  Сергей Старожил
                  25 января 2017, 06:26
                  Добавьте проверку на контекст — при сохранения профиля в админке — создает контакт в CRM
                    Воеводский Михаил
                    25 января 2017, 06:42
                    Обновляйтесь.
                      Сергей
                      Сергей Старожил
                      25 января 2017, 07:12
                      Спасибо за оперативность!)
                      А подскажите:
                      Все работает, контакт при заполнении формы создается. Но в админке сыпятся ошибки:
                      /core/cache/includes/elements/modsnippet/46.include.cache.php : 26) PHP warning: in_array() expects parameter 2 to be array, null given
                      Посмотрел — жалуется на сниппет amoCRMAddContact, а конкретно на эту строку:
                      if (in_array($key, array_keys($formFields))) {
                        Воеводский Михаил
                        25 января 2017, 07:38
                        Добавьте в этом сниппете на 8 строке
                        $formFields = array();
                        Напишите результат.
                          Сергей
                          Сергей Старожил
                          25 января 2017, 07:58
                          Ошибка пропала) Спасибо)
                    Владимир
                    Владимир Старожил
                    27 марта 2017, 16:00
                    Битрикс24 не добавлен еще?
                    Алексей Смирнов
                    28 марта 2017, 11:34
                    Доброго дня. Можно от вас узнать сколько чистого времени у вас заняло разработка интеграции? ну или хотя бы с погрешностью в 20% ))) Очень хочется понять на сколько вообще подобные интеграции времязатратны. Спасибо!
                    Fi1osof
                    Fi1osof Старожил
                    09 апреля 2017, 23:15
                    Михаил, вот такой момент: в методе prepareContact() у тебя жестко прописано $default_fields = array('name'); На самом же деле дефолтных полей значительно больше developers.amocrm.ru/rest_api/contacts_set.php
                    Особенно важно поле tags. Если прописать хотя бы вот так $default_fields = array('name','tags'), уже получается создавать контакты с тэгами.
                    Пока же пришлось делать так:
                    if($amo->auth()){
                        
                        $contact = $amo->prepareContact(array(
                            'name' => "Имя", 
                            'email'     => "email@...", 
                            'phone'     => "777777777",
                        ));
                        
                        $contact['tags'] = 'RU';
                        
                        $data = array('request' => array('contacts' => array()));
                        $data['request']['contacts']['add'] = array($contact);
                        
                        $result = $amo->sendRequest('/private/api/v2/json/contacts/set', $data);
                    }
                    И вот здесь всплывает еще один момент: хорошо было бы иметь возможность в метод addContext() передавать объект контакта, чтобы не приходилось формировать запрос.

                    А в целом все работает, контакты создаются, список контактов из АМО получается забрать и прочий необходимый функционал есть. Спасибо за компонент! Пригодился.
                      Воеводский Михаил
                      10 апреля 2017, 02:58
                      Николай, спасибо за замечания по полям. Изменю механизм.

                      addContext() — где такой метод? Мб, addContact()?
                        Fi1osof
                        Fi1osof Старожил
                        10 апреля 2017, 03:36
                        Не за что.

                        addContext() — где такой метод? Мб, addContact()?
                        Да, все верно, моя ошибка.
                      Fi1osof
                      Fi1osof Старожил
                      10 апреля 2017, 21:47
                      Михаил, вот еще информация: создание заметок по контактам и сделкам. В контакте результат выглядит так:

                      Возможность создавать заметки особенно полезна, когда с сайта передаются не только простые поля (типа емейл, имя и т.п.), а какие-нибудь данные из более сложных форм (произвольные текстовые сообщения, информация по товару или типа того).

                      Создание События:
                      if (!$amo = $modx->getService('amocrm', 'amoCRM', $modx->getOption('amocrm_core_path', null,
                              $modx->getOption('core_path') . 'components/amocrm/') . 'model/amocrm/', array())
                      ) {
                          return 'Could not load amoCRM class!';
                      }
                      
                      if($amo->auth()){
                          
                          $note = array(
                              'element_type'          => 1,  
                              'element_id'   => 123456789,  
                              'note_type'   => 4,
                              'text'   => "gfgggggff",
                          );
                          
                          $data = array('request' => array('notes' => array()));
                          $data['request']['notes']['add'] = array($note);
                          
                          $result = $amo->sendRequest('/private/api/v2/json/notes/set', $data);
                          
                          print_r($result);
                      }
                      else{
                          print "Error auth";
                      }
                      element_type: 1 — контакт, 2 — сделка.
                      element_id: id объекта (в нашем случае аккаунта).
                      note_type: 4 — это произвольная заметка по контакту.
                      Полный список типов здесь: developers.amocrm.ru/rest_api/notes_type.php

                      Получение всех Событий по контакту:
                      if (!$amo = $modx->getService('amocrm', 'amoCRM', $modx->getOption('amocrm_core_path', null,
                              $modx->getOption('core_path') . 'components/amocrm/') . 'model/amocrm/', array())
                      ) {
                          return 'Could not load amoCRM class!';
                      }
                      
                      if($amo->auth()){
                          
                          $data = array(
                              'type'          => 'contact',
                              'element_id'   => 123456789,
                          );
                          
                          $result = $amo->sendRequest('/private/api/v2/json/notes/list', $data, "GET");
                          
                          print_r($result);
                      }
                      else{
                          print "Error auth";
                      }
                        Воеводский Михаил
                        10 апреля 2017, 21:49
                        Николай, спасибо!
                          Fi1osof
                          Fi1osof Старожил
                          10 апреля 2017, 22:27
                          Не за что!
                        Fi1osof
                        Fi1osof Старожил
                        10 апреля 2017, 23:30
                        Для пример: мой код, который создает Сделку, Контакт с тегами, связывает Контакт со Сделкой, и создает заметку по Контакту.

                        if (!$amo = $this->modx->getService('amocrm', 'amoCRM', $this->modx->getOption('amocrm_core_path', null,
                                $this->modx->getOption('core_path') . 'components/amocrm/') . 'model/amocrm/', array())
                        ) {
                            $this->modx->log(modX::LOG_LEVEL_ERROR, "[". __CLASS__ ."] Could not load amoCRM class!");
                        }
                        
                        if($amo->auth()){
                            
                            /*
                            Создаем сделку
                            */
                            $data = array(
                                'name'          => "Заявка с сайта",  
                            );
                            
                            $lead_id = $amo->addLead($data);    
                            
                            /*
                            Создаем контакт
                            */
                            $contact = $amo->prepareContact(array(
                                'name' => $this->getProperty('name'),
                                'phone' => $this->getProperty('phone'),
                                'email' => $this->getProperty('email'),
                            ));
                            
                            $contact['tags'] = 'ClientsFromWebsite,RUS';
                            $contact['linked_leads_id'] = $lead_id;
                            
                            $data = array('request' => array('contacts' => array()));
                            $data['request']['contacts']['add'] = array($contact);
                            
                            $result = $amo->sendRequest('/private/api/v2/json/contacts/set', $data);
                            
                            if(!empty($result['out']['contacts']['add'][0]['id'])){
                                $contact_id = $result['out']['contacts']['add'][0]['id'];
                            }
                            
                            /*
                            Создаем заметку по контакту
                            */
                            if(
                                $message = $this->getProperty("message")
                                AND $contact_id
                            ){
                                
                                $note = array(
                                    'element_type'          => 1,  
                                    'element_id'   => $contact_id,  
                                    'note_type'   => 4,
                                    'text'   => $message,
                                );
                                
                                $data = array('request' => array('notes' => array()));
                                $data['request']['notes']['add'] = array($note);
                                
                                $result = $amo->sendRequest('/private/api/v2/json/notes/set', $data);
                            }
                            
                        }
                        else{
                            $this->modx->log(modX::LOG_LEVEL_ERROR, "[". __CLASS__ ."] amoCRM Error auth");
                        }
                        Получается вот такой результат:

                          Denis
                          Denis Старожил
                          04 июня 2017, 02:40
                          Доброго времени.
                          Установил плагин. В crm передаются данные заказов и всех форм через хук formit
                          С заказами минишопа проблем нет, а вот при отправке форм в логах ошибка
                          /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: amoCRMLead from mysql.amocrmlead.
                          На работу компонента и отправку данных ошибка не влияет, но хотелось бы от нее избавиться.
                            Воеводский Михаил
                            05 июня 2017, 13:09
                            Напишите в поддержку с указанием доступа к админке.
                            Иван Кизименко
                            Иван Кизименко Старожил
                            15 сентября 2017, 00:11
                            Три вопроса:

                            1. Как к вашему модулю добавить добавление Заметки, я так понимаю то-что описал Николай это его собственное решение не привязанное к модулю.
                            2. Можно ли в принципе создать задачу сразу после попадания заявки в CRM? Если это возможно то планируете ли такое улучшение модуля.
                            3. Развитие модуля прекращено?
                              Воеводский Михаил
                              15 сентября 2017, 15:46
                              1. Это его решение, основанное на методах модуля
                              2. Возможно. В будущем такое обновление появится
                              3. Не прекращено. Заявок на добавление возможностей не поступало.
                                Иван Кизименко
                                Иван Кизименко Старожил
                                19 сентября 2017, 17:20
                                Проверки на дубли тоже нету в модуле? а то мне тут в амо прилетает по 15 заявок одинаковых.
                                  Воеводский Михаил
                                  19 сентября 2017, 17:41
                                  Напишите в поддержку в магазине, какого плана проверки нужны.
                              fedky
                              fedky Старожил
                              21 сентября 2017, 13:36
                              Здравствуйте, писал в поддержке, там пока тишина. Купил вчера модуль и насколько понял, в нём, при создании контакта, реализована поддержка лишь 3-х полей — name, phone, email.
                              Вопрос: передача кастомного поля реализована в модуле? Если да, то подскажите как передать, так как я не разобрался, если нет, то надо дописывать, будете ли вы этим заниматься или это уже удел того, кто купил модуль?
                                Воеводский Михаил
                                21 сентября 2017, 16:08
                                Добрый день.
                                Ответил в поддержке.

                                На всякий случай, дублирую:

                                Добавьте в вызов FormIt параметр:
                                &amoCRMNameField=`amoField1==formField1||amoField2==formField2||amoField3==formField3`
                                taxsin
                                taxsin Старожил
                                11 апреля 2018, 17:47
                                Добрый день. Помогите пожалуйста разобраться. При создании сделки ответственный назначается сразу администратор и менеджеры по продажам не видят эту сделку, т.к. она автоматически ставится на меня. Каким образом можно сделать что бы сделка просто создавалась без назначенного ответственного и ее видели все.
                                  Иван Кизименко
                                  Иван Кизименко Старожил
                                  25 апреля 2018, 00:37
                                  Как работает сниппет-хук amoCRMAddContactGeo?
                                  В этой ветке документации больше чем в самой документации.
                                    Воеводский Михаил
                                    25 апреля 2018, 22:42
                                    Данный хук смотрит на системную настройку amocrm_geo_users и выставляет ответственного для заявки на основании геоинформации из компонента GeoLocation.

                                    Настройка указывается в формате:
                                    {«userLogin@email.com»:«UA-43,RU-ROS,RU-KDA,RU-STA,RU-SPE»,«userLogin2@email.com»:«RU-LEN»}
                                    Полина Таран
                                    Полина Таран Старожил
                                    04 мая 2018, 17:00
                                    Добрый день!
                                    у меня форма с полями name, phone, email, но они называются contact_name, contact_phone, contact_email. Я прописала
                                    &hooks=`email,FormItAutoResponder,amoCRMAddContact`
                                    &amoCRMNameField=`name==contact_name||phone==contact_phone||email==contact_email`

                                    это правильно? В amoCRM контакт не попадает :(
                                      Воеводский Михаил
                                      04 мая 2018, 17:03
                                      Выглядит правильно.
                                      Предоставьте доступ в админку, напишите данные в поддержке магазина.
                                    Scorp Satex
                                    Scorp Satex Старожил
                                    14 мая 2018, 18:41
                                    Здравствуйте.

                                    Интересует покупка вашего плагина. Возможно ли с помощью вашего плагина сделать следующие:

                                    1. Пользователь заходит на сайт, находит интересующий его товар.
                                    2. Заполняет форму и нажимает отправить. У формы есть дополнительное поле «Название товара».
                                    3. Форма отправляется в амоцрм, в качестве Контакта.
                                    4. Дальше менеджер уже работает с контактом, проводя его по ссылке.

                                    В документации у вас указано «Важно: поля контактов amoCRM должны совпадать с названиями полей формы.»

                                    А как в форму добавить поле «Название товара», чтобы данные из нее отправились в амоцрм? Это возможно сделать?

                                    На сайте корзины нету, все заказы через формы обычные на Formit.
                                      Дмитрий
                                      Дмитрий Старожил
                                      23 мая 2018, 16:05
                                      Повторю вопрос taxsin

                                      Как сделать чтобы не назначался ответственный, и сделки падали в раздел неразобранное?

                                      Какую настройку изменить? Очень прошу помочь! Так как никто в офисе не видит приход новых сделок.
                                        Виталий
                                        Виталий Старожил
                                        25 июня 2018, 10:17
                                        Всем привет!
                                        Купил дополнение, настроил всё что нужно, кроме отправки текста сообщения из formit. Почему-то оно не добавляется в amoCRM.

                                        вызов formit
                                        &hooks=`email,amoCRMAddContact`	
                                        &amoCRMNameField=`name==name||phone==phone||email==email||comment==comment`
                                        &validate=`name:required:minLength=`2`,phone:required, email:email:required, comment:stripTags, agree:required, site_message:blank`
                                        но я так понимаю что name==name||phone==phone||email==email|| не нужно указывать, оно и так добавляется в amoCRM, а вот комментарий добавить не получается.
                                        в системных настройках сделал так.
                                        Шаблон формы:
                                        <form id="contactform" class="form" name="contactform" action="[[~[[*id]]]]" method="post">
                                        <input type="hidden" name="nospam:blank" value="" />
                                          <div class="form-group">
                                        <input type="text" name="site_message" class="site_message" value="" />
                                        	<input type="text" name="name" id="name" class="form-control" placeholder="Введите Ваше имя (Обязательное поле)">
                                        	   <div class="invalid-feedback error_name">
                                                [[+fi.error.name]]
                                              </div>
                                          </div>
                                          <div class="form-group">
                                        	<input type="text" name="email" id="email" class="form-control" placeholder="Введите адрес электронной почты (Обязательное поле)">
                                        	   <div class="invalid-feedback error_email">
                                                [[+fi.error.email]]
                                              </div>
                                          </div>
                                          <div class="form-group">
                                        	<input type="text" name="phone" id="phone" class="form-control " placeholder="Введите номер телефона (Обязательное поле)">
                                        	   <div class="invalid-feedback error_phone">
                                                [[+fi.error.phone]]
                                              </div>
                                          </div>
                                          <div class="form-group">
                                        	<textarea type="text" name="comment" id="comment" class="form-control" rows="3" placeholder="Сообщение"></textarea>
                                          </div>
                                          <div class="form-check d-flex">
                                        
                                        	<input type="hidden" name="agree[]" value="">
                                        	<input type="checkbox" name="agree[]" id="agree" class="form-check-input" checked>
                                        	<label class="form-check-label">Я согласен с <a href="[[~3]]" class="aPerson">условиями обработки персональных данных</a></label>
                                        	<div class="invalid-feedback error_agree">
                                               [[+fi.error.agree]]
                                            </div>
                                        
                                          </div>
                                          <button type="submit" class="btn btn-priceForm mt-2">Отправить</button>
                                        </form>
                                        Подскажите, кто уже это настраивал – автор дополнения не отвечает уже неделю…
                                          Иван Кизименко
                                          Иван Кизименко Старожил
                                          02 июня 2019, 20:33
                                          В модуле есть возможность передавать visitor_uid?

                                          Интересует вот этот функционал: www.amocrm.ru/developers/content/digital_pipeline/site_visit
                                            Воеводский Михаил
                                            02 июня 2019, 21:47
                                            Есть. На фронте сделайте все, что описано в документации, а в параметрах для хука и в системной настройке полей сделок укажите данное поле для передачи.
                                              Иван Бочкарев
                                              Иван Бочкарев Администратор
                                              02 декабря 2019, 01:43
                                              <script>
                                                window.AMOPIXEL_IDENTIFIER_PARAMS = window.AMOPIXEL_IDENTIFIER_PARAMS || {};
                                                window.AMOPIXEL_IDENTIFIER_PARAMS.onload = function (pixel_identifier) {
                                                  var visitor_uid = pixel_identifier.getVisitorUid(); // Получаем visitor_uid
                                                  // console.log ( 'visitor_uid' , visitor_uid) ;
                                                  if (visitor_uid) {
                                                    // Записываем его в скрытое поле формы 'visitor_uid'
                                                    $(document).ready(function () {
                                                      $('form input[name = "visitor_uid"]').val(visitor_uid);
                                                    });
                                                  }
                                                };
                                              </script>
                                              Александр
                                              Александр Старожил
                                              19 июля 2019, 20:36
                                              Добрый день, подскажите может ли компонент добавлять товары в сделку из каталога амо? не текстовым полем, а поиск по артикулу и добавление товаров из каталога, который есть в амо црм.
                                                Воеводский Михаил
                                                20 июля 2019, 02:43
                                                Такой возможности нет. В стандартном варианте amoCRM товары отсутствуют. Возможно, в Вашем аккаунте установлены виджеты, добавляющие каталог товаров. Если так, напишите на почту, обсудим доработку под Ваш сайт.
                                                Игорь Ткачук
                                                Игорь Ткачук Старожил
                                                08 ноября 2019, 08:08
                                                Добрый день. Я интегратор amocrm и хочу узнать вот, что. Я сейчас ставлю СРМ-ку клиенту, у них сайт на modx, вот результат из builtwith builtwith.com/sakurasimferopol.ru.
                                                Подойдёт ли данный модуль интеграции с этим сайтом? sakurasimferopol.ru. Спасибо
                                                  Иван Бочкарев
                                                  Иван Бочкарев Администратор
                                                  02 декабря 2019, 01:32
                                                  Возможно кому то пригодится.

                                                  Вместе с передачей необходимых полей нужно было передавать UTM метки, а также client ID Yandex метрики и GA.

                                                  Пишу как реализовал:

                                                  В наши формы добавляем скрытые поля:

                                                  <input type="hidden" name="client_id_yandex" value="">
                                                  <input type="hidden" name="client_id_google" value="">
                                                  <input type="hidden" name="utm_source" value="">
                                                  <input type="hidden" name="utm_medium" value="">
                                                  <input type="hidden" name="utm_content" value="">
                                                  <input type="hidden" name="utm_term" value="">
                                                  <input type="hidden" name="utm_campaign" value="">
                                                  В код вызова AjaxForm в параметр amoCRMmodxAmoFieldsEq добавляем соответствие полей:

                                                  'amoCRMmodxAmoFieldsEq' => 'phone||email||amocrm_link==XXXXXXX||amocrm_name==XXXXXXX||amocrm_form==XXXXXXX||amocrm_nameform==XXXXXXX||amocrm__subtitle==XXXXXXX||client_id_yandex==v||client_id_google==XXXXXXX||utm_source==XXXXXXX||utm_medium==XXXXXXX||utm_content==XXXXXXX||utm_term==XXXXXXX||utm_campaign==XXXXXXX||question==XXXXXXX||visitor_uid==visitor_uid',

                                                  Где XXXXXXX — номер поля в AmoCRM.

                                                  Далее создаем сниппет utmSnippet — для сохранения значений UTM меток в кукки. Для чего это нужно, а чтобы отслеживать метки не только по ссылке, по которой пришел клиент с рекламы, а также при переходе по другим страницам сайта метки не терялись.

                                                  <?php
                                                  if (!isset($_COOKIE['utm_source']))
                                                  {
                                                      $utm_source = $_GET['utm_source'];
                                                      setcookie("utm_source", $utm_source, time() + 60 * 60 * 24 * 5);
                                                  }
                                                  if (!isset($_COOKIE['utm_medium']))
                                                  {
                                                      $utm_medium = $_GET['utm_medium'];
                                                      setcookie("utm_medium", $utm_medium, time() + 60 * 60 * 24 * 5);
                                                  }
                                                  if (!isset($_COOKIE['utm_content']))
                                                  {
                                                      $utm_content = $_GET['utm_content'];
                                                      setcookie("utm_content", $utm_content, time() + 60 * 60 * 24 * 5);
                                                  }
                                                  if (!isset($_COOKIE['utm_term']))
                                                  {
                                                      $utm_term = $_GET['utm_term'];
                                                      setcookie("utm_term", $utm_term, time() + 60 * 60 * 24 * 5);
                                                  }
                                                  if (!isset($_COOKIE['utm_campaign']))
                                                  {
                                                      $utm_campaign = $_GET['utm_campaign'];
                                                      setcookie("utm_campaign", $utm_campaign, time() + 60 * 60 * 24 * 5);
                                                  }
                                                  Вызываем, в body сниппет

                                                  [[!utmSnippet?]]
                                                  Переходим к получению, подстановке в скрытые поля и передаче значений UTM меток, client ID в AmoCRM.

                                                  Получаем значения Client ID:

                                                  $(document).ready(function () {
                                                  //GA Client_ID
                                                  var clientId = ga.getAll()[0].get('clientId');
                                                  $(document).ready(function () {
                                                    $('form input[name = "client_id_google"]').val(clientId);
                                                  });
                                                  
                                                  // Yandex.metrica client ID
                                                  var clientidym = yaCounterXXXXXXX.getClientID();
                                                  $(document).ready(function () {
                                                    $('form input[name = "client_id_yandex"]').val(clientidym);
                                                  });
                                                  }

                                                  Для облегчения получения значений UTM меток воспользуемся либой js-cookie

                                                  $(document).ready(function () {
                                                  var utm_campaign = Cookies.get('utm_campaign');
                                                  $(document).ready(function () {
                                                    $('form input[name = "utm_campaign"]').val(utm_campaign);
                                                  });
                                                  
                                                  var utm_content = Cookies.get('utm_content');
                                                  $(document).ready(function () {
                                                    $('form input[name = "utm_content"]').val(utm_content);
                                                  });
                                                  
                                                  var utm_medium = Cookies.get('utm_medium');
                                                  $(document).ready(function () {
                                                    $('form input[name = "utm_medium"]').val(utm_medium);
                                                  });
                                                  
                                                  var utm_source = Cookies.get('utm_source');
                                                  $(document).ready(function () {
                                                    $('form input[name = "utm_source"]').val(utm_source);
                                                  });
                                                  
                                                  var utm_term = Cookies.get('utm_term');
                                                  $(document).ready(function () {
                                                    $('form input[name = "utm_term"]').val(utm_term);
                                                  });
                                                  }
                                                    Воеводский Михаил
                                                    02 декабря 2019, 01:37
                                                    Иван, спасибо!
                                                      Иван Бочкарев
                                                      Иван Бочкарев Администратор
                                                      03 декабря 2019, 00:40
                                                      Так как удалить коммент не могу. Вот обновленный код:

                                                      Сниппет: utmSnippet

                                                      <?php
                                                      $cookies = array('utm_source', 'utm_medium', 'utm_content', 'utm_term', 'utm_campaign');
                                                      
                                                      foreach ($cookies as $key) {
                                                          if (!isset($_COOKIE[$key]))
                                                          {
                                                              $val = $_GET[$key];
                                                              $_COOKIE[$key] = $val;
                                                              setcookie($key, $val, time() + 60 * 60 * 24 * 5);
                                                          }
                                                      }
                                                      Обновление получения данных из кук и передача в поля:

                                                      <script>
                                                        //GA Client_ID
                                                        ga(function (tracker) {
                                                          var clientId = tracker.get('clientId');
                                                          $('form input[name=client_id_google]').val(clientId);
                                                        });
                                                      
                                                        // Yandex.metrica client ID
                                                        ym(XXXXXXXXX, 'getClientID', function (clientID) {
                                                          $('form input[name=client_id_yandex]').val(clientID);
                                                        });
                                                        
                                                        var cookies = ['utm_campaign', 'utm_content', 'utm_medium', 'utm_source', 'utm_term'];
                                                        cookies.forEach(function(key) {
                                                          $('form input[name=' + key + ']').val(Cookies.get(key));
                                                        });
                                                      </script>
                                                      Слава
                                                      Слава Старожил
                                                      16 октября 2020, 16:12
                                                      Добрый день, подскажите пожалуйста как меняется формат списка товаров, мне нужно выводин некоторые кастомные поля из товара которые добавил. Но никак не могу разобраться где это меняется.

                                                      prnt.sc/uy0m24
                                                        Слава
                                                        Слава Старожил
                                                        14 ноября 2020, 20:15
                                                        Вообще мертво все по поводу этого компонента?
                                                        Купить купил, а извините вопрос возник ноль ответа, ни в поддержке ни тут.
                                                          Николай Савин
                                                          Николай Савин Администратор
                                                          14 ноября 2020, 20:25
                                                          Здравствуйте. Поддержка должна сидеть возле компьютера круглосуточно, отходя только на обед?
                                                          Я видел ваш вопрос в магазине. Отвечу как будет возможность.

                                                          Касательно вашего вопроса здесь. Я вот ни слова не понял из вопроса.
                                                            Слава
                                                            Слава Старожил
                                                            14 ноября 2020, 20:37
                                                            Прошу прощения за возможный флуд во всех местах, но дело совсем не в «должна сидеть возле компьютера круглосуточно», а в том что месяц прошел с момента первого обращения в поддержку (https://prnt.sc/vj63iq), но даже если не понятно было то все же человек ждет ответа, а его не было.
                                                            Буду ждать возможно попробую как-то более понятно обьяснить всю суть проблемы.
                                                            Но большое спасибо за ответ хотя бы тут.
                                                              Иван Бочкарев
                                                              Иван Бочкарев Администратор
                                                              14 ноября 2020, 21:22
                                                              Николай забрал дополнение на поддержку неделю назад. Нужно время для адаптации под новое АПИ
                                                                Слава
                                                                Слава Старожил
                                                                14 ноября 2020, 21:27
                                                                Принял, спасибо, с нетерпением жду.
                                                                Хорошо что вообще к Николаю перешел компонент во владения, ранее был человек другой и он совсем не отвечал ( А тут появился хотя бы фидбек от разработчиков
                                                                  Иван Бочкарев
                                                                  Иван Бочкарев Администратор
                                                                  14 ноября 2020, 21:29
                                                                  Просто Михаил отошел от работы с MODX и попросил найти человека на замену. Что и было сделано.
                                                                    Слава
                                                                    Слава Старожил
                                                                    14 ноября 2020, 21:30
                                                                    А сможете пожалуйста сориентировать по срокам когда планируется обновление?
                                                                      Николай Савин
                                                                      Николай Савин Администратор
                                                                      30 ноября 2020, 15:28
                                                                      Иван вас вряд ли сможет сориентировать.
                                                                      Вообще странно такой вопрос задавать постороннему человеку.
                                                                      Обновление будет выпущено по мере свободного времени.
                                                        Виталик
                                                        Виталик Старожил
                                                        30 ноября 2020, 13:26
                                                        Добрый день. Есть понимание, когда выйдет обновленный пакет для AMO Crm?
                                                        клиенты ждут)) уже в следующем году или можно в этом ждать?
                                                          Николай Савин
                                                          Николай Савин Администратор
                                                          30 ноября 2020, 15:29
                                                          Добрый день. По мере свободного времени. Не готов ответить точнее.
                                                          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                                          81