Graças à interface aberta da API, pode ligar o CRM gratuito da Zadarma a qualquer meio de comunicação com os clientes.
Um dos canais mais comuns é o formulário no site. Aqui está um exemplo de um formulário totalmente funcional para aceitar pedidos ou comentários do site e criar leads no Teamsale com base nestes dados.
Para simplificar o exemplo, o formulário é reduzido ao mínimo. Recomendamos modificar o formulário para utilização no seu site, pelo menos definir os seus próprios estilos e adicionar medidas anti-spam (captcha).
O formulário está em HTML, sem elementos nem bibliotecas, e é inserido no código do site. Além disso, para o funcionamento do formulário no site, será necessário colocar o script em PHP para adicionar dados no Teamsale.
Etapas de configuração do código para a criação de lead no CRM a partir do formulário do site
- Verificamos se o CRM gratuito está criado e ativado, caso não esteja, procedemos ao registo e à ativação.
- Obtemos as chaves da API na área pessoal.
- No caminho https://my.site.com/zcrm_leads criamos um script para enviar os dados do formulário para o CRM através da API (este exemplo está em PHP). Nos campos UserKey e Secret deve definir a sua chave e palavra-passe obtidas no ponto 2.
- No código do seu site adicionamos o formulário para obter e enviar o lead via API: (Campos ocultos obrigatórios para o pedido)
- O formulário está configurado e pronto a funcionar. Como não tem design, será semelhante a este:
<?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 o cliente tiver sido criado, deixamos uma nota de texto no fluxo de atividade
$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 substituir pelos próprios obtidos na área pessoal
$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>
Recomendamos definir estilos próprios e proteção (por exemplo, reCAPTCHA gratuito). Também pode atualizar o formulário de qualquer forma, seja com um script para adicionar outros dados ou noutro separador (por exemplo, contactos ou tarefas). Pode consultar a lista completa das possibilidades (métodos) de integração na secção API Teamsale.