Отправляем заказы из ms2 в лиды CRM Битрикс24 (старый протокол)


В сообществе ни раз задавали вопрос про выгрузку заказов из MODX в CRM Битрикс24. Есть достаточно простой способ создавать лиды по старому протоколу. Делается это одним плагином на событие msOnCreateOrder. Да, функционал будет довольно ограничен, но с помощью него добавить лид вполне возможно, правда не прикрепляя к лиду товары. За то не нужно заморачиваться с созданием приложения, получения токена и т.д.

Плагин


Необходимо указать некоторые настройки в константы:
  • CRM_HOST — Хост компании в Битрикс24,
  • CRM_LOGIN и CRM_PASSWORD — Логин/пароль юзера в Битрикс24 с правами CRM.
switch ($modx->event->name) {
    case 'msOnCreateOrder':
        define('CRM_HOST', 'domain.bitrix24.ru');
        define('CRM_LOGIN', 'username');
        define('CRM_PASSWORD', 'password');
        define('CRM_PORT', '443');
        define('CRM_PATH', '/crm/configs/import/lead.php');
        
        $data = array(
            'order' => $msOrder->toArray(),
            'delivery' => $msOrder->Delivery->toArray(),
            'payment' => $msOrder->Payment->toArray(),
            'address' => $msOrder->Address->toArray(),
            'user' => $msOrder->User->toArray(),
            'user_profile' => $msOrder->UserProfile->toArray(),
        );
        $receiver_name = explode(' ', $data['address']['receiver']);
        
        // Формируем данные лида
        $post = array(
            'LOGIN' => CRM_LOGIN,
            'PASSWORD' => CRM_PASSWORD,
            'TITLE' => 'Заказ ' . $data['order']['num'],
            'COMPANY_TITLE' => 'Сайт',
            'NAME' => $receiver_name[0] ?: '',
            'LAST_NAME' => $receiver_name[1] ?: '',
            'COMMENTS' => $data['address']['comment'],
            'OPPORTUNITY' => $data['order']['cost'],
            'CURRENCY_ID' => 'RUB',
            'ADDRESS' => ($data['address']['country'] . ' ' . $data['address']['region'] . ' ' . $data['address']['city'] . ', ' . $data['address']['street'] . ', ' . $data['address']['building'] . ', ' . $data['address']['room'] . ', ' . $data['address']['index']),
            'PHONE_WORK' => $data['address']['phone'],
            'WEB_WORK' => '',
            'EMAIL_WORK' => $data['user_profile']['email'],
            'STATUS_ID' => 'NEW',
            'OPENED' => 'Y',
            'SOURCE_ID' => 8, // Источник - Заказ на сайте
            'ASSIGNED_BY_ID' => 4, // ID ответственного юзера в Битрикс24
        );
        
        // Создаем лид
        if ($fp = fsockopen('ssl://' . CRM_HOST, CRM_PORT, $errno, $errstr, 30)) {
            $post_str = http_build_query($post);
            $headers = "POST " . CRM_PATH . " HTTP/1.0\r\n";
            $headers .= "Host: " . CRM_HOST . "\r\n";
            $headers .= "Content-Type: application/x-www-form-urlencoded\r\n";
            $headers .= "Content-Length: " . strlen($post_str) . "\r\n";
            $headers .= "Connection: close\r\n\r\n";
            $headers .= $post_str;
            fwrite($fp, $headers);
            
            $result = '';
            while (!feof($fp)) {
                $result .= fgets($fp, 128);
            }
            fclose($fp);
            $response = explode("\r\n\r\n", $result);
        }
    break;
}
 

Итого


Как видите, все довольно просто. Можно даже немножко кастомизировать данные, которые будут попадать в CRM.
Павел Гвоздь
29 августа 2017, 06:22
modx.pro
3
6 120
+2
Поблагодарить автора Отправить деньги

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

Евгений Шеронов
28 августа 2017, 16:06
+1
Уже как 2 года назад было: FormIT. Собираем заявки(лиды) в Битрикс 24 :)
А в комментарии ниже, тоже есть отправка по новому заказу.

