7.09.2020
Zadarma CRM

Grâce à l'interface ouvert API , vous pouvez connecter le CRM gratuit Zadarma à tous les canaux de communication avec des clients.

Un des canaux est le formulaire sur le site. Citons l'exemple du formulaire de la réception des demandes ou des informations en retour du site et de la création des leads dans Teamsale CRM à la base de ces données.

Pour minimiser l'exemple le formulaire est facilité. Nous recommandons de modifier le formulaire pour l'utiliser sur le site, installer vos styles et ajouter la protection pour combattre le spam (CAPTCHA).

Le formulaire est en HTML sans éléments et bibliothèques, est inséré dans le code du site. Pour le fonctionnement du formulaire il faut placer le script pour ajouter les données dans CRM, il est écrit en PHP.

Les étapes d'installation du code pour la création du lead dans CRM du formulaire sur le site

  1. Vérifions que le CRM gratuit est créé et actif, sinon l'activons.
  2. Recevons les clés pour APIdans l'espace client.
  3. Sur l'itinéraire https://my.site.com/zcrm_leads nous créons le script pour envoyer des données du formulaire dans CRM par API (l'exemple en PHP). Dans les champs UserKey et Secret il faut installer vos clés et mot de passe reçus à l'étape 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']))
       ) {
           //Si l client est créé, laissons la note dans un fil
           $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 et secret remplacer par les vôtres de l'espace client 
       $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. Dans le code de votre site ajoutons la forme pour recevoir le lead et l'envoyer dans API: (les champs cachés sont obligatoires pour la demande)
  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. Le forfulaire est installé et accomplie ses fonctions. Mais il n'a pas de design et a l'aspect suivant:









Nous recommandons d'installer votre style et protection (par exemple reCAPTCHA gratuit). Vous pouvez moderniser le formulaire ou le script pour modifier les autres données ou dans une autre séction (par exemple dans un contact ou dans une tâche). Voir toute la liste des possibilités (méthodes) de l'intégration vous trouverez dans une séction API Teamsale CRM.