การให้บริการแบบแมนนวล

การให้บริการแบบแมนนวล

เมื่อผู้พัฒนาเลือก Webhook เป็นวิธีการเชื่อมต่อบริการแบบแมนนวล จะต้องสร้างบริการ Webhook ในเซิร์ฟเวอร์ของตนเองก่อน ผู้พัฒนาต้องจัดเตรียม 3 อินเทอร์เฟซตามข้อกำหนด เพื่อรับคำขอบริการแบบแมนนวล ข้อความจากผู้ใช้ และข้อความตอบกลับจากเจ้าหน้าที่บริการลูกค้ามนุษย์ GPTBots ยังมี 2 อินเทอร์เฟซสำหรับรับข้อความตอบกลับจากเจ้าหน้าที่บริการลูกค้าและคำสั่งปิดการสนทนา

หมายเหตุสำคัญ:

  1. ผู้พัฒนาต้องตรวจสอบให้แน่ใจว่าบริการ Webhook ของตนทำงานได้ถูกต้อง เพราะส่งผลโดยตรงต่อการให้บริการช่วยเหลือโดยมนุษย์
  • หากขึ้นว่า "Busy" หลังจากเริ่มต้นการขอรับบริการโดยมนุษย์ แสดงว่าบริการ Webhook ของผู้พัฒนา ทำงานผิดปกติ
  • หากขึ้นว่า "Connecting" หลังจากเริ่มต้นการขอรับบริการโดยมนุษย์ แสดงว่าบริการ Webhook ของผู้พัฒนา ทำงานปกติ
  1. หลังจากเริ่มต้นคำขอบริการช่วยเหลือโดยมนุษย์สำเร็จ:
  • ผู้พัฒนาต้องเรียกใช้อินเทอร์เฟซ Reply to User Message (https://api.gptbots.ai/v1/human/message/receive) เพื่อส่งข้อความตอบกลับผู้ใช้อย่างน้อย 1 ข้อความ เพื่อสร้างการเชื่อมต่อสนทนา
  • หากผู้พัฒนาไม่ตอบกลับข้อความของผู้ใช้ภายในช่วง waiting timeout ที่ตั้งไว้ (ค่าเริ่มต้น 60 วินาที) การสนทนาแบบช่วยเหลือโดยมนุษย์จะสิ้นสุดโดยอัตโนมัติ

รับการแจ้งเตือนคำขอสนทนาบริการมนุษย์

เมื่อผู้ใช้ปลายทางเริ่มต้นขอรับบริการมนุษย์ GPTBots จะส่งต่อคำขอนี้ไปยังบริการ Webhook ของผู้พัฒนา หากบริการอินเทอร์เฟซของผู้พัฒนาตอบกลับด้วยรหัสสถานะ 200 หมายถึงการสร้างสนทนาบริการมนุษย์สำเร็จ

วิธีการร้องขอ

POST

Endpoint

https://your_domain/conversation/establish

ตัวอย่างการร้องขอ

curl -X POST 'https://YOUR_DOMAIN/human/service/conversation/establish' \ -H 'Content-Type: application/json' \ -d '{ "body": [ { "text": "human service", "message_type": "QUESTION" }, { "text": "", "message_type": "ANSWER" } ], "timestamp": 1742265090895, "email": "bob@gmail.com", "conversation_id": "67d8db020fa31d1ef64f53dg", "bot_id": "665d88b03ce2b13cf2d573454", "user_info": { "phone": null, "email": "bob@gmail.com", "user_id": "KDslas", "anonymous_id": "652face5184b30540a6ea7fe" } }'
                      
                      curl -X POST 'https://YOUR_DOMAIN/human/service/conversation/establish' \
-H 'Content-Type: application/json' \
-d '{
  "body": [
    {
      "text": "human service",
      "message_type": "QUESTION"
    },
    {
      "text": "",
      "message_type": "ANSWER"
    }
  ],
  "timestamp": 1742265090895,
  "email": "bob@gmail.com",
  "conversation_id": "67d8db020fa31d1ef64f53dg",
  "bot_id": "665d88b03ce2b13cf2d573454",
  "user_info": {
    "phone": null,
    "email": "bob@gmail.com",
    "user_id": "KDslas",
    "anonymous_id": "652face5184b30540a6ea7fe"
  }
}'

                    
บล็อกโค้ดนี้ในหน้าต่างลอย

หมายเหตุ: conversation_id ใน request body นี้ใช้เพื่อระบุรหัสเฉพาะของสถานการณ์สนทนาบริการมนุษย์ ซึ่งแตกต่างจากรหัสเฉพาะที่สร้างโดย Create Conversation ID สำหรับสถานการณ์สนทนา Agent

พารามิเตอร์ของคำขอ

