Grazie all'interfaccia aperta dell'API, è possibile collegare il CRM gratuito Zadarma a qualsiasi canale di comunicazione con il cliente.
Uno dei canali più comuni è il modulo sul sito web. Di seguito riportiamo un esempio di modulo perfettamente funzionante per la ricezione di richieste o feedback dal sito e la creazione di lead in CRM sulla base di questi dati.
Per semplificare al massimo l'esempio, il modulo è stato semplificato al massimo. Si consiglia di modificare il modulo per l'utilizzo sul proprio sito web, almeno per impostare i propri stili e aggiungere una protezione contro lo spam (captcha).
Il modulo è scritto in HTML senza elementi e librerie e viene inserito nel codice del sito. Inoltre, per il funzionamento del modulo sul sito web sarà necessario inserire lo script PHP per aggiungere dati in CRM.
Fasi di installazione del codice per creare un lead nel CRM dal modulo sul sito web
- Verifichiamo che il CRM gratuito sia stato creato e attivato; in caso contrario, procediamo alla registrazione e all'attivazione.
- Otteniamo le chiavi API nell'area personale.
- Seguendo il percorso https://my.site.com/zcrm_leads, creiamo uno script per inviare i dati dal modulo al CRM tramite API (questo esempio è in PHP). Nei campi UserKey e Secret è necessario inserire la chiave e la password ottenute al punto 2.
- Nel codice del tuo sito web aggiungiamo il modulo per ottenere e inviare il lead nell'API: (I campi nascosti sono obbligatori per la richiesta)
- Il modulo è stato installato e può già svolgere pienamente le sue funzioni. Tuttavia, poiché non ha un design, ha un aspetto simile a questo:
<?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']))
) {
//Se il cliente è stato creato, lasciamo una nota testuale nel feed
$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 e secret sostituire con quelle ottenute nell'area personale
$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
)
);
}
<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>
Si consiglia di impostare i propri stili e protezione (ad esempio reCAPTCHA gratuito). È inoltre possibile aggiornare il modulo in qualsiasi modo, sia con uno script per aggiungere altri dati, sia in un'altra sezione (ad esempio, contatti o attività). È possibile visualizzare l'elenco completo delle possibilità (metodi) di integrazione nella sezione API CRM.