Hướng dẫn tích hợp ZOHO CRM
1. Thao tác trên Zoho
- Đăng nhập vào nền tảng Zoho CRM
- Tiếp tục đăng nhập vào link https://api-console.zoho.com/
- Bấm chọn Self Client

- Tiếp tục nhập các thông tin sau tại GENERATE CODE

SCOPE: dán đoạn sau vào, lưu ý dán đầy đủ, không thiếu, không dư
ZohoCRM.modules.leads.READ,ZohoCRM.modules.leads.CREATE,ZohoCRM.modules.contacts.READ,ZohoCRM.modules.contacts.CREATE,ZohoCRM.modules.accounts.READ,ZohoCRM.modules.calls.CREATE,ZohoCRM.modules.notes.CREATE,ZohoCRM.users.READ
TIME DURATION: Tuỳ ý, nên chọn là 10
SCOPE DESCRIPTION: Không được để trống nhưng có thể điền tuỳ ý
Sau đó bấm CREATE
- Tiếp tục thao tác như sau

- Sau đó copy CODE hiện lên như hình và tiến hành gọi API để để lấy refresh token

Method gọi API: POST
URL:
https://accounts.zoho.com/oauth/v2/token?grant_type=authorization_code&client_id=<client_id>&client_secret=<client_secret>&code=<:Code>
Trong đó:
client_id và client_secret lấy ở tab CLIENT SECRET kế bên tab GENERATE CODE

Ví dụ, dùng Postman gọi API để lấy refresh token

*Về cách sử dụng POSTMAN để gọi API, có thể tham khảo tại đây *
2. Thao tác trên Portal
Sau khi có được thông tin Client ID, Client Secret và Refresh Token, tiến hành truy cập portal để tích hợp
- Vào link https://portal.gcalls.co/integration
- Search tìm nền tảng zoho => chọn icon mắt

Bấm vào Add Integrator và nhập các thông tin vào các trường ở popup lên như sau

