14.07.2020
Zadarma CRM

Завдяки відкритому інтерфейсу API, ви можете підключати безкоштовну CRM Zadarma до будь-яких каналів зв'язку з клієнтом.

Одним з найпростіших і популярних каналів є форма на сайті. Наведемо приклад повністю працездатною форми для прийому заявок або зворотнього зв'язку з сайту і створення лідів в Teamsale CRM на підставі цих даних.

Для мінімізації прикладу форма максимально спрощена. Ми рекомендуємо модифікувати форму для використання на вашому сайті, як мінімум встановити свої стилі і додати захист для боротьби зі спамом (капчу).

Форма написана на HTML без елементів і бібліотек, вставляється в код сайту. Також для роботи форми на вашому сайті потрібно розмістити скрипт для додавання даних в Teamsale CRM, він написаний на PHP.

Етапи встановлення коду для створення ліда в CRM з форми на сайті

  1. Перевіряємо, що безкоштовна CRM створена і активна, якщо немає, то реєструємося і включаємо.
  2. Отримуємо ключі для API в особистому кабінеті.
  3. За маршрутом https://my.site.com/zcrm_leads створюємо скрипт для відправки даних з форми в CRM через API (даний приклад на PHP). У полях UserKey і Secret потрібно встановити ваш ключ і пароль отримані в пункті 2.
  4. <?php
    $postData = $_POST;
    if ($postData) {
       if (isset($postData['phones'], $postData['phones'][0], $postData['phones'][0]['phone'])) {
           $postData['phones'][0]['type'] = 'work';
       }
       if (isset($postData['contacts'], $postData['contacts'][0], $postData['contacts'][0]['value'])) {
           $postData['contacts'][0]['type'] = 'email_work';
       }
       $params = ['lead' => $postData];
       $params['lead']['lead_source'] = 'form';
    
       $leadData = makePostRequest('/v1/zcrm/leads', $params);
       if (isset($leadData['status'], $leadData['data'], $leadData['data']['id'])
           && $leadData['status'] === 'success'
           && (isset($postData['comment']) && !empty($postData['comment']))
       ) {
           //Якщо клієнт створений то залишимо текстову замітку в стрічку
           $addFeedMethod = sprintf('/v1/zcrm/customers/%s/feed', $leadData['data']['id']);
           $messageData = ['content' => $postData['comment']];
           makePostRequest($addFeedMethod, $messageData);
       }
    
       var_dump($leadData);
    }
    exit();
    
    function makePostRequest($method, $params)
    {
       // userKey та secret замінити на свої з особистого кабінету
       $userKey = '';
       $secret = '';
       $apiUrl = 'https://api.zadarma.com';
    
       ksort($params);
    
       $paramsStr = makeParamsStr($params);
       $sign = makeSign($paramsStr, $method, $secret);
    
       $curl = curl_init();
       curl_setopt($curl, CURLOPT_URL, $apiUrl . $method);
       curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
       curl_setopt($curl, CURLOPT_POST, true);
       curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
       curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
       curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
       curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
       curl_setopt($curl, CURLOPT_POSTFIELDS, $paramsStr);
       curl_setopt($curl, CURLOPT_HTTPHEADER, [
           'Authorization: ' . $userKey . ':' . $sign
       ]);
    
       $response = curl_exec($curl);
       $error = curl_error($curl);
    
       curl_close($curl);
    
       if ($error) {
           return null;
       } else {
           return json_decode($response, true);
       }
    }
    
    /**
    * @param array $params
    * @return string
    */
    function makeParamsStr($params)
    {
       return http_build_query($params, null, '&', PHP_QUERY_RFC1738);
    }
    
    /**
    * @param string $paramsStr
    * @param string $method
    * @param string $secret
    *
    * @return string
    */
    function makeSign($paramsStr, $method, $secret)
    {
       return base64_encode(
           hash_hmac(
               'sha1',
               $method . $paramsStr . md5($paramsStr),
               $secret
           )
       );
    }
  5. У код вашого сайту додаємо форму для отримання ліда і відправки його в API: (Приховані поля обов'язкові для запиту)
  6. <form method="POST" action="/zcrm_leads">
       <label for="name">Name:
       <br>
       <input type="text" id="name" name="name" value="">
       <br>
       <label for="comment">Comment:</label><br>
       <input type="text" id="comment" name="comment" value="">
       <br>
       <label for="phone">Phone:</label><br>
       <input type="text" id="phone" name="phones[0][phone]" value="">
       <br>
       <label for="phone">Email:</label><br>
       <input type="text" id="email" name="contacts[0][value]" value="">
       <br>
       <br>
       <input type="submit" value="Submit">
    </form>
  7. Форма встановлена ​​і може вже повністю виконувати свої функції. Але так як вона не має дизайну то має вигляд подібний до цього:









Рекомендуємо встановити свої стилі і захист (наприклад безкоштовну reCAPTCHA). Також ви можете будь-яким чином модернізувати форму або скрипт, щоб вносити інші дані, або в інший розділ (наприклад в контакти або в завдання). Ознайомитися з повним списком можливостей (методів) інтеграції ви можете в розділі API CRM.