พารามิเตอร์ ประเภท คำอธิบาย
conversation_id string รหัสสนทนาสำหรับสถานการณ์บริการลูกค้ามนุษย์ (แตกต่างจากรหัสสนทนา Agent) ต้องส่งต่อไปยัง GPTBots ในอินเทอร์เฟซตอบกลับบริการลูกค้า
timestamp long เวลาประทับ
email string อีเมลผู้ใช้ บางระบบบริการแมนนวลต้องใช้อีเมลเพื่อให้บริการได้ถูกต้อง
bot_id string Agent (ชื่อเดิม bot) ID
body list<Object> เนื้อหาข้อความ
body.message_type string ประเภทข้อความ QUESTION/ANSWER
body.text string คำถามที่ลูกค้าเริ่มต้นเพื่อขอรับบริการลูกค้าแมนนวลและบริบท
user_info object ข้อมูลผู้ใช้
user_info.phone string เบอร์โทรศัพท์ผู้ใช้ ปัจจุบันมีเฉพาะเมื่อเปลี่ยนไปใช้บริการลูกค้าแมนนวลผ่าน WhatsApp
user_info.email string อีเมลผู้ใช้ กรณีผู้ใช้กรอกอีเมล
user_info.user_id string User ID. ตัวระบุผู้ใช้ที่ไม่ซ้ำกันซึ่งกำหนดโดยนักพัฒนาองค์กร นักพัฒนาตั้งค่าสำหรับ anonymous ID เฉพาะ
user_info.anonymous_id string Anonymous ID. เมื่อผู้ใช้เริ่มต้นสนทนากับ Agent บนแพลตฟอร์มที่ไม่ใช่ API ระบบจะสร้าง anonymous ID ที่มีข้อมูลแพลตฟอร์มช่องทางนั้น ๆ ตามช่องทางของผู้ใช้

หมายเหตุเกี่ยวกับฟิลด์ email:

  • เมื่อเริ่มต้นบริการแมนนวลผ่าน iframe/Share/Bubble Widget ผู้ใช้ต้องกรอกอีเมล นักพัฒนาสามารถกำหนดอีเมลผู้ใช้เองเพื่อเลี่ยงการบังคับกรอกอีเมลได้
  • เมื่อขอบริการแมนนวลผ่านแพลตฟอร์ดภายนอก เช่น WhatsApp/Telegram/livechat อีเมลเริ่มต้นคือ support@gptbots.ai สำหรับ livechat นักพัฒนาสามารถกำหนดอีเมลผู้ใช้เองได้
  • เมื่อขอบริการแมนนวลผ่าน API ฟิลด์ email สามารถเว้นว่างได้ หากว่างจะใช้อีเมลเริ่มต้น support@gptbots.ai

การตอบกลับ

พารามิเตอร์ ประเภท คำอธิบาย
code int รหัสการตอบกลับ
message string รายละเอียด

อินเทอร์เฟซสนทนา

โดยใช้ conversation_id ที่สร้างขึ้น ส่งข้อความของผู้ใช้ไปยังเจ้าหน้าที่บริการลูกค้าแมนนวล

วิธีการร้องขอ

POST

Endpoint

https://your_domain/chat

ตัวอย่างการร้องขอ

{ "conversation_id": "conv_xxx", "message_id": "msg_abc124", "create_time": 1750000005000, "agent_id": "bot_xxx", "body": "นี่คือภาพหน้าจอคำสั่งซื้อของฉัน", "timestamp": 1750000005200, "files": [ { "content_type": "Image", "url": "https://files.gptbots.ai/xxx/order.png", "name": "order.png", "format": "png" } ] }
                      
                      {
  "conversation_id": "conv_xxx",
  "message_id": "msg_abc124",
  "create_time": 1750000005000,
  "agent_id": "bot_xxx",
  "body": "นี่คือภาพหน้าจอคำสั่งซื้อของฉัน",
  "timestamp": 1750000005200,
  "files": [
    {
      "content_type": "Image",
      "url": "https://files.gptbots.ai/xxx/order.png",
      "name": "order.png",
      "format": "png"
    }
  ]
}

                    
บล็อกโค้ดนี้ในหน้าต่างลอย

พารามิเตอร์ของคำขอ

