ภาพรวมผู้ใช้
ผู้ใช้ หมายถึง ผู้ใช้ปลายทางที่เริ่มต้นสนทนากับ Agent หรือ workflow GPTBots อนุญาตให้นักพัฒนากำหนดรหัสประจำตัวเฉพาะ (user ID) ให้กับผู้ใช้แต่ละราย โดยผ่าน user ID (user_id) นี้ จะสามารถเชื่อมโยงตัวตนผู้ใช้ข้ามช่องทางต่าง ๆ ได้ ช่วยให้สามารถรวมตัวตนข้ามช่องทาง สืบค้นข้อมูลธุรกิจผ่าน Tools และบริหารจัดการคุณสมบัติผู้ใช้และประวัติการสนทนาได้
ข้อมูล CDP (Customer Data Platform) ของผู้ใช้จะถูกจัดเก็บแยกภายใต้แต่ละ Agent หรือ workflow โดยข้อมูลของผู้ใช้คนเดียวกันจะถูกแยกออกจากกันในแต่ละ Agent/workflow
แผนผังระบบผู้ใช้
flowchart LR
subgraph Col1["แพลตฟอร์มต้นทาง"]
LC["Livechat"]
IC["Intercom"]
WG[" Widget "]
TG["Telegram"]
end
subgraph Col2_5["ซับ-แชนแนลของแพลตฟอร์มต้นทาง"]
tgb01["TGBOT01"]
tgb02["TGBOT02"]
end
subgraph Col2["Anonymous ID"]
a1["lc0001"]
a2["ic0001"]
a3["wg0001"]
tga1["tb0001"]
tga2["tg0001"]
end
subgraph Col3["UserId"]
U1["ABC123"]
U2["ABC456"]
end
subgraph Col4["ConversationId"]
c1["c001"]
c2["c002"]
c3["c003"]
c4["c004"]
c5["c005"]
end
subgraph Col5["Agent/Workflow"]
Bot["Agent
Workflow"]
end
LC -- สร้าง Anonymous ID --> a1
IC -- สร้าง Anonymous ID --> a2
WG -- สร้าง Anonymous ID --> a3
TG -- ผู้ใช้จากซับ-แชนแนล --> tgb01 & tgb02
tgb01 -- สร้าง Anonymous ID --> tga1
tgb02 -- สร้าง Anonymous ID --> tga2
a1 -- กำหนด user_id --> U1
a2 -- กำหนด user_id --> U1
a3 -- กำหนด user_id --> U2
tga1 -- กำหนด user_id --> U2
tga2 -- กำหนด user_id --> U2
U1 -- สร้าง conversation ID ใหม่ --> c1
U1 -- สร้าง conversation ID ใหม่ --> c2
U2 -- สร้าง conversation ID ใหม่ --> c3
U2 -- ใช้ conversation ID เดิม --> c4
c4 -- หากหมดอายุ (>60 นาที)
สร้าง conversation ID ใหม่ --> c5
c1 --> Bot
c2 --> Bot
c3 --> Bot
c4 --> Bot
c5 --> Bot
LC:::redStyle
IC:::blueStyle
WG:::greenStyle
TG:::purpleStyle
tgb01:::purpleStyle
tgb02:::purpleStyle
a1:::redStyle
a2:::blueStyle
a3:::greenStyle
tga1:::purpleStyle
tga2:::purpleStyle
U1:::userGray
U2:::userGray
c1:::redStyle
c2:::blueStyle
c3:::greenStyle
c4:::purpleStyle
c5:::purpleStyle
classDef userGray fill:#f5f5f5,stroke:#e6e6e6,color:#222
classDef redStyle fill:#ffd6d6,stroke:#ffbdbd,color:#222
classDef blueStyle fill:#dff0ff,stroke:#cfeaff,color:#222
classDef greenStyle fill:#ecffd9,stroke:#d5ffb3,color:#222
classDef purpleStyle fill:#f1e0ff,stroke:#e1c7ff,color:#222
style Col1 stroke:#757575
- Anonymous ID (
anonymous_id) จะถูกสร้างโดยบริการระบบ GPTBots อัตโนมัติตามแพลตฟอร์มต้นทางของผู้ใช้ - การกำหนด
user_idเป็นทางเลือก นักพัฒนาสามารถเลือกกำหนดuser_idตามความต้องการทางธุรกิจ เพื่อให้สามารถเชื่อมโยงตัวตนและแบ่งปันคุณสมบัติผู้ใช้ข้ามช่องทางต่าง ๆ
คำจำกัดความ
ผู้ใช้
ผู้ใช้ หมายถึง ผู้ใช้ปลายทางที่มีปฏิสัมพันธ์หรือสนทนากับ Agent
User ID (user_id)
รหัสประจำตัวเฉพาะที่นักพัฒนาองค์กรกำหนดให้กับผู้ใช้ปลายทาง โดยผ่าน API นักพัฒนาสามารถกำหนด user_id ให้กับ anonymous_id ได้ ดูรายละเอียดการใช้งานและตัวอย่างการประยุกต์ใช้เพิ่มเติมได้ที่ Set User ID
user_idจะมีลำดับความสำคัญเหนือanonymous_id- สามารถเชื่อมโยง
anonymous_idหลายค่าเข้ากับuser_idเดียวกันได้พร้อมกัน
Anonymous ID (anonymous_id)
เมื่อผู้ใช้โต้ตอบกับ Agent ผ่านแพลตฟอร์ดภายนอก (เช่น Telegram, WhatsApp, LINE ฯลฯ) GPTBots จะใช้รหัสผู้ใช้เฉพาะของแพลตฟอร์มนั้นเป็น anonymous_id ดูรายละเอียดตรรกะการสร้าง anonymous ID ได้ที่ [ตรรกะการสร้าง Anonymous ID](## Anonymous ID Generation Logic)
แพลตฟอร์มภายนอก
GPTBots รองรับการเชื่อมต่อ Agent กับแพลตฟอร์มภายนอกมากมาย เช่น Intercom, Webchat, LiveChat, Telegram, WhatsApp และอื่น ๆ
Conversation ID (conversation_id)
Conversation ID (conversation_id) คือรหัสเฉพาะที่สร้างขึ้นจาก Agent, ประเภทการสนทนา และ user_id (หรือ anonymous_id) ใช้สำหรับแยกบริบททางธุรกิจแต่ละกรณี (โดยปกติจะมี message ID หลายรายการในหนึ่ง conversation)
conversation_idจะหมดอายุอัตโนมัติภายใน 60 นาที ยกเว้นที่สร้างผ่าน API ซึ่งจะไม่มีวันหมดอายุ- สำหรับแพลตฟอร์มภายนอกและ widget เมื่อ
conversation_idหมดอายุ ระบบจะสร้างใหม่เพื่อเริ่มต้นสนทนาใหม่
Message ID (message_id)
Message ID (message_id) คือรหัสเฉพาะของแต่ละข้อความที่แลกเปลี่ยนระหว่าง Agent กับผู้ใช้ เป็นหน่วยย่อยที่สุดของการสนทนา
message_idจะถูกสร้างโดย GPTBots ไม่สามารถกำหนดเองได้message_idจะอยู่ภายใน conversation ID โดย 1 conversation อาจมี message ID หลายรายการ
ประเภทการสนทนา (Conversation Type)
Conversation Type (conversation_type) ใช้ระบุบริบทหรือช่องทางที่ผู้ใช้เริ่มต้นสนทนา เช่น Workspace-Workflow, WhatsApp, API, Workspace-Search ฯลฯ
หลักการสร้าง Conversation ID
เมื่อผู้ใช้เริ่มต้นสนทนากับ Agent ผ่านแพลตฟอร์มภายนอก ระบบจะสร้าง anonymous_id ตามแพลตฟอร์มของผู้ใช้ และสร้าง conversation_id อัตโนมัติโดยอิงจาก anonymous_id เพื่อรองรับการสนทนา 1 รอบระหว่างผู้ใช้กับ Agent
- หากใช้ API นักพัฒนาต้องสร้าง
conversation_idก่อนเริ่มสนทนากับ Agent/Workflow - สำหรับช่องทางที่ไม่ใช่ API GPTBots จะสร้าง
conversation_idให้อัตโนมัติ
ตรรกะการสร้าง Anonymous ID
Anonymous ID ใช้เพื่อระบุตัวตนผู้ใช้เฉพาะรายในแต่ละแพลตฟอร์มและช่องทางที่เชื่อมต่อ ตารางด้านล่างนี้แสดงตรรกะการสร้าง Anonymous ID ของแต่ละแพลตฟอร์ม
| แพลตฟอร์ม/ช่องทาง | ตรรกะ Anonymous ID | คำอธิบาย |
|---|---|---|
| Telegram | anonymous_id = tg_user_id | tg_user_id: รหัสผู้ใช้เฉพาะของ Telegram |
| Telegram Group Chat | anonymous_id = tg_chat_id + tg_user_id | tg_chat_id: รหัสกลุ่ม; tg_user_id: รหัสผู้ใช้เฉพาะ |
| LINE | anonymous_id = line_user_id | รหัสผู้ใช้เฉพาะของ LINE |
| LiveChat | anonymous_id = lc_thread_id | รหัสเฉพาะของเธรดสนทนา LiveChat |
| Slack | anonymous_id = slack_user_id | รหัสผู้ใช้เฉพาะของ Slack |
| Slack Public Channel | anonymous_id = slack_team_id + slack_channel_id + slack_user_id | รวมรหัสทีม, ช่อง, ผู้ใช้ เพื่อระบุตัวตนในช่องสาธารณะ |
| Intercom | anonymous_id = intercom_user_id | รหัสผู้ใช้เฉพาะของ Intercom |
| DingTalk | anonymous_id = dd_user_id | รหัสผู้ใช้เฉพาะของ DingTalk |
| DingTalk Group Chat | anonymous_id = dd_chat_id + dd_senderId | รวมรหัสกลุ่มและผู้ส่งเพื่อระบุตัวตนเฉพาะ |
| WhatsApp by Meta | anonymous_id = wa_user_id | รหัสผู้ใช้ WhatsApp (โดยปกติอิงเบอร์โทรศัพท์ เช่น @c.us) |
| WhatsApp by EngageLab | anonymous_id = wa_user_id | เช่นเดียวกับด้านบน |
| Discord | anonymous_id = discord_user_id | รหัสตัวเลขเฉพาะของ Discord |
| anonymous_id = instagram_user_id | รหัสเฉพาะที่กำหนดให้ผู้ส่งข้อความ Instagram | |
| anonymous_id = facebook_user_id | รหัสเฉพาะที่กำหนดให้ผู้ส่งข้อความ Facebook | |
| Sobot | anonymous_id = sobot_memberId | รหัสสมาชิก Sobot |
| Sobot Group Chat @User | anonymous_id = sobot_guildId + sobot_channelId + sobot_memberId | รหัสเฉพาะสำหรับการสนทนากลุ่มใน Sobot |
| Zoho Sales IQ | anonymous_id = zoho_sales_iq_conversationId | รหัสเฉพาะของการสนทนา Zoho Sales IQ |
| WeChat Customer Service | anonymous_id = wechat_customer_service_user_id | รหัสผู้ใช้ WeChat Customer Service |
ตรรกะ Anonymous ID ของช่องทางในตัว GPTBots
สำหรับช่องทางในตัว GPTBots จะใช้ browser fingerprint ในการสร้าง anonymous ID
| ช่องทาง | ตรรกะ Anonymous ID | คำอธิบาย |
|---|---|---|
| API | ไม่มี anonymous ID | ใช้เฉพาะ user_id ในการสร้าง conversation ID |
| Workspace | anonymous_id = browser fingerprint ID | สุ่มรหัสจาก browser fingerprint; อาจเปลี่ยนหากลบ cache หรือใช้ incognito mode |
| Share | anonymous_id = browser fingerprint ID | เช่นเดียวกับด้านบน |
| Iframe | anonymous_id = browser fingerprint ID | เช่นเดียวกับด้านบน |
| AI Search | anonymous_id = browser fingerprint ID | เช่นเดียวกับด้านบน |
| AI Search (iframe) | anonymous_id = browser fingerprint ID | เช่นเดียวกับด้านบน |
| Widget | anonymous_id = browser fingerprint ID | เช่นเดียวกับด้านบน |
เมื่อผู้ใช้ล็อกอินเข้า GPTBots ระบบจะกำหนด account ID ของ GPTBots เป็น
user_idและเชื่อมโยงกับanonymous_id(browser fingerprint ID) โดยอัตโนมัติ
ประเภทการสนทนาและ Source ID
- Conversation Type (
conversation_type): ใช้ระบุช่องทางที่เริ่มต้นสนทนา (เช่น Workspace, API, Iframe, WhatsApp, LINE ฯลฯ) สามารถใช้ฟิลด์นี้กรอง log ตามประเภทช่องทางได้ - Source ID (
source_id): ใช้ระบุซับไทป์ของช่องทาง (เช่น LINE Channel ID ต่าง ๆ, Telegram Bot ID ต่าง ๆ) สามารถใช้ฟิลด์นี้กรอง log ตามซับ-แชนแนลได้
| ประเภทการสนทนา | conversation_type | คำอธิบาย |
|---|---|---|
| ทั้งหมด | ALL | สนทนาจากทุกช่องทางที่เชื่อมต่อ |
| Workspace - Search | C | สนทนาจาก Workspace Agent |
| Workspace - Agent | CHAT | สนทนาจาก Workspace Search |
| Workspace - Workflow | C_WORKFLOW | สนทนาจาก Workspace Workflow |
| Workspace - Apps | C_APPS | สนทนาจาก Workspace Market AI Apps |
| API | API | สนทนาจากการเชื่อมต่อ API |
| Iframe | EMBED | สนทนาจากการเชื่อมต่อ Iframe |
| Widget Bubble | WIDGET | สนทนาจากการเชื่อมต่อ Widget |
| AI Search | AI_SEARCH | สนทนาจากการเชื่อมต่อ AI Search |
| Share | SHARE | สนทนาจากการเชื่อมต่อ Share |
| WhatsApp by Meta | WHATSAPP_META | สนทนาจากการเชื่อมต่อ WhatsApp by Meta |
| WhatsApp by EngageLab | WHATSAPP_ENGAGELAB | สนทนาจากการเชื่อมต่อ WhatsApp by EngageLab |
| DingTalk Bot | DINGTALK | สนทนาจากการเชื่อมต่อ DingTalk Bot |
| Discord | DISCORD | สนทนาจากการเชื่อมต่อ Discord |
| Slack | SLACK | สนทนาจากการเชื่อมต่อ Slack |
| Zapier | ZAPIER | สนทนาจากการเชื่อมต่อ Zapier |
| WeChat Customer Service | WXKF | สนทนาจากการเชื่อมต่อ WeChat Customer Service |
| Telegram | TELEGRAM | สนทนาจากการเชื่อมต่อ Telegram |
| LiveChat | LIVECHAT | สนทนาจากการเชื่อมต่อ LiveChat |
| LINE | LINE | สนทนาจากการเชื่อมต่อ LINE; รองรับหลาย channel |
| สนทนาจากการเชื่อมต่อ Instagram | ||
| สนทนาจากการเชื่อมต่อ Facebook | ||
| Sobot | SO_BOT | สนทนาจากการเชื่อมต่อ Sobot |
| Zoho Sales IQ | ZOHO_SALES_IQ | สนทนาจากการเชื่อมต่อ Zoho Sales IQ |
| Intercom | INTERCOM | สนทนาจากการเชื่อมต่อ Intercom |
| Livedesk | LIVEDESK | สนทนาจากการเชื่อมต่อ Livedesk |
⚠️ หมายเหตุ: ค่าฟิลด์ในตารางข้างต้นสามารถใช้เป็นเงื่อนไขกรองข้อมูลเมื่อเรียกดูรายการสนทนาผ่าน API: Get Conversation List
สำหรับแพลตฟอร์มภายนอก เช่น LINE และ Telegram ที่รองรับหลายซับ-แชนแนล "Agent-Log" รองรับการกรอง 2 ชั้นตามประเภทการสนทนา
