์ฝ 14๋
์ ์ ์ฐ๋ฆฌ๋ ๋ฌด๋ฃ PBX์ ํตํฉ๋ ๋ฌด๋ฃ CRM ์์คํ
์ ๋์
ํ์ต๋๋ค. ์ด ๊ธฐ๊ฐ ๋์ 000๊ฐ ๊ธฐ์
๊ณผ 64๋ช
์ ์ง์์ด ์ฌ์ฉํ์ต๋๋ค.
์ด์ ์ฐ๋ฆฌ๋ ZCRM์ ๋๋ถ๋ถ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ ๊ฐ๋ฐฉํ API ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. API๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชจ๋ ํ๋งค ์ฑ๋์์ CRM์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋์์๋ API ์์
๊ณผ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ๋ฅ์ ๋ํด ๊ฐ๋ตํ๊ฒ ์ค๋ช
ํฉ๋๋ค. ๊ฐ๋จํ์ง๋ง ์ ์ฉํ๊ณ ์๋ํ๋ ์์ ๋ ์ ๊ณต๋ฉ๋๋ค. ์ฌ์ดํธ์ ์์์์ ์ ์ฌ ๊ณ ๊ฐ์ ์์ฑํ๊ธฐ ์ํ ์คํฌ๋ฆฝํธ์
๋๋ค.
๋ฌด๋ฃ CRM์ ๋ํ ๊ฐ๋ตํ ์ค๋ช
CRM์ด ๋ฌด์์ธ์ง ์ค๋ช
ํ๋ ๊ฒ์ ์์ ํ์.
๋ฌด๋ฃ์ ๋ฌด์จ ๋ป์ธ๊ฐ์? ์ง๋ถํด์ผ ํ๋ ZCRM ์๊ธ์ด๋ ์๋น์ค๊ฐ ์์ต๋๋ค. ์ง๋ถํด์ผ ํ ์ ์ผํ ๊ฒ์ ์ ํ ํตํ ๋ฐ ๋ฒํธ์
๋๋ค (์๋ฅผ ๋ค์ด ํน๋ณ ๊ด์ธ์ ๋ฐ๋ผ ๋ชจ์คํฌ๋ฐ ๋ฒํธ์ ์ ์๊ธ์ 95 ๋ฃจ๋ธ ๋๋ ๋ฐ๋์ 1 ์ ๋ก์
๋๋ค). ์ ํ๊ฐ ๊ฑฐ์ ์๋ค๋ฉด? ์ง๋ถํ ํ์๊ฐ ๊ฑฐ์ ์์ต๋๋ค.
๋ฌด๋ฃ PBX Zadarma๊ฐ ํ์ฑํ๋์ด ์๋ ๋์ ๋ฌด๋ฃ CRM์ด ํ์ฑํ๋ฉ๋๋ค. ๋ฑ๋ก ํ PBX๋ 2์ฃผ ๋์ ํ์ฑํ๋๋ฉฐ ์์ผ๋ก 1๊ฐ์์ ํ ๋ฒ ๊ณ์ ์ ๋ณด์ถฉํด์ผ ํฉ๋๋ค. CRM๊ณผ PBX๊ฐ ํ์ํ ์ฌ๋ฌด์ค์ ์์ํ๊ธฐ๋ ์ด๋ ต์ง๋ง ๋ฒํธ๋ ์ ํ๊ฐ ์ ํ ํ์ํ์ง ์์ต๋๋ค.
๋ฌด๋ฃ CRM์ API๊ฐ ํ์ํ ์ด์
ZCRM์ ๋ฐ์ ์ ํ์๋ ๋ฉ์ถ์ง ์๊ณ ํฌ๊ณ ์์ ๋ง์ ๊ธฐ๋ฅ๋ค์ด ๋ฑ์ฅํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋จ์ํ ์ค๋งํธ ๋
ธํธ๋ถ์ด ์๋ ์ง์ ์ผ๋ก ๊ธฐ๋ฅ์ ์ธ ์์คํ
์ ์ ์ํ๊ธฐ ์ํด์๋ ์ ํ ํตํฉ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
ํด๋ผ์ด์ธํธ์์ ์ ์ด์ด ๋ง์์๋ก ๋ ์ข์ผ๋ฉฐ ์ ์ด์ ๋งค์ฐ ๋ค๋ฅผ ์ ์์ต๋๋ค. API ๋๋ถ์ ํด๋ผ์ด์ธํธ/๋ฆฌ๋ ๋ฐ ์์
์ ๋ํ ์ ๋ณด๋ฅผ ๋ฌธ์ ์์ด ์๋์ผ๋ก ์
๋ ฅ(๋๋ ๋ฐ๋๋ก ์์ )ํ ์ ์์ต๋๋ค. ๋๋ถ์ ๊ณ ๊ฐ ๋ฐ ๊ธฐํ ์๋ํ ์์คํ
๊ณผ์ ๋ชจ๋ ํต์ ์ฑ๋์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
API ๋๋ถ์ ๋ฌด๋ฃ ZCRM์ ์ ์ฒด ๋๋ ๋ถ๋ถ์ ์ผ๋ก ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ธฐ์
๊ณ ๊ฐ ๊ธฐ๋ฐ๊ณผ ์์
ํ๊ธฐ ์ํ ํธ๋ฆฌํ ์ธํฐํ์ด์ค ๋๋ ๋จ์ํ๊ณ ํธ๋ฆฌํ ์ค์ผ์ค๋ฌ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ค์์ ์ฌ์ดํธ์ CRM ๋ฆฌ๋ ์์์ ์ฐ๊ฒฐํ๋ ์ฑ๋์ ์์
๋๋ค. ๋์ค์ ์ฌ์ดํธ์์ ์๋ฅผ ๋ค์ด ํด๋ผ์ด์ธํธ๋ฅผ ๋ค์ ํธ์ถํ๋ ์์
(์ง์ฐ๋ ํธ์ถ)์ ๋ง๋๋ ๊ฒ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์๋ฅผ ์ ๊ณตํ ๊ฒ์
๋๋ค.
๊ธฐ๋ณธ ZCRM API ๋ฐฉ๋ฒ
ZCRM API์๋ 37๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ผ๋ฏ๋ก ๋ชจ๋ ์ค๋ช
ํ์ง ์๊ณ ์ฃผ์ ๊ทธ๋ฃน๋ง ์์ ์ ํจ๊ป ์ค๋ช
ํฉ๋๋ค.
์์ ๊ฐ ํฌํจ๋ ์ ์ฒด ๋ชฉ๋ก์ ๋ค์ ์น์ฌ์ดํธ์์ ํ์ธํ ์ ์์ต๋๋ค.
๋ค์ ๋ฐฉ๋ฒ ๊ทธ๋ฃน์ผ๋ก ์์ ํ ์ ์์ต๋๋ค.
- ํด๋ผ์ด์ธํธ(์ผ๋ฐ ๋ชฉ๋ก, ๊ฐ๋ณ ์ ํ, ํธ์ง, ์ญ์ )
- ํด๋ผ์ด์ธํธ์ ํ๊ทธ ๋ฐ ์ถ๊ฐ ์์ฑ
- ๊ณ ๊ฐ ํผ๋(๊ณ ๊ฐ ํผ๋ ํญ๋ชฉ ๋ณด๊ธฐ, ํธ์ง, ์ญ์ )
- ํด๋ผ์ด์ธํธ์ ์ง์(ํด๋ผ์ด์ธํธ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฒ์ธ์ด๊ธฐ ๋๋ฌธ์ ๊ฝค ๋ง์ ์ง์์ด ์์ ์ ์์)
- ์์ (์์ ์์ ์ ์ํ ๋ชจ๋ ๊ธฐ๋ฅ)
- ๋ฆฌ๋(์ ์ฌํ๊ฒ ๋ชจ๋ ๊ธฐ๋ฅ)
- CRM ์ฌ์ฉ์(์ฌ์ฉ์, ๊ถํ, ์ค์ , ์ฐ๋ฝ์ฒ ๋ฐ ๊ทผ๋ฌด ์๊ฐ ๋ชฉ๋ก ํ์)
- ํตํ(ํตํ ๋ชฉ๋ก ๋ฐํ)
๊ธฐ์กด Zadarma API ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก PHP, C#, Python์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ด๋ฏธ Github์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
API ์ฌ์ฉ ์
๊ฐ์ฅ ๊ฐ๋จํ๋ฉด์๋ ๊ฐ์ฅ ์ ์ฉํ ์๋ ์์์์ ์ ์ฌ ๊ณ ๊ฐ์ ๋ง๋๋ ๊ฒ์
๋๋ค. ์ฝ๋๋ฅผ ์ต์ํ์ผ๋ก ์ ์งํ๊ธฐ ์ํด ์ด ์์ ์๋ ๊ธฐ๋ณธ ๋ฆฌ๋ ๋ฐ์ดํฐ๋ง ํฌํจ๋์ด ์์ต๋๋ค. ์ ์ฌํ ์์ด์ง๋ง ๊ณ ๊ฐ์ ์๊ฒฌ(์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ ํ์์ ์์)์ด ์์ต๋๋ค.
๋ฆฌ๋ ์์ฑ์ ์ํ html ์์์ ์:
<form method="POST" action="/ko/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>
์ด ์์์ ๊ธฐ์ฌ์ ๊ณผ๋ถํ๊ฐ ๊ฑธ๋ฆฌ์ง ์๋๋ก ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ๋์์ธ๋, ์บก์ฐจ๋, ๋๊ธ ํ๋๋ ์์ต๋๋ค. ๋๊ธ ํ๋๊ฐ ์๋ ๋ฒ์ ์ ๋ธ๋ก๊ทธ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค(๋ฆฌ๋๊ฐ ์์ฑ๋ ํ ํด๋ผ์ด์ธํธ ํผ๋์ ๋๊ธ์ด ์ถ๊ฐ๋จ).
๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก ์์์ ๋ฐ์ดํฐ๋ก ๋ฆฌ๋๋ฅผ ์์ฑํ๊ธฐ ์ํ 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 ๋ฐ PBX Zadarma์ ํตํฉํ๋๋ก ์ด๋ํฉ๋๋ค.
์ถ์ฒ : habr.com