พารามิเตอร์ ประเภท คำอธิบาย
conversation_id string รหัสสนทนา ต้องส่งต่อไปยัง GPTBots ในอินเทอร์เฟซตอบกลับบริการลูกค้า
timestamp long เวลาประทับ
body string ข้อความของผู้ใช้
message_id string รหัสของข้อความนี้จากผู้ใช้
create_time long เวลาที่สร้างข้อความนี้จากผู้ใช้ (มิลลิวินาที)
agent_id string รหัสของ Agent (Agent/Bot)
files array รายการไฟล์แนบที่ผู้ใช้อัปโหลดมาพร้อมกับข้อความ หากไม่มีไฟล์แนบให้ไม่ส่งหรือเว้นว่างไว้
content_type string ประเภทเนื้อหาแบบ enum: Image / Audio / Video / Document / File / Text เป็นต้น
url string URL สำหรับดาวน์โหลดไฟล์แนบ (เข้าถึงได้จากฝั่ง GPTBots ผู้พัฒนาต้องดาวน์โหลด/จัดเก็บเอง)
name string ชื่อไฟล์ (รวมนามสกุล) สอดคล้องกับ API «ดูรายละเอียดการสนทนา»
format string รูปแบบไฟล์/นามสกุลไฟล์ สอดคล้องกับ API «ดูรายละเอียดการสนทนา»

การตอบกลับ

พารามิเตอร์ ประเภท คำอธิบาย
code int รหัสการตอบกลับ
message string รายละเอียด

อินเทอร์เฟซปิดการสนทนา

เมื่อการสนทนาของผู้ใช้หมดเวลา หรือ Agent หรือผู้ใช้ปิดการสนทนาเอง จะเรียกใช้อินเทอร์เฟซนี้เพื่อปิดการสนทนา

วิธีการร้องขอ

POST

Endpoint

https://your_domain/conversation/close

Request Header

ฟิลด์ ประเภท คำอธิบาย
Authorization Bearer ${token} ใช้ Authorization: Bearer ${token} สำหรับการยืนยันตัวตน รับ token ได้จากหน้า API key
Content-Type application/json ประเภทข้อมูล ตั้งค่าเป็น application/json

พารามิเตอร์ของคำขอ

พารามิเตอร์ ประเภท คำอธิบาย
conversation_id string รหัสสนทนา ต้องส่งต่อไปยัง GPTBots ในอินเทอร์เฟซตอบกลับบริการลูกค้า
timestamp long เวลาประทับ
type string ประเภทการปิด TIMEOUT (หมดเวลา) / USER_CLOSED (ผู้ใช้ปิดเอง)

การตอบกลับ

พารามิเตอร์ ประเภท คำอธิบาย
code int รหัสการตอบกลับ
message string รายละเอียด

ตอบกลับข้อความผู้ใช้

เมื่อผู้พัฒนาเลือก webhook เป็นวิธีเชื่อมต่อบริการมนุษย์ GPTBots จะมีอินเทอร์เฟซสำหรับตอบกลับข้อความผู้ใช้ อินเทอร์เฟซนี้ช่วยให้เจ้าหน้าที่บริการลูกค้ามนุษย์ส่งข้อความกลับไปยังผู้ใช้ได้

วิธีการร้องขอ

POST

Endpoint

https://api-${endpoint}.gptbots.ai/v1/human/message/receive

Request Header

ฟิลด์ ประเภท คำอธิบาย
Authorization Bearer ${token} ใช้ Authorization: Bearer ${token} สำหรับการยืนยันตัวตน รับ token ได้จากหน้า API key
Content-Type application/json ประเภทข้อมูล ตั้งค่าเป็น application/json

ตัวอย่างการร้องขอ

{ "conversation_id": "conv_xxx", "timestamp": 1750000000000, "body": "นี่คือใบแจ้งหนี้ที่คุณขอ", "files": [ { "content_type": "Document", "url": "https://your-cdn.com/files/invoice.pdf", "name": "invoice.pdf", "format": "pdf" }, { "content_type": "Image", "url": "https://your-cdn.com/files/screenshot.png", "name": "screenshot.png", "format": "png" } ] }
                      
                      {
  "conversation_id": "conv_xxx",
  "timestamp": 1750000000000,
  "body": "นี่คือใบแจ้งหนี้ที่คุณขอ",
  "files": [
    { "content_type": "Document", "url": "https://your-cdn.com/files/invoice.pdf", "name": "invoice.pdf", "format": "pdf" },
    { "content_type": "Image", "url": "https://your-cdn.com/files/screenshot.png", "name": "screenshot.png", "format": "png" }
  ]
}

                    
บล็อกโค้ดนี้ในหน้าต่างลอย

พารามิเตอร์ของคำขอ

พารามิเตอร์ ประเภท คำอธิบาย จำเป็น
conversation_id string รหัสสนทนา ส่งต่อจากอินเทอร์เฟซสร้างสนทนาและอินเทอร์เฟซสนทนา true
timestamp long เวลาประทับ true
body string เนื้อหาตอบกลับจากเจ้าหน้าที่บริการลูกค้าแมนนวล true
files array รายการไฟล์แนบที่ผู้ใช้อัปโหลดมาพร้อมกับข้อความ หากไม่มีไฟล์แนบให้ไม่ส่งหรือเว้นว่างไว้
content_type string ประเภทเนื้อหาแบบ enum: Image / Audio / Video / Document / File / Text เป็นต้น
url string URL สำหรับดาวน์โหลดไฟล์แนบ (เข้าถึงได้จากฝั่ง GPTBots ผู้พัฒนาต้องดาวน์โหลด/จัดเก็บเอง)
name string ชื่อไฟล์ (รวมนามสกุล) สอดคล้องกับ API «ดูรายละเอียดการสนทนา»
format string รูปแบบไฟล์/นามสกุลไฟล์ สอดคล้องกับ API «ดูรายละเอียดการสนทนา»

