การบูรณาการนี้ช่วยให้ทีมของคุณสามารถสนทนากับลูกค้าผ่านช่องทางการส่งข้อความใดๆ ก็ได้ผ่านการใช้งานแบบกำหนดเอง
ขั้นตอนที่ 1: ไปที่ การตั้งค่า > ช่อง
ขั้นตอนที่ 2: คลิก เพิ่มช่อง > ช่องที่กำหนดเอง > เชื่อมต่อ
ขั้นตอนที่ 3: ป้อน URL Webhook ปลายทางที่จะส่งข้อความขาออก
ขั้นตอนที่ 4: เลือกประเภท ID สำหรับช่อง > คลิก ถัดไป
ประเภท ID ใช้สำหรับระบุตัวตนของผู้ใช้และใช้ในการสื่อสารกับเซิร์ฟเวอร์รวมที่กำหนดเองของคุณ
ID มีให้เลือก 2 ประเภท:
หมายเลขโทรศัพท์: ใช้สิ่งนี้หากผู้ให้บริการการส่งข้อความจดจำผู้ติดต่อตามหมายเลขโทรศัพท์ของพวกเขา
รูปแบบตัวอย่าง: +60177872890
ID ที่กำหนดเอง: ใช้สิ่งนี้หากผู้ให้บริการการส่งข้อความจดจำผู้ติดต่อตาม ID ที่สร้างขึ้นเอง
ความยาวอักขระสูงสุดคือ 50 ตัว
AZ
,az
,0-9
,_
,=
,+
,/
และ@
ได้รับอนุญาต
ขั้นตอนที่ 5: กล่องโต้ตอบต่อไปนี้จะให้Channel ID,API TokenและWebhook URLเช่น
รหัสช่อง:gfd8g7fd89dgfd
โทเค็น API:aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd
URL เว็บฮุก:https://app.respond.io/custom/channel/webhook/
การใช้ประเภท ID หมายเลขโทรศัพท์ช่วยให้คุณสามารถเริ่มการสนทนาและส่งข้อความแรกไปยังผู้ติดต่อได้
URL ของ Webhookใช้เพื่อโพสต์ข้อความ,การส่งข้อความสะท้อนและการรับข้อความไปยังแพลตฟอร์ม respond.io
โค้ดที่ให้มาจะทริกเกอร์เว็บฮุกบน respond.io โดยสร้างผู้ติดต่อหากจำเป็น และบันทึกข้อความภายใต้ผู้ติดต่อนั้น
ตัวอย่างสำหรับข้อความ
curl -X POST \\
https://app.respond.io/custom/channel/webhook/ \\
-H 'authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"events": \[
{
"type": "message",
"mId": "xcvzzxcxczxczxc",
"timestamp": 2132131321000,
"message": {
"type": "text",
"text": "สวัสดีโลก"
}
}
\],
"contact": {
"firstName": "John",
"lastName": "Doe",
"profilePic": "",
"รหัสประเทศ": "MY",
"อีเมล": "[email protected]",
"โทรศัพท์": "+60177872890",
"ภาษา": "en"
}
}'
ตัวอย่างสำหรับการส่งข้อความ Echoes
curl -X POST \\
https://app.respond.io/custom/channel/webhook/ \\
-H 'authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"events": \[
{
"type": "message\_echo",
"mId": "xcvzzxcxczxczxc",
"timestamp": 2132131321000,
"message": {
"type": "text",
"text": "สวัสดีโลก"
}
}
\],
"contact": {
"firstName": "John",
"lastName": "Doe",
"profilePic": ""
"รหัสประเทศ": "MY"
"อีเมล": "[email protected]"
"โทรศัพท์": "+60177872890"
"ภาษา": "en"
}
}'
ตัวอย่างการส่งข้อความใบเสร็จ
curl -X POST \\
https://app.respond.io/custom/channel/webhook/ \\
-H 'authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"events": \[
{
"type": "message\_status"
"mId": "xcvzzxcxczxczxc"
"timestamp": 2132131321000
"status": {
"value": "ส่ง|ส่งแล้ว|อ่าน|ล้มเหลว"
"message": "ข้อผิดพลาด: การส่งล้มเหลวเนื่องจากโทเค็นไม่ถูกต้อง"
}
\]
}'
สนาม | คำอธิบาย | การตรวจสอบความถูกต้อง |
---|---|---|
รหัสช่อง | รหัสช่องที่ไม่ซ้ำกัน | ที่จำเป็น. เขตข้อมูลที่มีเอกลักษณ์เฉพาะ สร้างโดย respond.io |
เบอร์ติดต่อ | รหัสติดต่อเฉพาะ | ที่จำเป็น. รหัสติดต่อ respond.io ที่ไม่ซ้ำใคร สูงสุด 50 ตัวอักษร |
ประเภทกิจกรรม | ประเภทกิจกรรม | ที่จำเป็น. ประเภทที่มี: ข้อความ, message_echo และ message_status |
กิจกรรม.mld | รหัสข้อความ | ที่จำเป็น. รหัสข้อความที่ไม่ซ้ำกัน สูงสุด 50 ตัวอักษร |
เหตุการณ์.ประทับเวลา | เวลายุค UNIX (มิลลิวินาที) | ที่จำเป็น. เวลาของเหตุการณ์ที่ทำให้เกิดการโทรกลับ |
เหตุการณ์.ข้อความ.ชนิด | ประเภทข้อความ | ที่จำเป็น. ประเภทข้อความที่มี: ข้อความ, ไฟล์แนบ, สถานที่ และตอบกลับด่วน ดูที่ส่วนประเภทข้อความสำหรับตัวอย่างประเภทข้อความอื่น ๆ |
เหตุการณ์.ข้อความ.ข้อความ | ข้อความ | ที่จำเป็น. ความยาวสูงสุด 7,000 ตัวอักษร |
เหตุการณ์.สถานะ.ค่า | ข้อความ | จำเป็นหาก event.type เป็น message_status ค่าสถานะที่มีอยู่: ส่งแล้ว, ส่งมอบแล้ว, อ่าน และล้มเหลว |
เหตุการณ์.สถานะ.ข้อความ | ข้อความ | จำเป็นต้องมีหาก events.status.value ล้มเหลว |
ติดต่อ.ชื่อจริง | ชื่อจริง | ไม่จำเป็น. สูงสุด 50 ตัวอักษร |
นามสกุลผู้ติดต่อ | นามสกุล | ไม่จำเป็น. สูงสุด 50 ตัวอักษร |
ติดต่อ.รูปโปรไฟล์ | URL รูปโปรไฟล์ | ไม่จำเป็น. ขนาดของอวาตาร์ไม่ควรเกิน 100 kb. แนะนำ 720x720. |
ติดต่อสถานที่ | รหัสสถานที่ | ไม่จำเป็น. โปรดดูรายการค่าที่นี่ |
ติดต่อ.รหัสประเทศ | รหัสประเทศ | ไม่จำเป็น. รหัสประเทศ 2 ตัวอักษร - รหัส ISO ALPHA-2 |
ติดต่อ.เขตเวลา | เขตเวลา | ไม่จำเป็น. (ต่ำสุด: -24) (สูงสุด: 24) |
ติดต่ออีเมล์ | ที่อยู่อีเมล | ไม่จำเป็น. สูงสุด 50 ตัวอักษร |
ติดต่อ.โทรศัพท์ | หมายเลขโทรศัพท์ | ไม่จำเป็น. สูงสุด 18 ตัวอักษร |
ติดต่อภาษา | ภาษา | ไม่จำเป็น. ISO 639-1. |
ตอบกลับ - สำเร็จ (สถานะ HTTP → 200)
"ตกลง"
respond.io จะเรียกจุดสิ้นสุด<API Base URL>/message
ตรวจสอบให้แน่ใจว่าคุณใช้โค้ดOutgoing Messageบนเส้นทาง
/message
ของเว็บเซิร์ฟเวอร์ของคุณ
นี่คือตัวอย่าง cURL ของ response.io ที่เรียกใช้จุดสิ้นสุด:
curl -X POST \\
/message \\
-H 'authorization: Bearer aaaxczsadzxcasdacxzcasdaaaxczsadzxcasdacxzcasd' \\
-H 'cache-control: no-cache' \\
-H 'content-type: application/json' \\
-d '{
"channelId": "gfd8g7fd89dgfd",
"contactId": "+60177872890",
"message": {
"type": "text",
"ข้อความ": "สวัสดีโลก"
}
}'
ตอบกลับ - สำเร็จ (สถานะ HTTP → 200)
{
"mId": "1640141607842"
}
การตรวจสอบสิทธิ์ต้องเกิดขึ้นที่จุดสิ้นสุดก่อนที่จะส่งข้อความไปยังผู้ให้บริการส่งข้อความ
นี่คือตัวอย่างของการใช้ express middleware เพื่อวัตถุประสงค์นี้:
const {validationResult} = require('express-validator');
const validateToken = (req, res, next) => {
const apiToken = <>
const bearerToken = req.headers.authorization;
if (!bearerToken)
return res.send(401)
const token = bearerToken.substring(7, bearerToken.length);
if (apiToken !== token) {
return res.send(401)
}
next();
};
โมดูล.exports = {
validateToken
};
เราได้รวมตัวอย่างของ Custom Channel ที่คุณสามารถทดสอบบนเซิร์ฟเวอร์ของคุณได้แล้ว ลองดูโครงการ GitHub ของเรา ที่นี่
ตัวอย่างสำหรับข้อความ
{
"type": "ข้อความ",
"ข้อความ": "ยินดีต้อนรับสู่ respond.io",
}
สนาม | คำอธิบาย | การตรวจสอบความถูกต้อง |
---|---|---|
พิมพ์ | ประเภทข้อความ | ที่จำเป็น. ข้อความ |
ข้อความ | ข้อความ | ที่จำเป็น. ความยาวสูงสุด 7,000 ตัวอักษร |
ตัวอย่างสำหรับไฟล์สื่อ
{
"type": "ไฟล์แนบ",
"ไฟล์แนบ": {
"type": "รูปภาพ|วิดีโอ|เสียง|ไฟล์",
"url": "https://abc/japan.png",
"mimeType": "image/png",
"fileName":"company logo.png",
"description": "โลโก้บริษัทล่าสุด"
}
}
สนาม | คำอธิบาย | การตรวจสอบความถูกต้อง |
---|---|---|
พิมพ์ | ประเภทข้อความ | ที่จำเป็น. สิ่งที่แนบมา |
ประเภทไฟล์แนบ | ประเภทไฟล์แนบ | ที่จำเป็น. ประเภทไฟล์แนบที่ใช้ได้: รูปภาพ วิดีโอ เสียง และไฟล์ |
ไฟล์แนบ.url | URL | ที่จำเป็น. สูงสุด 2,000 ตัวอักษร ตรวจสอบให้แน่ใจว่าเป็นลิงก์สาธารณะเพื่อให้ผู้ใช้หรือผู้ติดต่อสามารถเห็นเนื้อหาได้ |
ไฟล์แนบ.mimeType | ประเภท MIME ของสิ่งที่แนบมา | ไม่จำเป็น |
ไฟล์แนบ.ชื่อไฟล์ | ชื่อไฟล์ | ไม่จำเป็น. ชื่อไฟล์ควรมีนามสกุลไฟล์ด้วย สูงสุด 256 ตัวอักษร (รวมนามสกุลไฟล์) การส่งไฟล์ที่ไม่มีนามสกุลไฟล์หรือนามสกุลไฟล์ไม่ถูกต้องอาจทำให้ผู้ติดต่อหรือผู้ใช้ไม่สามารถเปิดไฟล์นั้นได้ |
สิ่งที่แนบมา.คำอธิบาย | คำอธิบายไฟล์ | ไม่จำเป็น. สูงสุด 256 ตัวอักษร ใช้ได้เฉพาะกับไฟล์ attachment.type = image เท่านั้น |
ตรวจสอบให้แน่ใจว่า URL ของไฟล์แนบ'ไม่ถูกดาวน์โหลดโดยเบราว์เซอร์โดยบังคับ การตอบสนองของ HTTP's Content-Disposition
ส่วนหัวควรมีค่าเริ่มต้น ซึ่งคือ อินไลน์
ตัวอย่างสำหรับตำแหน่ง
{
"type": "location",
"latitude": 0.123456,
"longitude": -0.1234,
"address": "Sky Suites, Jalan P. Ramlee, Kuala Lumpur, 50250 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur"
}
สนาม | คำอธิบาย | การตรวจสอบความถูกต้อง |
---|---|---|
พิมพ์ | ประเภทข้อความ | ที่จำเป็น. ที่ตั้ง. |
ละติจูด | พิกัด | ที่จำเป็น. ละติจูด (±90°) ภายในช่วงที่ถูกต้อง |
ลองจิจูด | พิกัด | ที่จำเป็น. ลองจิจูด (±180°) ภายในช่วงที่ถูกต้อง |
ที่อยู่ | ที่ตั้ง ที่อยู่ | ไม่จำเป็น. สูงสุด 256 ตัวอักษร |
ตัวอย่างสำหรับการตอบกลับอย่างรวดเร็ว
{
"type": "quick\_reply",
"title": "เลือกภาษาที่คุณต้องการ",
"replies": \[
"มาเลย์",
"อังกฤษ"
\]
}
สนาม | คำอธิบาย | การตรวจสอบความถูกต้อง |
---|---|---|
พิมพ์ | ประเภทข้อความ | ที่จำเป็น. ตอบกลับอย่างรวดเร็ว |
ชื่อ | หัวข้อตอบกลับด่วน | ที่จำเป็น. สูงสุด 256 ตัวอักษร |
ตอบกลับ | ตอบกลับข้อความ | ที่จำเป็น. ตอบกลับได้สูงสุด 10 ข้อความ โดยแต่ละข้อความมีความยาวสูงสุด 256 ตัวอักษร |
ข้อผิดพลาด (สถานะ HTTP → 4xx)
ขั้นตอนที่ 1: คลิก การตั้งค่า > ช่อง
ขั้นตอนที่ 2: ค้นหาช่องที่กำหนดเอง > คลิก จัดการ
ขั้นตอนที่ 3: ในหน้าการกำหนดค่าช่องแบบกำหนดเอง คุณจะเห็นการกำหนดค่าต่อไปนี้:
ไอคอนช่อง - อัปโหลดรูปภาพที่จะใช้เป็นไอคอนสำหรับช่องที่กำหนดเองของคุณ
ชื่อช่อง - ชื่อช่องสามารถเปลี่ยนแปลงได้ และใช้ภายในเพื่อระบุช่องได้
URL ของเว็บฮุกสำหรับข้อความขาออก — URL ของเว็บฮุกสำหรับข้อความขาออกไปยังช่องนี้
URL ของเว็บฮุกสำหรับข้อความขาเข้า — URL ของเว็บฮุกสำหรับข้อความขาเข้าไปยังช่องนี้
ประเภท ID — ใช้สำหรับระบุตัวตนของผู้ใช้และใช้ในการสื่อสารกับเซิร์ฟเวอร์รวมที่กำหนดเองของคุณ
ID ช่อง — ID ช่องเฉพาะเพื่อระบุช่องที่กำหนดเองของคุณ
โทเค็น API — ตัวระบุเฉพาะที่ใช้เพื่อพิสูจน์ตัวตนของผู้ใช้ในการเข้าถึง API
ขั้นตอนที่ 4: คลิก บันทึกการเปลี่ยนแปลง เพื่ออัปเดตการกำหนดค่าช่องแบบกำหนดเอง
ใช่คุณทำได้ มีสามขั้นตอนที่ต้องปฏิบัติตาม:
ใน response.io ให้ป้อน URL เว็บฮุกปลายทาง จากแพลตฟอร์มอื่นลงในฟิลด์ URL เว็บฮุก สำหรับข้อความขาเข้า
ในแพลตฟอร์มอื่น ให้ตั้งค่า URL เว็บฮุก ที่ชี้ไปที่ respond.io เพื่อให้ผู้ติดต่อสามารถส่งข้อความกลับไปที่คุณได้
คุณจะต้องมี เซิร์ฟเวอร์การรวมแบบกำหนดเอง เพื่อแปล API จากทั้ง respond.io และแพลตฟอร์มอื่น ซึ่งจะช่วยให้สามารถแลกเปลี่ยนข้อความระหว่างกันได้
ตรวจสอบให้แน่ใจว่าได้ยืนยันกับแพลตฟอร์มอื่นแล้วว่าสองขั้นตอนแรกเป็นไปได้
เมื่อเชื่อมต่อช่องทางที่กำหนดเอง ข้อความที่ส่งไปยัง respond.io ผ่านเว็บฮุกจะส่งคืนรหัสสถานะ 200 ทันทีเสมอ โดยไม่คำนึงว่าข้อความจะถูกส่งไปยัง respond.io สำเร็จหรือไม่ เนื่องมาจากลักษณะของเว็บฮุกที่ได้รับการออกแบบมาเพื่อตอบกลับทันทีโดยไม่ต้องตรวจสอบความสำเร็จในการส่งข้อความ
บทความที่เกี่ยวข้อง 👩💻