- ID Call Center: nhập ID của tổng đài đang tích hợp
- Host: nhập tên miền của zoho đang tích hợp
- Description: nhập tên tổng đài đang tích hợp
- Info: copy chính xác đoạn script sau dán vào
{"renderTooltip":[{"path":"/tab/Contacts/","element":"#subvalue_PHONE;#headertextarea_PHONE > input;#subvalue_MOBILE;#headertextarea_MOBILE > input;.phoneRtl"},{"path":"/tab/Leads/","element":"#subvalue_PHONE;#headertextarea_PHONE > input;#subvalue_MOBILE;#headertextarea_MOBILE > input;.phoneRtl"},{"path":"/tab/Accounts/","element":"#subvalue_PHONE;#headertextarea_PHONE > input;#subvalue_MOBILE;#headertextarea_MOBILE > input;.phoneRtl"},{"path":"/tab/Calls/","element":"lyte-tr>lyte-td>span;.feedsInfoInnerEle tr>td>div"}],"dataFunction":[{"objectName":"Contacts","templateName":"zoho","endpointName":"search_contact_zoho","arrayResponse":"","responseData":[{"id":"data?.at(-1)?.id"},{"Full_Name":"data?.at(-1)?.Full_Name"},{"Owner":"data?.at(-1)?.Owner?.name"},{"Title":"data?.at(-1)?.Title"},{"Department":"data?.at(-1)?.Department"},{"Email":"data?.at(-1)?.Email"},{"Designation":"data?.at(-1)?.Designation"},{"Company":"data?.at(-1)?.Company"}],"data":{"objectName":"Contacts","criteria":"((Phone:equals:{phone})or(Mobile:equals:{phone}))"},"replaceData":[{"{phone}":"iframeDatas?.phone"}]},{"objectName":"Leads","templateName":"zoho","endpointName":"search_contact_zoho","arrayResponse":"","responseData":[{"id":"data?.at(-1)?.id"},{"Full_Name":"data?.at(-1)?.Full_Name"},{"Owner":"data?.at(-1)?.Owner?.name"},{"Lead_Status":"data?.at(-1)?.Lead_Status"},{"Email":"data?.at(-1)?.Email"},{"Designation":"data?.at(-1)?.Designation"},{"Lead_Source":"data?.at(-1)?.Lead_Source"}],"data":{"objectName":"Leads","criteria":"((Phone:equals:{phone})or(Mobile:equals:{phone}))"},"replaceData":[{"{phone}":"iframeDatas?.phone"}]},{"objectName":"Accounts","templateName":"zoho","endpointName":"search_contact_zoho","arrayResponse":"","responseData":[{"id":"data?.at(-1)?.id"},{"Account_Name":"data?.at(-1)?.Account_Name"},{"Account_Type":"data?.at(-1)?.Account_Type"},{"Annual_Revenue":"data?.at(-1)?.Annual_Revenue"},{"Owner":"data?.at(-1)?.Owner?.name"}],"data":{"objectName":"Accounts","criteria":"(Phone:equals:{phone})"},"replaceData":[{"{phone}":"iframeDatas?.phone"}]}],"logFunction":[{"templateName":"zoho","endpointName":"create_object_zoho","data":{"object":"Calls","data":[{"Subject":":subjectData","Call_Type":":directionCustom","Call_Start_Time":":startTime","Call_Duration":":duration","Who_Id":":Who_Id","Description":":contentData","What_Id":":What_Id",":se_module":":se_id","Owner":":ownerid"}]},"replaceData":[{":subjectData":"subjectTitle2"},{":directionCustom":"directionCustom"},{":startTime":"startTimeZoho"},{":duration":"callDuration"},{":Who_Id":"iframeData?.Contacts[0][0]?.id"},{":contentData":"TextContent"},{":What_Id":"checkValue('eval','ie','!!iframeData?.Accounts[0][0]?.id','iframeData?.Accounts[0][0]?.id','iframeData?.Leads[0][0]?.id')"},{":se_module":"se_module"},{":se_id":"checkValue('','ie','!!iframeData?.Accounts[0][0]?.id','Accounts','Leads')"},{":ownerid":"checkValue('eval','ie','!!iframeData?.currentCrmUser','iframeData?.currentCrmUser?.zohoUserId[0].split(`:`)[1].trim()','')"}]}],"userInfo":[{"field":"zohoEmail","path":"/","element":".zcrmp-ProfEmail>:nth-child(2)"},{"field":"zohoUserId","path":"/","element":".zcrmp-ProfEmail>:nth-child(3)"}],"logSystemSchedule":{"endpoints":{"getId":[{"objectName":"ContactZoho","templateName":"zoho","endpointName":"search_contact_zoho","arrayResponse":"","responseData":[{"id":"data[0].id"}],"data":{"objectName":"Contacts","criteria":"((Phone:equals:{phone})or(Mobile:equals:{phone}))"},"replaceData":[{"{phone}":"calllog.body.phone"}]},{"objectName":"LeadZoho","templateName":"zoho","endpointName":"search_contact_zoho","arrayResponse":"","responseData":[{"id":"data[0].id"}],"data":{"objectName":"Leads","criteria":"((Phone:equals:{phone})or(Mobile:equals:{phone}))"},"replaceData":[{"{phone}":"calllog.body.phone"}]},{"objectName":"AccountZoho","templateName":"zoho","endpointName":"search_contact_zoho","arrayResponse":"","responseData":[{"id":"data[0].id"}],"data":{"objectName":"Accounts","criteria":"(Phone:equals:{phone})"},"replaceData":[{"{phone}":"calllog.body.phone"}]}],"saveLog":[{"templateName":"zoho","endpointName":"create_object_zoho","data":{"object":"Calls","data":[{"Subject":":subjectData","Call_Type":":directionCustom","Call_Start_Time":":startTime","Call_Duration":":duration","Who_Id":":Who_Id","Description":":contentData","What_Id":":What_Id",":se_module":":se_id"}]},"replaceData":[{":subjectData":"subjectTitle2"},{":directionCustom":"directionCustom"},{":startTime":"startTimeZoho"},{":duration":"handleDuration2(calllog_info.body.duration)"},{":Who_Id":"getIdData.ContactZoho[0].id"},{":contentData":"TextContent"},{":What_Id":"checkValue('eval','ie','!!getIdData.ContactZoho[0]','getIdData.AccountZoho[0].id','getIdData.LeadZoho[0].id')"},{":se_module":"se_module"},{":se_id":"checkValue('','ie','!!getIdData?.AccountZoho[0]','Accounts','Leads')"}]}]}}}
Iframe: copy chính xác đoạn script sau dán vào
[{"col":"4","label":"Account Info","objectName":"Accounts","arrayData":"","fields":[{"Name":"Account_Name","quickOpenUrl":{"Url":":originCrm/crm/:codeCrm/tab/Accounts/:AccountId","replaceData":[{":AccountId":"data?.Accounts[0][0]?.id"},{":originCrm":"parrentHostname2"},{":codeCrm":"parrentPathname?.split('/')[2]"}]}},{"Type":"Account_Type"},{"Annual Rev.":"Annual_Revenue"},{"Owner":"Owner"}]},{"col":"4","label":"Contact Info","objectName":"Contacts","arrayData":"","fields":[{"Name":"Full_Name","quickOpenUrl":{"Url":":originCrm/crm/:codeCrm/tab/Contacts/:ContactId","replaceData":[{":ContactId":"data?.Contacts[0][0]?.id"},{":originCrm":"parrentHostname2"},{":codeCrm":"parrentPathname?.split('/')[2]"}]}},{"Title":"Title"},{"Department":"Department"},{"Owner":"Owner"}]},{"col":"4","label":"Lead Info","objectName":"Leads","arrayData":"","fields":[{"Name":"Full_Name","quickOpenUrl":{"Url":":originCrm/crm/:codeCrm/tab/Leads/:LeadId","replaceData":[{":LeadId":"data?.Leads[0][0]?.id"},{":originCrm":"parrentHostname2"},{":codeCrm":"parrentPathname?.split('/')[2]"}]}},{"Source":"Lead_Source"},{"Status":"Lead_Status"},{"Owner":"Owner"}]}]
- Client_id: copy từ trên zoho ở bước tương tác với zoho
- Client_secret: copy từ trên zoho ở bước tương tác với zoho
- Refresh token: Copy refresh token vừa gọi được dán vào
Bấm OK để hoàn tất tích hợp
3. Kết luận
Trên đây là bài viết hướng dẫn tích hợp nền tảng Zoho CRM với Gcalls. Sau khi hoàn tất tích hợp, anh chị vào các bạn hãy thực hiện testing kỹ theo bảng test case đối với các trường hợp hợp tích hợp. Hy vọng bài viết sẽ giúp ích được nhiều cho anh chị và các bạn. Nếu có ý kiến đóng góp hoặc thắc mắc gì, anh chị và các bạn vui lòng để lại ở phần bình luận.