14.07.2020
Zadarma CRM

Gracias a la interfaz abierta de API puedes conectar el CRM Zadarma gratuito a cualquier medio de comunicación con los clientes.

Uno de los canales más comunes es el formulario en el sitio web. Aquí hay un ejemplo de un formulario completamente funcional para aceptar solicitudes o comentarios del sitio y crear leads en Teamsale sobre la base de estos datos.

Para minimizar el ejemplo el formulario se simplifica al máximo. Recomendamos modificar el formulario para el uso en su sitio web, al menos definir sus propios estilos y añadir medidas de antispam (captcha).

El formulario está en HTML sin elementos ni bibliotecas, se inserta en el código del sitio web. Además, para el funcionamiento del formulario en el sitio web será necesario colocar el script de PHP para agregar datos en Teamsale.

Etapas de configuración del código para la creación de lead en CRM desde el formulario del sitio web

  1. Comprobamos que el CRM gratuito está creado y activado, si no lo está procedemos a registrarse y a activarlo.
  2. Obtenemos las claves API en el área personal.
  3. Por ruta https://my.site.com/zcrm_leads creamos un script para enviar datos del formulario a CRM a través de API (este ejemplo está en PHP). En los campos UserKey y Secret debe establecer su clave y contraseña obtenidas en el punto 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 el clienta se ha creado dejaremos una nota de texto en el flujo de actividad
           $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 sustituir por las propias obtenidas en el área personal
       $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. En el código de su sitio web añadimos el formulario para obtener y enviar el lead en API: (Campos ocultos obligatorios para la solicitud)
  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. El formulario está configurado y listo para sus funciones. Como no cuenta con un diseño será parecido a este:









Recomendamos definir estilos propios y protección (por ejemplo, reCAPTCHA gratuito). También puede actualizar el formulario de cualquier manera, ya sea un script para contribuir con otros datos o en otro apartado (por ejemplo, contactos o tareas). Puede ver la lista completa de las posibilidades (métodos) de integración en el apartado API Teamsale.