1. แนวคิดพื้นฐานของ Call Center
ด้านล่างนี้คือตัวอย่างการไหลของการโทรจากลูกค้าไปยังสายด่วนของบริษัท:
ตัวอย่างเช่น คุณสามารถโทรไปยังสายด่วนของ Stringee ที่ 84-2473-0000-97 เพื่อทดลอง
a. IVR (Interactive voice response)
ในรูปด้านบน ลูกค้าจะฟังข้อความต้อนรับเช่น: "กด 1 เพื่อฟังคำแนะนำเป็นภาษาอังกฤษ กด 2 เพื่อฟังคำแนะนำเป็นภาษาสเปน" เมื่อกดปุ่ม 1 ลูกค้าจะได้ยินข้อความเป็นภาษาอังกฤษว่า: "หากต้องการพบกับพนักงานขาย กด 1 หากต้องการดูฝ่ายสนับสนุนทางเทคนิค กด 2" ฯลฯ
ณ จุดนี้ ลูกค้าอยู่ในต้นไม้ IVR ข้อความที่เรียกว่าโหนด IVR ที่โหนดนี้ ลูกค้าสามารถกดปุ่มเพื่อไปยังโหนดอื่น หรือเพื่อพบกับตัวแทน การกดปุ่มสามารถเข้าใจได้ว่าเป็นการแยกกิ่ง
b. คิว
เมื่อลูกค้ากด 2 หลังจากฟังข้อความของโหนดแรก ลูกค้าจะถูกโอนไปยังคิวที่ 2 เพื่อรอตัวแทน
คิวถูกจัดทำขึ้นเพื่อให้แน่ใจว่าเมื่อจำนวนตัวแทนน้อยกว่าจำนวนลูกค้าที่รอคอย ลูกค้าจะได้รับบริการตามลำดับที่ถูกต้อง: มาก่อน ได้รับบริการก่อน
c. ตัวแทน & กลุ่ม
มี 3 กลุ่มในการไหลตัวอย่าง:
- กลุ่ม 1: ตัวแทนที่สามารถพูดภาษาอังกฤษได้และมีทักษะการขาย
- กลุ่ม 2: ตัวแทนที่สามารถพูดได้ทั้งภาษาอังกฤษและภาษาสเปนและมีทักษะการสนับสนุนทางเทคนิค
- กลุ่ม 3: ตัวแทนที่สามารถพูดภาษาสเปนได้และมีทักษะการขาย
d. การนำทางการโทรไปยังกลุ่ม (การกำหนดเส้นทางของกลุ่ม)
คิว 1: กลุ่ม 1 ได้รับมอบหมายให้กับคิว 1 เพื่อให้บริการลูกค้าที่ต้องการพูดคุยกับพนักงานขายที่พูดภาษาอังกฤษ
คิว 2: กลุ่ม 2 ได้รับมอบหมายให้กับคิว 2 เพื่อให้บริการลูกค้าที่ต้องการการสนับสนุนทางเทคนิค นอกจากนี้ เมื่อตัวแทนทุกคนในกลุ่ม 2 ยุ่ง ลูกค้าที่รออยู่ในคิว 2 สามารถได้รับบริการจากตัวแทนในกลุ่ม 3
คิว 3: กลุ่ม 3 ได้รับมอบหมายให้กับคิว 3 เพื่อให้บริการลูกค้าที่ต้องการพูดคุยกับพนักงานขายที่พูดภาษาสเปน
กลุ่มสามารถถูกมอบหมายให้กับคิวพร้อมกับธงลำดับความสำคัญ วิธีนี้เรียกว่าการกำหนดเส้นทางของกลุ่ม
e. IVR เป็นทางเลือก
ระบบตอบรับอัตโนมัติสามารถละเลยได้ ลูกค้าจะถูกนำไปยังคิวโดยตรงโดยตั้งค่า enable_ivr = false ในการตั้งค่าหมายเลข https://developer.stringee.com/docs/pcc-rest-api/integrable-contact-center-number-management
2. ขั้นตอนในการสร้าง Call Center ด้วย Stringee PCC API
ดูวิดีโอบทเรียนที่นี่:
ขั้นตอนที่ 1: สร้างโปรเจ็กต์และซื้อหมายเลขสายด่วน
สร้างโปรเจ็กต์ใหม่ที่นี่
เปิดใช้งานตัวเลือก "Enable Programmable Contact Center API for this Project?" หรือกำหนดค่า URL สำหรับโปรเจ็กต์เช่นด้านล่าง:
Answer URL: http://v2.stringee.com:8282/project_answer_url
Event URL: http://v2.stringee.com:8282/project_event_url
คำเตือน: เพื่อใช้งาน PCC API, URL ต้องถูกกำหนดค่าอย่างถูกต้องเหมือนด้านบน
- ซื้อหมายเลขสายด่วนที่นี่ (หรือคุณสามารถใช้หมายเลขของคุณเอง, ติดต่อเราเพื่อรายละเอียดเพิ่มเติม) กำหนดหมายเลขนั้นให้กับโปรเจ็กต์ที่สร้างในขั้นตอนที่ 1
Answer URL: http://v2.stringee.com:8282/answer_url)
Event URL: http://v2.stringee.com:8282/event_url
คำเตือน: เพื่อใช้งาน PCC API, URL ต้องถูกกำหนดค่าอย่างถูกต้องเหมือนด้านบน
ขั้นตอนที่ 2: กำหนดค่าหมายเลข, IVR, คิว, ตัวแทน, กลุ่ม, การกำหนดเส้นทางของกลุ่ม
เพื่อสามารถกำหนดค่าส่วนประกอบเหล่านี้ได้ คุณสามารถใช้ REST APIs ที่อธิบายไว้ที่นี่ อย่างไรก็ตาม คุณสามารถเริ่มต้นได้อย่างรวดเร็วโดยใช้เครื่องมือที่เราสร้างขึ้นแล้วที่นี่: https://pcc.stringee.com/
เข้าสู่ระบบที่ https://pcc.stringee.com/ และเลือกโปรเจ็กต์ที่สร้างในขั้นตอนที่ 1
a. กำหนดค่าหมายเลขสายด่วน
เพิ่มหมายเลขสายด่วนที่ซื้อในขั้นตอนที่ 1 ที่นี่: https://pcc.stringee.com/setting/number
b. กำหนดค่า IVR
สร้างต้นไม้ IVR ใหม่: https://pcc.stringee.com/setting/ivrtree
สร้างโหนด IVR แรกสำหรับต้นไม้ IVR
c. เพิ่มตัวแทน
เพิ่มตัวแทนที่นี่: https://pcc.stringee.com/setting/agent
d. สร้างกลุ่ม
สร้างกลุ่มที่นี่: https://pcc.stringee.com/setting/group
เพิ่มตัวแทนเข้ากลุ่ม
e. สร้างคิว
สร้างคิวที่นี่: https://pcc.stringee.com/setting/queue
f. ตั้งค่าการกำหนดเส้นทางของกลุ่ม
เลือกคิวและคลิกที่นั้นเพื่อกำหนดกลุ่มสำหรับคิว
g. นำทางไปยังคิวเมื่อมีการกดปุ่มใน IVR
เลือกต้นไม้ IVR, เลือกโหนดและเพิ่มการกดปุ่มสำหรับโหนดนั้น
เลือกการดำเนินการ "นำทางไปยังคิว" สำหรับการกดปุ่ม
h. ข้อความต้อนรับ & เพลงรอสำหรับคิว
อัปโหลดและจัดการข้อความต้อนรับและเพลงรอที่นี่: https://pcc.stringee.com/setting/greeting
i. เปิดใช้งาน IVR สำหรับสายเข้า
ไปที่ลิงค์ https://pcc.stringee.com/setting/number, คลิก "แก้ไข" สำหรับหมายเลขที่คุณต้องการกำหนดค่า, เปิดใช้งาน "Enable IVR" และเลือกต้นไม้ IVR ที่คุณสร้างขึ้นก่อนหน้านี้
หลังจากทำตามขั้นตอนด้านบนเสร็จสิ้นแล้ว คุณสามารถทดลองโทรไปยังหมายเลขสายด่วนของคุณ ฟัง IVR และกดปุ่มเพื่อถูกโอนไปยังคิว
ขั้นตอนที่ 3: สร้างไคลเอนต์เพื่อรับสาย
a. ตัวแทนและสถานะ
ตัวแทนแต่ละคนมีคุณสมบัติหลัก:
{
"stringee_user_id": "agent_1",
"phone_number": "84909982888",
"routing_type": 1,
"manual_status": "AVAILABLE",
"system_status": 0
}
รายละเอียดเพิ่มเติมที่นี่
ซึ่ง:
- stringee_user_id: เป็น userId ที่ตัวแทนใช้ในการตรวจสอบสิทธิ์กับ Stringee รายละเอียดเพิ่มเติมเกี่ยวกับการตรวจสอบสิทธิ์ที่นี่ คำเตือน: icc_api=true ต้องปรากฏใน Payload (เฉพาะ PCC API ที่ต้องการพารามิเตอร์นี้):
{
"jti": "SK...-...",//JWT ID
"iss": "SK...",//API key sid
"exp": ...,//expiration time
"userId": "...",
"icc_api": true
}
phone_number: หมายเลขโทรศัพท์ของตัวแทน (ต้องรวมรหัสประเทศ)
routing_type: 1: นำทางสายไปยังแอป/โทรศัพท์ SIP; 2: นำทางสายไปยังหมายเลขโทรศัพท์ของตัวแทน
manual_status: สถานะของตัวแทน สามารถเปลี่ยนแปลงได้ด้วยตัวตัวแทนเอง เพื่อที่จะสามารถรับสายได้ สถานะนี้ต้องเป็น AVAILABLE
system_status: สถานะของตัวแทน ซึ่งจัดการโดยระบบของ Stringee เมื่อตัวแทนอยู่ระหว่างการโทร สถานะ system_status ของเขา/เธอจะเป็น "0"; สถานะ system_status จะเป็น "1" หากตัวแทนไม่ได้อยู่ในสาย
สถานะออนไลน์/ออฟไลน์: ตัวแทนจะถือว่าออนไลน์เมื่อเขา/เธอตอบสนองตามเกณฑ์ใดเกณฑ์หนึ่งด้านล่าง:
(หรือ) เข้าสู่ระบบ Stringee ผ่านแอป/เว็บ
(หรือ) ได้เข้าสู่ระบบแอปแล้ว; มีโทเค็นการแจ้งเตือนผลักดัน (iOS/Android) ทำให้มั่นใจว่าตัวแทนสามารถรับสายผ่านการแจ้งเตือนผลักดัน
(หรือ) กำลังออนไลน์บนโทรศัพท์ SIP
b. เงื่อนไขที่จำเป็นสำหรับตัวแทนเพื่อสามารถรับสายได้
Stringee PCC จะนำทางสายไปยังตัวแทนหากเขา/เธอตอบสนองตามเกณฑ์ใดเกณฑ์หนึ่งด้านล่าง:
- system_status=1
- manual_status=AVAILABLE
- routing_type=1 และตัวแทนออนไลน์; หรือ routing_type=2 และตัวแทนได้กำหนดหมายเลขโทรศัพท์ของตนเอง
c. ใช้แอป/เว็บสำหรับตัวแทนเพื่อรับสาย
เพื่อให้ตัวแทนสามารถเข้าสู่ระบบ Stringee และรับสายได้ คุณจะต้องมี access_token - ซึ่งอธิบายไว้ที่นี
เพื่อสร้าง access_token อย่างรวดเร็ว คุณสามารถใช้เครื่องมือที่เราให้บริการได้ที่นี่ เลือกโปรเจ็กต์ที่คุณสร้างในขั้นตอนที่ 1 และ 2 และป้อน "User ID" (ซึ่งเป็น stringee_user_id ของตัวแทน)
คำเตือน: คุณต้องติ๊กถูกที่ช่อง "สำหรับ PCC API" (icc_api=true จะถูกเพิ่มใน payload):
เรามีแอปตัวอย่างที่คุณสามารถใช้กับ access_token ของคุณเอง:
เว็บ
iOS
Android
React Native
นอกจากนี้ เรายังมี Stringee Web Phone (สร้างขึ้น 100% บน Stringee JavaScript SDK) พร้อมอินเตอร์เฟซผู้ใช้ที่สมบูรณ์ สำหรับคุณที่จะรวมเข้ากับเว็บของคุณอย่างรวดเร็ว:
รวมโค้ด JavaScript ด้านล่างเข้ากับเว็บของคุณ:
<script src="https://static.stringee.com/stringeex/web_phone/latest/js/StringeeSoftPhone-lastest.js"></script>
<script>
var config = {
showMode: 'full',//full | min | none
top: 45,
left: 50,
//right: 810,
arrowLeft: 155,
arrowDisplay: 'top',//top | bottom | none
//list your Stringee Number
fromNumbers: [{alias: 'Number-1', number: '+84899199586'}, {alias: 'Number-2', number: '+2222'}]
};
StringeeSoftPhone.init(config);
var access_token2 = 'YOUR_ACCESS_TOKEN';
StringeeSoftPhone.on('displayModeChange', function (event) {
console.log('displayModeChange', event);
if (event === 'min') {
StringeeSoftPhone.config({arrowLeft: 75});
} else if (event === 'full') {
StringeeSoftPhone.config({arrowLeft: 155});
}
});
StringeeSoftPhone.on('requestNewToken', function () {
console.log('requestNewToken+++++++');
StringeeSoftPhone.connect(access_token2);
});
StringeeSoftPhone.connect(access_token2);
</script>
ตัวอย่าง: https://v1.stringee.com/demo/web_phone.html
คำแนะนำโดยละเอียดที่นี่
เรามีรหัสแหล่งข้อมูลที่นี่
d. ใช้โทรศัพท์ SIP สำหรับตัวแทนเพื่อรับสาย (ไม่บังคับ)
หากคุณต้องการให้ตัวแทนสามารถรับสายบนโทรศัพท์ SIP (โทรศัพท์ IP หรือ SIP Softphone) ระหว่างการสร้างตัวแทน คุณจำเป็นต้องติ๊ก "สร้างบัญชีโทรศัพท์ SIP" และป้อน "รหัสผ่านโทรศัพท์ SIP":
คุณสามารถใช้ API ในการจัดการโทรศัพท์ SIP: https://developer.stringee.com/docs/call-rest-api/sip-phone-management
ข้อมูลประจำตัว Stringee สำหรับการลงทะเบียนโทรศัพท์ SIP:
Domain: v2.stringee.com:15060
Username: projectId_userId
Password: the password you entered before
ขั้นตอนที่ 4: ทำการโทรออก
a. วิธีที่ 1:
ใช้ Mobile SDK หรือ Web SDK, เรียกฟังก์ชัน makeCall(), ตัวอย่างเช่น ด้วย Web SDK:
call = new StringeeCall(stringeeClient, fromNumber, toNumber);
settingCallEvents(call);
call.makeCall(function (res) {
console.log('make call callback: ' + JSON.stringify(res));
});
ซึ่ง:
- fromNumber: เป็นหมายเลขสายด่วนที่ซื้อในขั้นตอนที่ 1 และ 2
- toNumber: เป็นหมายเลขโทรศัพท์ของลูกค้า
b. วิธีที่ 2:
ใช้ REST API ที่อธิบายด้านล่างเพื่อทำการโทรไปยังแอป/โทรศัพท์ SIP ของตัวแทนก่อน; เมื่อตัวแทนรับสาย ทำการโทรอีกครั้งไปยังลูกค้าและเชื่อมต่อทั้งสองปลาย:
POST https://icc-api.stringee.com/v1/call/callout
{
"agentUserId": "huy",
"toAgentFromNumberDisplay": "Call-out-from-842473082686",
"toAgentFromNumberDisplayAlias": "Call-out-from-842473082686-Alias",
"toCustomerFromNumber": "84899199586",
"customerNumber": "84909982888"
}
ซึ่ง:
- agentUserId: stringee_user_id ของตัวแทน
- toAgentFromNumberDisplay: หมายเลขที่จะแสดงให้กับตัวแทน
- toAgentFromNumberDisplayAlias: นามแฝงของหมายเลขที่จะแสดงให้กับตัวแทน
- customerNumber: หมายเลขโทรศัพท์ของลูกค้า
- toCustomerFromNumber: หมายเลขที่จะแสดงให้กับลูกค้า
c. วิธีที่ 3:
โทรโดยตรงจากโทรศัพท์ SIP
ขั้นตอนที่ 5: ปรับแต่งตัวแทนที่จะรับสาย (ไม่บังคับ)
โดยปริยาย การโทรเข้า (inbound) ในคิวจะถูกนำทางไปยังตัวแทนในกลุ่ม (ที่ได้รับมอบหมายให้กับคิว)
อย่างไรก็ตาม คุณยังสามารถปรับแต่งกลุ่มตัวแทนเพื่อรับสายสำหรับแต่ละสายที่แตกต่างกัน (แต่ละลูกค้า)
ตัวอย่างเช่น ลูกค้า A ทิ้งหมายเลขโทรศัพท์ไว้บนเว็บไซต์ของคุณ และ CRM ของคุณได้มอบหมายลูกค้าให้กับตัวแทน "Sales 1" เมื่อลูกค้า A โทรเข้ามา ตัวแทน "Sales 1" จะได้รับการจัดลำดับความสำคัญเป็นอันดับแรก หากตัวแทน "Sales 1" ไม่รับสายหรือกำลังยุ่ง สายจะถูกนำทางไปยัง "Sales 2" หรือ "Sales 3"...
เพื่อสามารถปรับแต่งเส้นทางการโทรได้เช่นที่กล่าวข้างต้น คุณต้องกำหนดค่าพารามิเตอร์ "get_list_agents_url" ของคิว
a. เมื่อมีการโทรที่ถูกนำทางไปยังคิว Stringee จะส่ง HTTP POST ไปที่ "get_list_agents_url" เพื่อรับรายชื่อตัวแทนที่จะรับสาย
วิธีการ: POST
เนื้อหา:
{
"queueId": "queue_1",
"calls": [{
"callId": "call-vn-1-EHHC6JW1LT-1534145391502",
"from": "84986776777",
"to": "842473082666"
}, {
"callId": "call-vn-1-EHHC6JW1LT-1534145391504",
"from": "84919982888",
"to": "842473082888"
}],
"projectId": 25
}
(จะให้ตัวอย่างต่อไปเมื่อมีการร้องขอเพิ่มเติม)
Field | Type | Require | Description |
---|---|---|---|
queueId | String | Yes | Queue ID |
projectId | Int | Yes | Your project ID |
calls | Array | Yes | List of calls present in Queue at the moment |
b. ข้อมูลที่คุณต้องส่งกลับ:
{
"version": 2,
"calls": [{
"callId": "call-vn-1-EHHC6JW1LT-1534145391502",
"agents": [{
"stringee_user_id": "agent_1",
"phone_number": "84909992666",
"routing_type": 2,
"answer_timeout": 15
},
{
"stringee_user_id": "agent_2",
"phone_number": "84909992666",
"routing_type": 1,
"answer_timeout": 10
}
]
},
{
"callId": "call-vn-1-EHHC6JW1LT-1534145391504",
"agents": [{
"stringee_user_id": "agent_1",
"phone_number": "84909992666",
"routing_type": 2,
"answer_timeout": 15
}
]
}
]
}
ซึ่ง
Field | Type | Require | Description |
---|---|---|---|
version | Int | Yes | Must be 2 |
calls | Array | Yes | List of calls present in Queue, accordingly match with the list Stringee sent before |
พารามิเตอร์ของแต่ละ "การโทร":
Field | Type | Require | Description |
---|---|---|---|
callId | String | Yes | Call ID |
agents | Array | Yes | List of agents who can receive calls, sort in priority order: Agents who stand in front (listed first) will have higher priority. If an agent in front is free, he/she will pick the call. If that agent is busy, Stringee will check the status of agents behind, one by one |
พารามิเตอร์ของแต่ละ "ตัวแทน":
Field | Type | Require | Description |
---|---|---|---|
stringee_user_id | String | Yes | Agent's User ID |
phone_number | String | No | Agent's phone number, starts with country code |
routing_type | Int | Yes | 1: Route the call to App/SIP Phone, 2: Route the call to Agent's Phone Number |
answer_timeout | Int | Yes | If the agent is free, the call will be routed to the agent and maximum time for the agent to pick up the phone is a parameter in seconds. After an amount of time, if the agent does not pick up the call, the call will be routed to another agent in the list your server returned |
ขั้นตอนที่ 6: หมายเหตุที่สำคัญบางประการ
If you don't use IVR, customer calls will be routed directly to a Queue:
หากคุณไม่ใช้ IVR, สายโทรศัพท์จากลูกค้าจะถูกนำไปยังคิวโดยตรง:
ตั้งค่าพารามิเตอร์ "enable_ivr=false" สำหรับ Hotline (API)
กำหนดค่าพารามิเตอร์สำคัญ (API)
- wait_agent_answer_timeout: หากตัวแทนว่าง, สายจะถูกนำไปยังตัวแทนและเวลาสูงสุดที่ตัวแทนต้องรับสายคือพารามิเตอร์ในหน่วยวินาที หลังจากเวลาที่กำหนด, หากตัวแทนไม่รับสาย, สายจะถูกนำไปยังตัวแทนคนอื่น หากมีตัวแทนเพียงคนเดียวในกลุ่ม, สายจะถูกนำกลับไปยังตัวแทนคนนั้นอีกครั้ง
- wrap_up_time_limit: หากพารามิเตอร์ agent_wrap_up_after_calls=true, หลังจากวางสาย, ตัวแทนจะมีเวลา wrap_up_time_limit (เป็นวินาที) ในการทำงานป้อนข้อมูล, สายไม่สามารถถูกนำไปยังตัวแทนได้แม้ว่าตัวแทนจะว่าง
- get_list_agents_url: หากตั้งค่าพารามิเตอร์นี้, Stringee PCC จะไม่รับรายชื่อตัวแทนจากกลุ่ม แต่จะรับรายชื่อตัวแทนจากข้อมูลที่ส่งกลับจาก get_list_agents_url
- ควบคุมสายโทรออกและตั้งค่าสิทธิ์สำหรับตัวแทน: กำหนดค่าพารามิเตอร์ callout_answer_url เมื่อตัวแทนทำการโทรออก, Stringee PCC จะส่งคำขอไปยัง Answer URL, URL นั้นต้องส่งกลับ SCCO เพื่อตัดสินใจว่าการโทรนั้นได้รับอนุญาตหรือไม่
- Control the outbound calls & Set permissions for agents: Configure the parameter callout_answer_url. When agents make outbound calls, Stringee PCC will send a request to Answer URL, that URL has to return SCCO to decide if the calls are allowed or not.
ที่มา: https://developer.stringee.com/docs/server/event-url-and-answer-url