14.07.2020
Zadarma API CRM

Dzięki otwartemu interfejsowi API możesz podłączyć bezpłatny system CRM do dowolnych kanałów komunikacji z klientem.

Jednym z najprostszych i najpopularniejszych kanałów jest formularz na stronie. Poniżej znajduje się przykład w pełni funkcjonalnego formularza do zgłoszeń lub informacji zwrotnych ze strony i tworzenia leads w CRM na podstawie tych danych.

Aby zminimalizować przykład, formularz jest tak prosty, jak to możliwe. Zalecamy zmodyfikowanie formularza do własnych potrzeb, przynajmniej ustawienie własnych stylów i dodanie ochrony przed spamem (captcha).

Formularz jest napisany w HTML bez elementów i bibliotek, jest dodany do kodu strony. Ponadto, aby formularz działał na Twojej stronie, musisz umieścić skrypt, aby dodać dane do CRM, jest on napisany w PHP.

Kroki instalowania kodu w celu utworzenia leads w CRM z formularza na stronie:

  1. Sprawdzamy, czy darmowy CRM jest utworzony i aktywny na koncie Zadarma, jeśli nie, zarejestruj się i skonfiguruj system CRM.
  2. Otrzymujemy klucze API w Panelu klienta.
  3. Na trasowaniu https://my.site.com/zcrm_leads tworzymy skrypt wysyłający dane z formularza do CRM za pośrednictwem interfejsu API (ten przykład jest w języku PHP). W polach UserKey i Secret musisz ustawić swój klucz i hasło uzyskane w kroku 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']))
       ) {
           //Jeśli klient został utworzony, zostaw notatkę tekstową w kanale
           $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 zamienić na swoje dane z Panelu klienta
       $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. W kodzie swojej witryny dodaj formularz, aby uzyskać lead i wysłać go do interfejsu API: (Ukryte pola są wymagane)
  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. Formularz jest zainstalowany i może już w pełni wykonywać swoje funkcje. Ale ponieważ nie ma wybranego design, wygląda to tak:









Zalecamy ustawienie swoich stylów i ochrony (na przykład bezpłatna reCAPTCHA). Możesz także zaktualizować formularz lub skrypt w dowolny sposób, aby wprowadzić inne dane lub w innej sekcji (na przykład kontakty lub zadania). W tej zakładce można zapoznać się z pełną listą możliwości (metod) integracji API CRM.