CareSoft cung cấp tính năng hỗ trợ các webhook để nhận thông tin cập nhật người dùng, tổ chức, phiếu ghi, các sự kiện realtime cho cuộc gọi vào, sự kiện kết thúc cuộc gọi trên smartdialer.
I. Chuẩn bị thông tin
Khách hàng gửi thông tin server webhook cho support hỗ trợ cấu hình bao gồm:
Callback Url (VD: http://sample.com/api/webHook)
SecretKey (option)
Các sự kiện hỗ trợ đăng ký:
Người dùng:user
Tổ chức: organization
Phiếu ghi: ticket.voice, ticket.voice_out, ticket.ivr, ticket.voicemail, ticket.voice_campaign, ticket.email, ticket.email_out, ticket.web, ticket.api, ticket.sms_out, ticket.ticket_form, ticket.ticket_sharing, ticket.chat, ticket.facebook, ticket.inbox_facebook, ticket.inbox_facebook_out, ticket.facebook_rating, ticket.facebook_lead_ads, ticket.instagram, ticket.chat_instagram, ticket.inbox_zalo, ticket.inbox_zalo_out, ticket.inbox_zalo_zns, ticket.zalo_lead_form
Lead: lead
Deal: deal
SmartDialer: smart_dialer
Cuộc gọi vào: call_in
LƯU Ý: Event sẽ được trả về theo method POST. Request body dạng application/json. Header bao gồm X-Hub-Signature được mã hoá body theo chuẩn HmacSHA1 với secret key đã được cấu hình (Kết quả mã hoá ở dạng uppercase)
// Sự kiện người dùng được tạo
{
"object": "user",
"action": "create",
"user": {
"id": 0,
"username": "",
"account_id": 0,
"email": "",
"email2": "",
"phone_no": "",
"phone_no2": "",
"phone_no3": "",
"role_id": 3,
"facebook": "",
"note": "",
"gender": 0,
"organization_id": 0,
"detail": "",
"avatar": "",
"user_info1": "", //facebook name
"user_info5": "", //address
"user_info10": "", //instagram name
"user_info12": "", //instagram link
"user_info16": "", //zalo name
"follower_id": 0,
"updated_at": 0, //Time in millis
"created_at": 0, //Time in millis
"addition_fields":
[
{
"id": 0, //id trường động
"field": "addition_field1", //Mã trường động
"label": "", //Tên trường động
"type": 0|1|2|3|4|6|7, //String|Number|DateTime|SingleSelect|MultiSelect|TextArea|Stage
"value": "", //value in string
"value_id": 0 //value id
}
]
}
}
Sự kiện người dùng
// Sự kiện cập nhật người dùng
{
"object": "user",
"action": "update",
"user": {
"id": 0,
"username": "",
"account_id": 0,
"email": "",
"email2": "",
"phone_no": "",
"phone_no2": "",
"phone_no3": "",
"role_id": 3,
"facebook": "",
"note": "",
"gender": 0,
"organization_id": 0,
"detail": "",
"avatar": "",
"user_info1": "", //facebook name
"user_info5": "", //address
"user_info10": "", //instagram name
"user_info12": "", //instagram link
"user_info16": "", //zalo name
"follower_id": 0,
"updated_at": 0, //Time in millis
"created_at": 0, //Time in millis
"addition_fields":
[
{
"id": 0, //id trường động
"field": "addition_field1", //Mã trường động
"label": "", //Tên trường động
"type": 0|1|2|3|4|6|7, //String|Number|DateTime|SingleSelect|MultiSelect|TextArea|Stage
"value": "", //value in string
"value_id": 0 //value id
}
]
}
}
2. Sự kiện trên tổ chức
Tổ chức
// Sự kiện tổ chức được tạo
{
"object": "organization",
"action": "create",
"organization": {
"organization_id": 0,
"account_id": 0,
"organization_name": "",
"organization_domain": "",
"details": "",
"note": "",
"created_at": 0, //Time in millis
"updated_at": 0, //Time in millis,
"addition_fields":
[
{
"id": 0, //id trường động
"field": "addition_field1", //Mã trường động
"label": "", //Tên trường động
"type": 0|1|2|3|4|6|7, //String|Number|DateTime|SingleSelect|MultiSelect|TextArea|Stage
"value": "", //value in string
"value_id": 0 //value id
}
]
}
}
Tổ chức
// Sự kiện tổ chức được cập nhật
{
"object": "organization",
"action": "update",
"organization": {
"organization_id": 0,
"account_id": 0,
"organization_name": "",
"organization_domain": "",
"details": "",
"note": "",
"created_at": 0, //Time in millis
"updated_at": 0, //Time in millis,
"addition_fields":
[
{
"id": 0, //id trường động
"field": "addition_field1", //Mã trường động
"label": "", //Tên trường động
"type": 0|1|2|3|4|6|7, //String|Number|DateTime|SingleSelect|MultiSelect|TextArea|Stage
"value": "", //value in string
"value_id": 0 //value id
}
]
}
}
3. Sự kiện trên phiếu ghi
Khi có sự kiện xảy ra trên phiếu ghi, nguồn của sự kiện này sẽ phân biệt bằng giá trị của thuộc tính source trong ticket_comment.
Ví dụ để phân biệt sự kiện là cuộc gọi vào hay cuộc gọi ra:
Các giá trị source cuộc gọi vào: Voice, IVR, ZCC In, MissCall, VoiceMail, Voicemail
Các giá trị source cho gọi ra: Voice Out, ZCC Out, Voice Campaign
Xem đầy đủ danh sách các giá trị của nguồn tại Danh sách nguồn.
Phiếu ghi
// Phiếu ghi được tạo
{
"object": "ticket",
"action": "create",
"ticket": {
"ticket_id": 0,
"ticket_no": 0,
"assignee_id": 0,
"service_id": 0,
"ticket_priority": "normal",
"ticket_source": "web",
"ticket_source_end_status": 0,
"ticket_status": "open",
"ticket_subject": "",
"created_at": 0, //Time in millis
"updated_at": 0, //Time in millis,
"last_change_status_at": 0, //Time in millis
"campaignId": 0,
"addition_fields":
[
{
"id": 0, //id trường động
"field": "addition_field1", //Mã trường động
"label": "", //Tên trường động
"type": 0|1|2|3|4|6|7, //String|Number|DateTime|SingleSelect|MultiSelect|TextArea|Stage
"value": "", //value in string
"value_id": 0 //value id
}
]
"ticket_comment":
{
"ticket_id": 0,
"comment": "",
"addition_details": "",
"commentator_id": 0,
"source": "web",
"is_public": 0,
"type": 0,
"created_at": 0, //Time in millis
"updated_at": 0, //Time in millis,
}
}
}
Phiếu ghi
// Phiếu ghi được cập nhật
{
"object": "ticket",
"action": "update",
"ticket": {
"ticket_id": 0,
"ticket_no": 0,
"assignee_id": 0,
"service_id": 0,
"ticket_priority": "normal",
"ticket_source": "web",
"ticket_source_end_status": 0,
"ticket_status": "open",
"ticket_subject": "",
"created_at": 0, //Time in millis
"updated_at": 0, //Time in millis,
"last_change_status_at": 0, //Time in millis
"campaignId": 0,
"addition_fields":
[
{
"id": 0, //id trường động
"field": "addition_field1", //Mã trường động
"label": "", //Tên trường động
"type": 0|1|2|3|4|6|7, //String|Number|DateTime|SingleSelect|MultiSelect|TextArea|Stage
"value": "", //value in string
"value_id": 0 //value id
},
{
}
]
"ticket_comment":
{
"ticket_id": 0,
"comment": "",
"addition_details": "",
"commentator_id": 0,
"source": "web",
"is_public": 0,
"type": 0,
"created_at": 0, //Time in millis
"updated_at": 0, //Time in millis,
}
},
"call_info": //Thông tin cuộc gọi nếu có
{
"call_id": "",
"caller": "", //SĐT khách hàng
"called": "", //Đầu số
"status_code": "200",
"start_time": 000 //Time in millis
"answer_time": 000 //Time in millis
"end_time": 000 //Time in millis
}
}
// Phiếu bị bị xoá
{
"object": "ticket",
"action": "delete",
"ticket": {
"ticket_id": 0
}
}
// Cuộc gọi kết thúc từ chiến dịch auto call
{
"object": "smart_dialer",
"action": "ad_end_call",
"call_info": {
"call_id": "",
"line": "",
"phone_number": "",
"call_attempt_index": 0,
"max_attempt": 1,
"campaign_id": 0,
"customer_id": 0,
"customer_name": "",
"campaign_data_id": 0,
"start_time": 0, //Time in millis
"connect_time": 0, //Time in millis
"end_time": 0, //Time in millis
"ring_customer_duration": 0, //seconds
"call_duration": 0, //seconds
"status_code": "",
"customer_input_dtmf": "", //dữ liệu bấm phím ivr nếu có
}
}
SmartDialer
//Cuộc gọi kết thúc từ chiến dịch predictive call
{
"object": "smart_dialer",
"action": "pd_end_call",
"call_info": {
"call_id": "",
"line": "",
"phone_number": "",
"call_attempt_index": 0,
"max_attempt": 1,
"campaign_id": 0,
"customer_id": 0,
"customer_name": "",
"campaign_data_id": 0,
"start_time": 0, //Time in millis
"connect_time": 0, //Time in millis
"end_time": 0, //Time in millis
"ring_customer_duration": 0, //seconds
"call_duration": 0, //seconds
"agent_user_id": 0,
"agent_id": 0,
"agent_ring_time": 0, //Time in millis
"agent_connect_time": 0, //Time in millis
"ring_agent_duration": 0, //seconds
"status_code": ""
}
}
5. Sự kiện cập nhật trạng thái cuộc gọi vào
Đăng ký nhận sự kiện này nếu bạn muốn tích hợp chi tiết tất cả các sự kiện xảy ra trong quá trình gọi vào từ lúc cuộc gọi bắt đầu, tới lúc đổ chuông chuyên viên và kết thúc cuộc gọi.
Cuộc gọi vào
//1. Sự kiện bắt đầu cuộc gọi
{
"object": "call_in",
"action": "call_in_start",
"call_info":
{
"event_name": "call_in_start",
"call_id": "",
"account_id": 0,
"direction": "inbound",
"caller": "", //SĐT khách hàng
"called": "", //Đầu số
"event_time": 000 //Time in millis
}
}
Cuộc gọi vào
//2. Sự kiện đổ chuông tới Agent
{
"object": "call_in",
"action": "call_in_agent_ring",
"call_info":
{
"event_name": "call_in_agent_ring",
"call_id": "",
"account_id": 0,
"direction": "inbound",
"caller": "", //SĐT khách hàng
"called": "", //Đầu số
"agent_id": "",
"event_time": 000 //Time in millis
}
}
Cuộc gọi vào
//3. Sự kiện trượt qua Agent
{
"object": "call_in",
"action": "call_in_agent_miss",
"call_info":
{
"event_name": "call_in_agent_miss",
"call_id": "",
"account_id": 0,
"direction": "inbound",
"caller": "", //SĐT khách hàng
"called": "", //Đầu số
"agent_id": "",
"event_time": 000 //Time in millis
}
}
Cuộc gọi vào
//4. Sự kiện Agent bắt máy
{
"object": "call_in",
"action": "call_in_agent_answer",
"call_info":
{
"event_name": "call_in_agent_answer",
"call_id": "",
"account_id": 0,
"direction": "inbound",
"caller": "", //SĐT khách hàng
"called": "", //Đầu số
"agent_id": "",
"event_time": 000 //Time in millis
}
}
Cuộc gọi vào
//5. Sự kiện Agent kết thúc cuộc gọi
{
"object": "call_in",
"action": "call_in_agent_end",
"call_info":
{
"event_name": "call_in_agent_end",
"call_id": "",
"account_id": 0,
"direction": "inbound",
"caller": "", //SĐT khách hàng
"called": "", //Đầu số
"agent_id": "",
"event_time": 000 //Time in millis
}
}
Cuộc gọi vào
//6. Sự kiện Khách hàng kết thúc cuộc gọi
{
"object": "call_in",
"action": "call_in_customer_end",
"call_info":
{
"event_name": "call_in_customer_end",
"call_id": "",
"account_id": 0,
"direction": "inbound",
"caller": "", //SĐT khách hàng
"called": "", //Đầu số
"agent_id": "",
"event_time": 000 //Time in millis
}
}
Cuộc gọi vào
//7. Sự kiện cuộc gọi kết thúc
{
"object": "call_in",
"action": "call_in_end",
"call_info":
{
"event_name": "call_in_end",
"call_id": "",
"account_id": 0,
"direction": "inbound",
"caller": "", //SĐT khách hàng
"called": "", //Đầu số
"event_time": 000 //Time in millis
"call_start_time": 0, //Time in millis
"call_answer_time": 0, //Time in millis
"call_end_time": 0, //Time in millis
"call_end_time": 0, //Time in millis
"call_duration": 0, //Time in seconds
"status": "answered|miss", //Trạng thái gặp agent hay không
"answer_duration": 0, //Time in seconds - status answered
"record_url": "" //Link file ghi âm - status answered
}
}
{
"account_id": 1,
"mergeOption": {"copyComments":0,"secondaryTickets":[316708],"addCC":1,"primaryComment":"Phiếu ghi #220760 đã được đóng và hợp nhất vào phiếu ghi này","addFollow":1,"primaryIsPublic":0,"primaryTicket":316707,"secondaryComment":"Phiếu ghi này đã được đóng và hợp nhất vào phiếu ghi #220759","secondaryIsPublic":0},
"action": "merge",
"object": "ticket"
}