Но справедливости ради, этот код поприятнее выглядит)
    Александр
    28 августа 2017, 17:32
    +1
    Паша, может через вебхук проще?
    Может кому надо будет:
    Идем в б24->Приложения->вебхуки
    Создаем входящий вебхук с правами CRM. Копируем ссылку.
    Идем в modx->системные настройки->создаем настройку «webHookUrl» и в значение вставляем скопированную ссылку.
    Создаем плагин, как Выше написал Павел, на событие msOnCreateOrder

    <?php
    switch ($modx->event->name) {
        case 'msOnCreateOrder':
    		if($webHookUrl = $modx->getOption('webHookUrl',null,false)){
    			break;
    		}
    		
            
            $data = array(
                'order' => $msOrder->toArray(),
                'delivery' => $msOrder->Delivery->toArray(),
                'payment' => $msOrder->Payment->toArray(),
                'address' => $msOrder->Address->toArray(),
                'user' => $msOrder->User->toArray(),
                'user_profile' => $msOrder->UserProfile->toArray(),
            );
            $receiver_name = explode(' ', $data['address']['receiver']);
            
            // Формируем данные лида
            $post = array(
                'TITLE' => 'Заказ c сайта ' . $data['order']['num'],
                'COMPANY_TITLE' => 'Сайт',
                'NAME' => $receiver_name[0] ?: '',
                'LAST_NAME' => $receiver_name[1] ?: '',
                'COMMENTS' => $data['address']['comment'],
                'OPPORTUNITY' => $data['order']['cost'],
                'CURRENCY_ID' => 'RUB',
                'ADDRESS' => ($data['address']['country'] . ' ' . $data['address']['region'] . ' ' . $data['address']['city'] . ', ' . $data['address']['street'] . ', ' . $data['address']['building'] . ', ' . $data['address']['room'] . ', ' . $data['address']['index']),
                'PHONE_WORK' => $data['address']['phone'],
                'WEB_WORK' => '',
                'EMAIL_WORK' => $data['user_profile']['email'],
                'STATUS_ID' => 'NEW',
                'OPENED' => 'Y',
                'SOURCE_ID' => 8, // Источник - Заказ на сайте
                'ASSIGNED_BY_ID' => 4, // ID ответственного юзера в Битрикс24
            );
            
            // Создаем лид
            $queryData = http_build_query(
                array(
                    "fields" => $post
                )
            );
        
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_SSL_VERIFYPEER => 0,
                CURLOPT_POST => 1,
                CURLOPT_HEADER => 0,
                CURLOPT_RETURNTRANSFER => 1,
                CURLOPT_URL => $webHookUrl,
                CURLOPT_POSTFIELDS => $queryData,
            ));
    		curl_exec($curl);
    		curl_close($curl);
    	break;
    }
      Александр
      29 августа 2017, 10:49
      0
      Пардоньте, ошибку у себя заметил:

      if(!$webHookUrl = $modx->getOption('webHookUrl',null,false)){
      	break;
      }
        Константин
        18 сентября 2017, 21:38
        0
        Александр, а у меня два вопроса как спецу по интеграции.

        1. Как можно передать данные по вебхукам из обычной формы?
        2. А куда девать секретный код, который выдаётся Битриксом?
          Павел Гвоздь
          18 сентября 2017, 22:35
          1
          0
          У Александра в коде ошибка. Он не обозначил метод, с которым работаем… Видимо не проверял код. В данном случае это «crm.lead.add».

          1) Вот это положить в assets/b24/bxresthandler.class.php:
          <?php
          class bxRestHandler
          {
              public $url;
              public $config = array();
              /** @var modX $modx */
              protected $modx;
              
              /**
               * @param modX  $modx
               * @param array $config
               */
              public function __construct(modX &$modx, array $config = array())
              {
                  $this->modx = &$modx;
                  $this->config = &$config;
                  $this->url = $this->config['url'] ?: $this->modx->getOption('bx24_resturl');
              }
              
              /**
               * @param string $action
               * @param array  $data
               * @param string $method
               */
              public function request($action, array $data = array(), $method = 'GET')
              {
                  if (empty($this->url)) {
                      return $this->failure('Empty url');
                  }
                  
                  $curl = curl_init();
                  curl_setopt_array($curl, array(
                      CURLOPT_URL => $this->url . $action,
                      CURLOPT_RETURNTRANSFER => true,
                      CURLOPT_SSL_VERIFYPEER => false,
                      CURLOPT_SSL_VERIFYHOST => false,
                      CURLOPT_POST => ($method == 'POST'),
                      CURLOPT_POSTFIELDS => http_build_query($data),
                  ));
                  $response = curl_exec($curl);
                  if ($errno = curl_errno($curl)) {
                      $result = $this->failure('Bad request', array(
                          'errorCode' => $errno,
                          'errorMessage' => curl_error($curl),
                      ));
                  } else {
                      if ($response = $this->modx->fromJSON($response)) {
                          if (empty($response['error']) && empty($response['error_description'])) {
                              $result = $this->success('', $response);
                          } else {
                              $result = $this->failure(($response['error_description'] ?: $response['error']), $response);
                          }
                      } else {
                          $result = $this->failure('Bad JSON string');
                      }
                  }
                  curl_close($curl);
                  
                  return $result;
              }
              
              /**
               * @param string $message
               * @param array  $data
               *
               * @return array
               */
              public function success($message = '', $data = array())
              {
                  return array(
                      'success' => true,
                      'message' => $message,
                      'data' => $data,
                  );
              }
          
              /**
               * @param string $message
               * @param array  $data
               *
               * @return array
               */
              public function failure($message = '', $data = array())
              {
                  return array(
                      'success' => false,
                      'message' => $message,
                      'data' => $data,
                  );
              }
          }

          2) Создать настройку bx24_resturl с УРЛом вебхука.

          3) Создать сниппет-хук для FormIt bx24FormItHook:
          <?php
          if (!$bx = $modx->getService('bxresthandler', 'bxRestHandler', MODX_ASSETS_PATH . 'b24/', array(
              'url' => $modx->getOption('bx24_resturl'),
          ))) {
              return;
          }
          if (!is_object($hook)) {
              return;
          }
          $data = $hook->getValues();
          if (!empty($data['form'])) {
              $bx->request('crm.lead.add', array(
                  'fields' => array(
                      'TITLE' => $data['form'],
                      'COMMENTS' => $data['comment'] ?: '',
                      
                      // Контакт
                      'NAME' => $data['name'],
                      'PHONE' => array(array(
                          'VALUE' => $data['phone'],
                          'VALUE_TYPE' => 'WORK',
                      )),
                      'EMAIL' => array(array(
                          'VALUE' => $data['email'],
                          'VALUE_TYPE' => 'WORK',
                      )),
                      'ADDRESS_CITY' => $data['city'] ?: '',
                      
                      //
                      'SOURCE_ID' => $data['source_id'], // ID источника
                      'ASSIGNED_BY_ID' => 56, // ID ответственного
                  ),
              ));
          }

          4) Вызывать примерно так:
          {'!AjaxForm' | snippet :[
              'snippet' => 'FormIt',
              'hooks' => 'email,bx24FormItHook',
              'form' => 'tpl.AjaxForm.example',
          ]}

          5) Чанк tpl.AjaxForm.example содержит форму с полями, которые используются в сниппете-хуке bx24FormItHook:
          <input type="hidden" name="form" value="Контакты">
          <input type="text" name="name" value="">
          <input type="text" name="phone" value="">
          <input type="text" name="email" value="">
          <input type="text" name="city" value="">
          <textarea name="comment"></textarea>
            Константин
            18 сентября 2017, 22:41
            0
            Ого! Павел! Низкий поклон вам за такой развёрнутый ответ! Буду пробовать.
              Константин
              19 сентября 2017, 01:06
              0
              С первого захода не получилось))
              Вроде сделал всё по инструкции, но не создаётся лид в Битрикс24, я даже жёстко прописывал данные передаваемые из сниппета в Биртикс24, но увы…

              Можете подсказать в чём может быть косяк?
                Константин
                19 сентября 2017, 05:17
                0
                Вот такая ошибка возникает
                [2017-09-19 02:13:43] (ERROR @ ******/xpdo/om/xpdoobject.class.php : 240) Error 42000 executing statement: 
                Array
                (
                    [0] => 42000
                    [1] => 1055
                    [2] => Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ab_ab.FormItForm.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
                )
                
                <s></s>
                  Павел Гвоздь
                  19 сентября 2017, 06:33
                  0
                  Ну так решайте. Она никак не связана с моим кодом. У меня на паре сайтов все работает.
                    Константин
                    19 сентября 2017, 09:40
                    0
                    Понял. Раз не у вас, то буду копать. За код спасибо!
                    Воеводский Михаил
                    19 сентября 2017, 10:22
                    0
                    Эта ошибка связана с MySQL 5.7. Ищите, в сообществе данный вопрос поднимался не раз.
                      Константин
                      19 сентября 2017, 10:52
                      0
                      Я поправил ошибку. Но не в ней дело оказывается было. И после исправления лид не создаётся(
                        Павел Гвоздь
                        19 сентября 2017, 10:54
                        0
                        Надо смотреть, как и что вы сделали. У меня с кодом выше все корректно работает, как уже писал выше, на паре сайтов.
                          Константин
                          19 сентября 2017, 11:28
                          0
                          Вроде как всё по инструкцмм

                          1)Создать файл…
                          https://yadi.sk/i/2z6FaL1i3N2hrU
                          <?php
                          class bxRestHandler
                          {
                              public $url;
                              public $config = array();
                              /** @var modX $modx */
                              protected $modx;
                              
                              /**
                               * @param modX  $modx
                               * @param array $config
                               */
                              public function __construct(modX &$modx, array $config = array())
                              {
                                  $this->modx = &$modx;
                                  $this->config = &$config;
                                  $this->url = $this->config['url'] ?: $this->modx->getOption('bx24_resturl');
                              }
                              
                              /**
                               * @param string $action
                               * @param array  $data
                               * @param string $method
                               */
                              public function request($action, array $data = array(), $method = 'GET')
                              {
                                  if (empty($this->url)) {
                                      return $this->failure('Empty url');
                                  }
                                  
                                  $curl = curl_init();
                                  curl_setopt_array($curl, array(
                                      CURLOPT_URL => $this->url . $action,
                                      CURLOPT_RETURNTRANSFER => true,
                                      CURLOPT_SSL_VERIFYPEER => false,
                                      CURLOPT_SSL_VERIFYHOST => false,
                                      CURLOPT_POST => ($method == 'POST'),
                                      CURLOPT_POSTFIELDS => http_build_query($data),
                                  ));
                                  $response = curl_exec($curl);
                                  if ($errno = curl_errno($curl)) {
                                      $result = $this->failure('Bad request', array(
                                          'errorCode' => $errno,
                                          'errorMessage' => curl_error($curl),
                                      ));
                                  } else {
                                      if ($response = $this->modx->fromJSON($response)) {
                                          if (empty($response['error']) && empty($response['error_description'])) {
                                              $result = $this->success('', $response);
                                          } else {
                                              $result = $this->failure(($response['error_description'] ?: $response['error']), $response);
                                          }
                                      } else {
                                          $result = $this->failure('Bad JSON string');
                                      }
                                  }
                                  curl_close($curl);
                                  
                                  return $result;
                              }
                              
                              /**
                               * @param string $message
                               * @param array  $data
                               *
                               * @return array
                               */
                              public function success($message = '', $data = array())
                              {
                                  return array(
                                      'success' => true,
                                      'message' => $message,
                                      'data' => $data,
                                  );
                              }
                          
                              /**
                               * @param string $message
                               * @param array  $data
                               *
                               * @return array
                               */
                              public function failure($message = '', $data = array())
                              {
                                  return array(
                                      'success' => false,
                                      'message' => $message,
                                      'data' => $data,
                                  );
                              }
                          }
                          2) Системная настройка
                          https://yadi.sk/i/9OGzs3ud3N2hWe

                          3) Сниппет
                          https://yadi.sk/i/r820Bx_A3N2i6L
                          <?php
                          if (!$bx = $modx->getService('bxresthandler', 'bxRestHandler', MODX_ASSETS_PATH . 'b24/', array(
                              'url' => $modx->getOption('bx24_resturl'),
                          ))) {
                              return;
                          }
                          if (!is_object($hook)) {
                              return;
                          }
                          $data = $hook->getValues();
                          // if (!empty($data['form'])) {
                              $bx->request('crm.lead.add', array(
                                  'fields' => array(
                                      'TITLE' => $data['form'],
                                      'COMMENTS' => $data['comment'] ?: '',
                                      
                                      // Контакт
                                      'NAME' => $data['name'],
                                      'PHONE' => array(array(
                                          'VALUE' => $data['phone'],
                                          'VALUE_TYPE' => 'WORK',
                                      )),
                                      'EMAIL' => array(array(
                                          'VALUE' => '',
                                          'VALUE_TYPE' => 'WORK',
                                      )),
                                      'ADDRESS_CITY' => $data['city'] ?: '',
                                      
                                      //
                                      'SOURCE_ID' => 8, // ID источника
                                      'ASSIGNED_BY_ID' => 1, // ID ответственного
                                  ),
                              ));
                          // }
                          4) Вызов
                          [[!AjaxForm?
                              &snippet=`FormIt`
                              &form=`formTpl`
                              &hooks=`FormItSaveForm,email,bx24FormItHook`
                              &formName=`AlfaKassa`
                              &validate=`name:minLength=^2^,phone:required`
                              &formFields=`name,phone`
                              &fieldNames=`name==Имя,phone==Телефон`
                              &successMessage=`Сообщение успешно отправлено, наш менеджер свяжеться с Вами в ближайшее время`
                              &emailTpl=`emailTpl`
                              &emailSubject=`*`
                              &emailTo=`*`
                              &emailFrom=`*`
                              &emailFromName=`*`
                              ]]
                          5) Форма
                          <form class="order-form" method="post" action="[[~[[*id]]]]">
                                  <span class="h2">Заявка на Альфа‑Кассу</span>
                                  <input type="hidden" name="form" value="Контакты">
                                  <!-- <input type="hidden" name="TITLE" id="" value="Заявка"> -->
                                  <input class="input" type="text" name="name" placeholder="Имя" value="" required>
                                  <!-- <input class="input" type="text" name="COMPANY_TITLE" placeholder="Компания" value="" required> -->
                                  <input class="input" type="tel" name="phone" placeholder="Телефон" value="" required>
                                  <!-- <input class="input" type="email" name="EMAIL_HOME" placeholder="Email" value="" required> -->
                                  <!-- <input class="input" type="text" name="PROMOCODE" placeholder="Промо код" value=""> -->
                                  <label class="ab-check order-data">
                                    <input type="checkbox" value="1" name="check"><span class="ab-check-custom"></span><span class="ab-check-label">Я согласен на обработку персональных данных</span>
                                  </label>
                                  <input class="check-btn button-red" name="submit" type="submit" value="Отправить заявку" id="order-btn">
                                </form>
                            Евгений Webinmd
                            08 ноября 2017, 18:22
                            0
                            я понимаю, что это уже никому не надо, но мало ли.
                            Там в пункте Системные настройки необходимо убрать слово profile/ из url
            Урал
            28 августа 2017, 20:11
            0
            Лид нужно создавать из формы обратной связи на сайте.
            А заказ из корзины минишопа нужно отправлять в виде «Сделки», а все товары записывать в «Товары сделки».
            Естественно все это делать через «Входящий вебхук» битрикса.
            Есть у кого-нибудь такие наработки?
              Павел Гвоздь
              28 августа 2017, 20:53
              0
              А заказ из корзины минишопа нужно отправлять в виде «Сделки», а все товары записывать в «Товары сделки».
              Есть у кого-нибудь такие наработки?
              Есть…
                Урал
                28 августа 2017, 20:57
                0
                Сколько?
                  Павел Гвоздь
                  28 августа 2017, 20:58
                  0
                  Чего «сколько»?
                    Урал
                    28 августа 2017, 21:07
                    0
                    стоит
                      Павел Гвоздь
                      28 августа 2017, 21:09
                      0
                      Если хотите воспользоваться моей услугой — пишите в скайп или телеграм…
                      Скайп: pavelgvozdb
                      Телеграм: t.me/pavelgvozdb
                Александр
                28 августа 2017, 22:09
                0
                В течении этой — следующей недели выпущу готовое решение на б24.
                Выпросил разработку у Михаила =)
                Пока функционал:
                Загрузка заказов из ms2 в битрикс24
                Загрузка клиентов из ms2 в битрикс24
                Поиск клиентов по базе ms2 в битрикс24 перед загрузкой
                Возможность синхронизировать товары
                Возможность синхронизировать статусы сделок/заказов.
                При оформлении заказа с ms2 добавить новый метод оплаты, который будет брать счет, сформированный в ms2 и проставлять номер заказа по логике битрикс24

                Добавлю и работу с formit

                Все работать будет также, через вебхук
                  Павел Гвоздь
                  28 августа 2017, 22:12
                  0
                  Хорошо, что предупредили. Собирался завтра/послезавтра еще пару статей выпустить о том, как добавлять лиды и сделки (с товарами) по новому протоколу взаимодействия (через приложение).
                    Урал
                    28 августа 2017, 22:18
                    -3
                    Выпускайте, не стесняйтесь.
                    Урал
                    28 августа 2017, 22:37
                    0
                    Загрузка заказов из ms2 в битрикс24
                    Только не в лид (как выше писали), а в сделку, пожалуйста.

                    При оформлении заказа с ms2 добавить новый метод оплаты, который будет брать счет, сформированный в ms2 и проставлять номер заказа по логике битрикс24
                    Не совсем понял про новый метод оплаты… Зачем создавать новый метод оплаты для выдергивания номера заказа из битрикса?
                    По мне, так достаточно чтобы в битрикс передавался вид оплаты и статус оплаты, если не «самовывоз», при этом только в одну сторону, т.к. менеджеры будут сидеть только в битриксе, в админку сайта им незачем лазить.
                      Александр
                      28 августа 2017, 22:45
                      0
                      1) Клиент оформляет заказ через сайт? А как идентифицировать клиента с сайта? В 90% случаев по номеру заказа. На опыте — когда звонит клиент, получается полная неразбериха. В этих целях и планировал брать номер заказа (номер счета) с б24, и то, если выбран способ оплаты на расчетный счет.
                      Это будет необязательным.

                      2) Для того, чтобы брать готовый счет с б24 (при оплате на расчетный счет) и выдавать его клиенту автоматом, при смене статуса заказа. (Например «Заказ подтвержден, ожидает оплаты»).

                      3) В лиды по логике попадают потенциальные клиенты. Из лида в сделку перевести — 1 клик.
                      Сейчас что готово работает так: если клиент делает повторный заказ (уже в базе найден), попадает в сделки. Если клиент не найден — в лиды. Таким образом можно распределять качество заказа. Товарные позиции в любом случае и туда, и туда попадают
                        Урал
                        28 августа 2017, 23:56
                        0
                        1) Клиент оформляет заказ через сайт? А как идентифицировать клиента с сайта? В 90% случаев по номеру заказа. На опыте — когда звонит клиент, получается полная неразбериха. В этих целях и планировал брать номер заказа (номер счета) с б24, и то, если выбран способ оплаты на расчетный счет.
                        Если клиент оформляет на сайте. Сразу после оформления заказ (имя, тел, емыл, адрес итд) и все товары (товары из корзины) попадают в б24.
                        Если клиент звонит/пишет емайл. Менеджеры тоже оформляют заказ на сайте, а не в б24! т.к. нет смысла заново вводить в б24 все товары, цены, свойства, остатки.
                        В обоих случаях нужно автоматически идентифицировать клиента, с целью не дублирования клиента в б24, по телефону и/или емайлу.

                        Если клиент звонит в офис после оформления заказа, то его можно идентифицировать первоначально по телефону, имени, емайлу, голосу, а затем уточнить номер заказа, если он вдруг тупанул или богатый и сделал несколько заказов.
                        Идентификации проходят в системе б24, в админку минишопа менеджер не заходит.

                        2) Для того, чтобы брать готовый счет с б24 (при оплате на расчетный счет) и выдавать его клиенту автоматом, при смене статуса заказа. (Например «Заказ подтвержден, ожидает оплаты»).
                        Не вижу смысла готовый счет перегонять в минишоп для того чтобы его выслать клиенту, б24 имеет кучу открытых линий и настраиваемых статусов чтобы самостоятельно справиться.

                        3) В лиды по логике попадают потенциальные клиенты. Из лида в сделку перевести — 1 клик.
                        Сейчас что готово работает так: если клиент делает повторный заказ (уже в базе найден), попадает в сделки. Если клиент не найден — в лиды. Таким образом можно распределять качество заказа. Товарные позиции в любом случае и туда, и туда попадают
                        Я не знаю какие бизнесс-процессы у вас, но у меня если клиент уже выбрал товар, оформил заказ и оплатил его, то он уже не потенциальный клиент, а обыкновенный и нужно срочно начинать работу по нему.
                        Если клиент заполнил форму в контактах или хочет чтобы ему перезвонили или какой-то вопрос по товару, то его в лид записывать и звонить/писать ему по настроению.
                          Александр
                          29 августа 2017, 00:29
                          +1
                          Менеджеры тоже оформляют заказ на сайте, а не в б24! т.к. нет смысла заново вводить в б24 все товары, цены, свойства, остатки.
                          Идентификации проходят в системе б24, в админку минишопа менеджер не заходит.
                          А вы мастер противоречий…
                          Я на личном опыте испытал проблему идентификации. Когда клиент Вам говорит «у меня заказ №1708/4», а б24 проблематично(криво) ищет по кастомным полям. Вообщем то вас никто не станет заставлять активировать данную функцию.
                          По e-mail? Клиент звонит, диктовать email через ip-телефонию? Глупо. По телефону? Та же практика показывает, клиент может спокойно звонить с рабочего/номера жены/второго номера…

                          Не вижу смысла готовый счет перегонять в минишоп для того чтобы его выслать клиенту, б24 имеет кучу открытых линий и настраиваемых статусов чтобы самостоятельно справиться.
                          Вы неправильно поняли. Счет, она же, как правило счет-оферта генерируется через б24. Да бы не было путаницы, можно генерировать и отправлять её клиенту автоматом. Опять таки, функционально отключить можно.

                          оформил заказ и оплатил его
                          А кто сказал про оплату? Я работал в интернет-магазине с 100тней заказов в день. Как правило, 20% из них запрос цен (тендерщики), 10% оплачиваются с сайта. В рф не так то любят кота в мешке.
                          хочет чтобы ему перезвонили
                          Как раз для этого и есть открытые линии.
                            Урал
                            29 августа 2017, 11:00
                            -2
                            Сложно в это поверить, что у вас «б24 проблематично(криво) ищет», если набрать в поиске — 1708/4, у меня, например, прекрасно ищет.
                            Меня начинают терзать смутные сомнения, что вы сможете выпустить качественный продукт.

                            Как правило, 20% из них запрос цен (тендерщики), 10% оплачиваются с сайта. В РФ не так то любят кота в мешке.

                            Сейчас что готово работает так: если клиент делает повторный заказ (уже в базе найден), попадает в сделки. Если клиент не найден — в лиды.
                            1 раз — тендерщик = лид, 2 раз — тендерщик уже не тендерщик = сделка?
                            А если клиент ошибся с написанием емайл, то он опять — тендерщик?
                            Куда записывать простых лидов, которые мимо проходили и вопрос задали или форму заполнили?
                              Александр
                              29 августа 2017, 13:17
                              0
                              Сложно в это поверить, что у вас «б24 проблематично(криво) ищет», если набрать в поиске — 1708/4, у меня, например, прекрасно ищет.
                              Меня начинают терзать смутные сомнения, что вы сможете выпустить качественный продукт.
                              Вас никто не просит верить. Это факт, какой смысл мне вам лгать?
                              У б24 есть 2 поиска.
                              А — кривой фильтр (над таблицей сущностей)
                              Б — Общий поиск (в шапке сайта)

                              А — почему кривой? Если Вы будете искать клиента «Федоров» хрен он Вам покажет результат. Там прямое совпадение. Нужно искать именно ИП Федоров А. Ю., причем с учетом регистра.
                              я 2ой месяц за эту хрень бьюсь с разработчиками.
                              В rest запросах да, можно выбрать точность совпадения, типа LIKE.

                              Б — общий шарит даже по документам. Если вбить туда скажем «12», то результатов будет много.
                              Документы дергаются с диска, а на диск закидываются эти документы из почтовых вложений (как правило, иначе почту и б24 Вам не интегрировать). У нас 200 сотрудников. Представьте сколько там pdf,word,excel файликов со значением «12».

                              Меня начинают терзать смутные сомнения, что вы сможете выпустить качественный продукт.
                              А какое мне дело, что там вас терзает? Вас никто ни к чему не принуждает. Если вам нужно, что бы «работало как надо», Павел дал свои контакты. Не нравится — или делайте сами, или просите разработчиков за отдельную плату.
                      Воеводский Михаил
                      29 августа 2017, 01:10
                      +4
                      Выпросил разработку у Михаила =)
                      Александр, не надо утрировать :)
                      По обоюдному согласию Вы занялись разработкой модуля, тк постоянно взаимодействуете с Б24 и лучше представляете все механизмы, которые в нем реализованы )
                        Александр
                        29 августа 2017, 09:50
                        0
                        я вроде бы это же и написал =(
                  Андрей Невский
                  19 сентября 2019, 18:03
                  0
                  Данный плагин работает? Если нет, подскажите есть ли ещё решения для отправки заявок из ms2 в битрикс.
                    Павел Гвоздь
                    19 сентября 2019, 18:11
                    0
                    А проверить не вариант? Это старый метод. Лучше использовать вебхуки.
                      Андрей
                      20 сентября 2019, 09:13
                      0
                      modB24CRM — есть вот такое решение.
                      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                      36