ืืคื ื ืคืืืช ืืฉื ื, ืืฆืื ื ืืขืจืืช CRM ืืื ืืืช ืืฉืืืืช ืืืจืืืื ืืื ืืืช. ืืืืื ืชืงืืคื ืื, 14 ืืืจืืช ื-000 ืขืืืืื ืืฉืชืืฉื ืื.
ืืขืช ืื ื ืืฆืืขืื ืืืฉืง API ืคืชืื, ืื ืืืื ืืช ืจืื ืืคืื ืงืฆืืืช ืฉื ZCRM. ื-API ืืืคืฉืจ ืื ืืืฉืชืืฉ ื-CRM ืขืืืจ ืื ืขืจืืฆื ืืืืจื.
ืืืื ืื ื ืืชืืจืื ืืงืฆืจื ืืช ืืขืืืื ืขื ื-API ืืืช ืืคืื ืงืฆืืื ืืืืช ืืืืื ื. ื ืืชื ืช ืื ืืืืื ืคืฉืืื ืื ืฉืืืืฉืืช ืืขืืืืช: ืกืงืจืืคื ืืืฆืืจืช ืืื ืืืืคืก ืืืชืจ.
ืืงืฆืจื ืขื CRM ืืืื ื
ืืืื ื ืื ืข ืืืกืืืจ ืื ืื CRM.
ืื ืืืช ืืืืจืช ืืื ื? ืืื ืชืขืจืืคื ZCRM ืื ืฉืืจืืชืื ืฉืืชื ืฆืจืื ืืฉืื ืขืืืจื. ืืืืจ ืืืืื ืฉืืชื ืฆืจืื ืืฉืื ืขืืื ืืื ืฉืืืืช ืืืคืื ืืืกืคืจืื (ืืคื ืชืขืจืืคืื ืืืืืืื, ืืืฉื, ืชืฉืืื ืืืืฉื ืขืืืจ ืืกืคืจ ืืืืกืงืื ืืื 95 ืจืืื ืื ืืื ืืื ืืื 1 ืืืจื). ืืื ืืื ืืืขื ืฉืืืืช? ืืชื ืืืขื ืื ืฆืจืื ืืฉืื.
CRM ืืืื ื ืคืขืื ืืขืื ืฉืืืจืืืืื ืืืื ืืืช Zadarma ืคืขืืื. ืืืืจ ืืืจืฉืื, ืืืจืืืื ืคืขืืื ืืืฉื ืฉืืืขืืื, ืืขืชืื ืืฉ ืฆืืจื ืืืืฉ ืืช ืืืฉืืื ืขืืืจ ืื ืกืืื ืคืขื ืืืช ื-2 ืืืืฉืื. ืงืฉื ืืืืืื ืืฉืจื ืฉืืงืืง ื-CRM ืืืจืืืื, ืืื ืืื ืฆืืจื ืืืกืคืจ ืื ืฉืืืืช ืืื.
ืืื ืืชื ืฆืจืื API ืขืืืจ CRM ืืืื ื
ืืคืืชืื ืฉื ZCRM ืื ืขืืฆืจ ืืืงื, ืืจืื ืคืื ืงืฆืืืช ืืืืืืช ืืงืื ืืช ืืืคืืขื. ืืื ืื ืื ื ืืืื ืื ืฉืืื ืืืฆืื ืืขืจืืช ืคืื ืงืฆืืื ืืืช ืืืืช, ืืื ืจืง ืืืืจืช ืืืื, ืืื ืืืจืฆืื ืฉื ืืืคืื ืื ืืื ื ืืกืคืืงื.
ืืื ืฉืืืชืจ ืงืฉืจืื ืขื ืืืงืื, ืื ืืืื, ืืื ืฉื ืืงืฉืจ ืืืืืื ืืืืืช ืฉืื ืื ืืืื. ืืืืืช ื-API ืชืืืื ืืืืื ืืืืคื ืืืืืืื (ืื ืืืืคื, ืืงืื) ืืืืข ืขื ืืืงืื / ืืื ืืืฉืืืืช ืืื ืืขืืืช. ืืืืืช ืืื, ื ืืชื ืืืืจ ืื ืขืจืืฆื ืชืงืฉืืจืช ืขื ืืืงืืืืช ืืื ืืขืจืืืช ืืืืืืฆืื ืืืจืืช.
ืืืืืช ื-API, ื ืืชื ืืืฉืชืืฉ ื-ZCRM ืืืื ืื ืืื ืืจื, ืืืื ืื ืืืงืืช. ืืืฉื, ืืืืฉืง ื ืื ืืขืืืื ืืื ืงืื ืืงืืืืช ืืจืืื ื, ืื ืืืชืืื ืคืฉืื ืื ืื.
ืืืื ืืืืื ืืขืจืืฅ ืืื - ืืชืืืจืืช ืืืคืกื ืืืืื CRM ืืืชืจ. ืืืืฉื ืืืชืจ ื ืืื ืืืืืืืช ื ืืกืคืืช, ืืืฉื ืืฆืืจืช ืืฉืืื ืืืชืงืฉืจืืช ืืืจื ืืืงืื (ืฉืืื ืืืืื).
ืฉืืืืช ZCRM API ืืกืืกืืืช
ืืืืืื ืฉืงืืืืืช 37 ืฉืืืืช ืืืื ืืช ื-ZCRM API, ื ืื ืข ืืืชืืจ ืืช ืืืื, ื ืชืืจ ืจืง ืืช ืืงืืืฆืืช ืืขืืงืจืืืช ืฉืืื ืขื ืืืืืืืช.
ืจืฉืืื ืืืื ืขื ืืืืืืืช ืืืื ื ืืืชืจ ืืืชืืืช
ื ืืชื ืืขืืื ืขื ืงืืืฆืืช ืืฉืืืืช ืืืืืช:
- ืืงืืืืช (ืจืฉืืื ืืืืืช, ืืืืจืืช ื ืคืจืืืช, ืขืจืืื, ืืืืงื)
- ืชืืื ืืืืคืืื ืื ื ืืกืคืื ืฉื ืืงืืืืช
- ืขืืืื ืืงืืืืช (ืฆืคืืื, ืขืจืืื, ืืืืงืช ืขืจืืื ืืขืืืื ื ืืงืืืืช)
- ืขืืืืื ืฉื ืืืงืื (ืืืืจ ืฉืืืงืื ืืื ืืืจื ืืื ืืฉืืช ืืฉืคืืืช, ืืืชืื ืฉืืืื ืื ืื ืืขื ืขืืืืื)
- ืืฉืืืืช (ืื ืืคืื ืงืฆืืื ืืืืช ืืขืืืื ืขื ืืฉืืืืช)
- ืืืืื (ืืืืคื ืืืื, ืื ืืคืื ืงืฆืืืช)
- ืืฉืชืืฉื CRM (ืืฆืืช ืจืฉืืื ืฉื ืืฉืชืืฉืื, ืืืืืืชืืื, ืืืืจืืช, ืื ืฉื ืงืฉืจ ืืฉืขืืช ืืขืืืื ืฉืืื)
- ืฉืืืืช (ืืืืืจ ืจืฉืืื ืฉื ืฉืืืืช)
ืืืืืื ืฉืืฉืชืืฉืื ืืืื ื ื-API ืืงืืื ืฉื Zadarma, ืกืคืจืืืช ื-PHP, C#, Python ืืืจ ืืืื ืืช ืขืืืจื ื-Github.
ืืืืื ืืฉืืืืฉ ื-API
ืืืืืื ืืคืฉืืื ืื ืืฉืืืืฉืืช ืืืืชืจ ืืื ืืฆืืจืช ืืื ืืืืคืก. ืืื ืืฆืืฆื ืืช ืืงืื ืืืื ืืืื, ืืืืื ืื ืืืืื ืจืง ืืช ื ืชืื ื ืืคื ืืืช ืืืกืืกืืื. ืืืืื ืืืื, ืื ืขื ืืขืจืืช ืืืืงืื (ืืืจื ืืื ื ืืืืืช ืืื ืฆืืจื) ืืืื ื
ืืืืื ืืืืคืก HTML ืืืฆืืจืช ืืื:
<form method="POST" action="/iw/zcrm_leads">
<label for="name">Name:</label>
<br>
<input type="text" id="name" name="name" 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>
ืืืคืก ืื ืคืฉืื ืืืืชืจ ืืื ืื ืืืขืืืก ืขื ืืืืืจ. ืืื ืื ืขืืฆืื, ืืื captcha, ืืื ืฉืื ืืขืจืืช. ืืจืกื ืขื ืฉืื ืืขืจื ืืืื ื ืืืืื ืฉืื ื (ืืชืืืื ืืชืืืกืคืช ืืคืื ืฉื ืืืงืื ืืืืจ ืืฆืืจืช ืืืื).
ืืืืขืฉื ืืืืื PHP ืืืฆืืจืช ืืื ืขื ื ืชืื ืื ืืืืืคืก:
<?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);
var_dump($leadData);
}
exit();
function makePostRequest($method, $params)
{
// ะทะฐะผะตะฝะธัะต userKey ะธ secret ะฝะฐ ะฒะฐัะธ ะธะท ะปะธัะฝะพะณะพ ะบะฐะฑะธะฝะตัะฐ
$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
)
);
}
ืืคื ืฉืืชื ืืืื ืืจืืืช, ืืขืืืื ืขื ื-API ืืื ืื ืคืฉืืื, ืื ืืกืฃ ืืฉ ืืืืืืืช ืืขืืืื
ZCRM ืืชืคืชื ืื ืืืื ืืืืขื ืื ืืชืืื ืืช ืืืืฉืืช ืืืื ืืืื ืืช ืืจื ื-API.
ืื ื ืืืืื ืื ืืืชื ืื ืืฉืื ืืช ืืขืจืืืช ืืืขืจืืช ืืงืืืืืช ืฉืื ืขื CRM ืืืจืืืืื ืืื ืืืช Zadarma.
ืืงืืจ: www.habr.com