网页内嵌客服组件的入口测试:填一个已配置的 widget 渠道,点“加载 Widget”,
右下角即出现悬浮气泡。所有消息走真实后端(widget JWT + SSE),可与工作台 / 机器人联动。
1 配置渠道一次性
- 启动后端:
just dev
- 创建 widget 渠道 + 收件箱(可用下方 curl,或走 admin 界面)
- 创建机器人并绑定收件箱(可选;不绑定 = 纯人工)
# 渠道:verify_kind=jwt-widget,落 chat_message,入站触发 chat.ingress
curl -s -X POST http://localhost:9898/api/v1/admin/integration/channels \
-H 'Authorization: Bearer <ADMIN_TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"channel_key": "chat-widget-demo",
"provider": "widget",
"mode": "push",
"transport": "http1",
"framing": "raw",
"codec": "json",
"verify_kind": "jwt-widget",
"mapping": {
"external_id": "$.id",
"sender": "$.user",
"payload": { "body": "$.text" }
},
"target_type": "chat/chat_messages",
"route_extra": { "jobs": [{ "job_type": "chat.ingress", "max_attempts": 1 }] }
}'
# 收件箱:channel_id 填上面渠道返回的 id;bot_id 为空 = 纯人工(安全默认)
curl -s -X POST http://localhost:9898/api/v1/admin/cms/chat/chat_inboxes \
-H 'Authorization: Bearer <ADMIN_TOKEN>' -H 'Content-Type: application/json' \
-d '{
"channel_id": <CHANNEL_ID>,
"name": "网站咨询",
"greeting": "您好,有什么可以帮您?",
"widget_theme": { "color": "#4f46e5", "position": "right" }
}'
# 注:收件箱缺失时发消息会 404;渠道与收件箱都必须存在。
2 加载 Widget
切换渠道会换一套独立的 localStorage 会话(raf.widget.{channel}.*),互不串扰。