การตอบกลับ

พารามิเตอร์ ประเภท คำอธิบาย
code int รหัสการตอบกลับ
message string รายละเอียด

เจ้าหน้าที่บริการลูกค้าแมนนวลปิดการสนทนา

เมื่อผู้พัฒนาเลือก webhook เป็นวิธีเชื่อมต่อบริการแมนนวล เจ้าหน้าที่บริการลูกค้าที่ให้บริการโดย GPTBots สามารถปิดการสนทนาได้เองเมื่อจำเป็น หลังจากปิดแล้ว ผู้ใช้จะไม่ได้รับข้อความจากเจ้าหน้าที่บริการลูกค้าอีก เว้นแต่ผู้ใช้จะเริ่มต้นสนทนาแบบบริการลูกค้าแมนนวลใหม่อีกครั้ง

วิธีการร้องขอ

POST

Endpoint

https://api-${endpoint}.gptbots.ai/v1/human/close

Request Header

ฟิลด์ ประเภท คำอธิบาย
Authorization Bearer ${API Key} ใช้ Authorization: Bearer ${API Key} สำหรับการยืนยันตัวตน รับ API key ได้จากหน้า API Key
Content-Type application/json ประเภทข้อมูล ตั้งค่าเป็น application/json

พารามิเตอร์ของคำขอ

พารามิเตอร์ ประเภท คำอธิบาย
conversation_id string รหัสสนทนา ต้องส่งต่อไปยัง GPTBots ในอินเทอร์เฟซตอบกลับบริการลูกค้า
timestamp long เวลาประทับ

การตอบกลับ

พารามิเตอร์ ประเภท คำอธิบาย จำเป็น
conversation_id string รหัสสนทนา ส่งต่อจากอินเทอร์เฟซสร้างสนทนาและอินเทอร์เฟซสนทนา true
timestamp long เวลาประทับ true

การตรวจสอบสถานะบริการ GPTBots

GPTBots มีอินเทอร์เฟซตรวจสอบสุขภาพ (health-check) สำหรับตรวจสอบบริการมนุษย์ของตนเอง นักพัฒนาสามารถเรียกใช้อินเทอร์เฟซนี้เพื่อตรวจสอบว่าบริการมนุษย์ของ GPTBots พร้อมใช้งานหรือไม่ หากอินเทอร์เฟซคืน HTTP status code 200 และ response body เป็นตัวระบุข้อความล้วน (plain text) ที่บอกว่าบริการปกติ (เช่น service is normal) แสดงว่าบริการมนุษย์ของ GPTBots พร้อมใช้งาน อินเทอร์เฟซนี้ไม่ต้องตรวจสอบสิทธิ์และคืนค่าเป็นข้อความล้วน

วิธีการร้องขอ

GET

Endpoint

https://api.gptbots.ai/v1/human/health

ตัวอย่างการร้องขอ

curl -X GET 'https://api.gptbots.ai/v1/human/health'
                      
                      curl -X GET 'https://api.gptbots.ai/v1/human/health'

                    
บล็อกโค้ดนี้ในหน้าต่างลอย

การตอบกลับ

เมื่อบริการ GPTBots พร้อมใช้งาน จะคืน HTTP status code 200 และ response body เป็นตัวระบุข้อความล้วนที่บอกว่าบริการปกติ

service is normal
                      
                      service is normal

                    
บล็อกโค้ดนี้ในหน้าต่างลอย

คำแนะนำในการประเมินความพร้อมใช้งาน

ผู้เรียกใช้เพียงใช้ HTTP status code เป็นเกณฑ์การตัดสินเท่านั้น:

สถานการณ์ การตัดสิน
คืน 200 และ response body เป็น service is normal บริการ GPTBots พร้อมใช้งาน
คืนค่าที่ไม่ใช่ 200 (เช่น 5xx) / คำขอหมดเวลา / เชื่อมต่อไม่สำเร็จ บริการ GPTBots ไม่พร้อมใช้งาน

แนะนำให้ตั้งค่า timeout ของคำขออย่างเหมาะสม (เช่น 3-5 วินาที) และตรวจสอบด้วยความถี่คงที่ (QPM:3) อินเทอร์เฟซนี้ไม่ต้องตรวจสอบสิทธิ์ จึงไม่ต้องแนบ API Key