iframe 与父页面通信事件对接规范
1. tokenInvalid(Token 失效事件)
-
事件说明:当用户当前 Token 过期或无效时触发。
-
传输字段:无
-
示例数据:json
登录链接:https://nxlink.nxcloud.com/admin/#/digital_iframe_test

正在进行中的对话列表
支持筛选聊天的筛选项:

展示还没有被分配的聊天(也包含进入数字虚拟坐席的聊天)
支持根据坐席组筛选

展示所有的客户&我的客户,点击后支持编辑(基础信息,自定义信息,备注)

支持的功能:

{ "type": "tokenInvalid" }
|
字段名 |
类型 |
说明 |
示例值 |
|
|
string |
登录用户邮箱 |
chenxxxxxx@xxxxxx.com |
|
phone |
string |
手机登录时传递 |
13811111234 |
{ "type": "login", "content": { "email": "chenxxxxxx@xxxxxx.com" } }
{ "type": "login", "content": { "phone": "13811111234" } }
{ "type": "logout" }
|
字段名 |
类型 |
说明 |
枚举值 |
|
code |
number |
坐席是否存在状态码 |
1 = 有坐席权限,2 = 无坐席权限 |
{ "type": "digitalAgentExists", "content": { "code": 1 } }
|
字段名 |
类型 |
说明 |
示例值 |
|
code |
number |
坐席在线状态码 |
0 = 离线,1 = 在线 |
{ "type": "digitalAgentStatus", "content": { "code": 0 } }
|
字段名 |
类型 |
说明 |
示例值 |
|
count |
number |
未读消息数量 |
0(无未读)、5(5 条未读) |
{ "type": "unreadCount", "content": { "count": 0 } }
|
通用字段 |
类型 |
说明 |
枚举 / 示例值 |
|
channel |
number |
消息发送渠道 |
10=webchat,5=viber,8=line,2=whatsapp |
|
customer_id |
string |
发送消息用户 ID |
2073673818 |
|
saas_conversation_id |
string |
会话唯一标识 |
1182975032053788672 |
|
message_type |
string |
消息类型 |
text = 文本,image = 图片 |
|
字段名 |
类型 |
说明 |
示例值 |
|
content |
string |
文本消息内容 |
Hello |
|
字段名 |
类型 |
说明 |
示例值 |
|
filename |
string |
图片文件名 |
webchat-20250620171928-ae8376ff-8b39-4ee8-aa2e-f8509feca9d6-.png |
|
media_link |
string |
图片访问链接 |
https://omni-dev.oss-accelerate.aliyuncs.com/7a72ff03-7181-4172-bb77-4589d06fd670-584123 |
|
字段名 |
类型 |
说明 |
示例值 |
|
message_type |
string |
消息类型 |
text = 文本(当前示例仅文本) |
|
content |
string |
消息内容 |
哈哈哈 |
|
channel |
number |
消息接收渠道 |
10=webchat,5=viber,8=line,2=wa |
|
saas_conversation_id |
string |
所属会话唯一标识 |
1182975032053788672 |
|
created_at |
string |
消息创建时间(UTC+8) |
2025-10-09 09:33:24 |
|
full_name |
string |
消息发送方名称 |
Anonymous501695 |
{
"type": "newMessageEvent",
"content": {
"message_type": "text",
"content": "Hello",
"channel": 10,
"customer_id": "2073673818",
"saas_conversation_id": "1182975032053788672",
"created_at": "2025-10-09 09:33:24",
"full_name": "Anonymous501695"
}
}
消息事件示例
[
{
"type": "tokenInvalid",//token失效
"content": {}
},
{
"type": "login",//邮箱登录,手机登录的话字段是phone
"content": {
"email": "chen.nanfeng@nxcloud.com"
}
},
{
"type": "digitalAgentExists",//是否有坐席 0离线,1在线
"content": {
"code": 1
}
},
{
"type": "unreadCount",//未读消息数
"content": {
"count": 0
}
},
{
"type": "unreadCount",
"content": {
"count": 0
}
},
{
"type": "unreadCount",
"content": {
"count": 0
}
},
{
"type": "digitalAgentStatus",
"content": {
"code": 0
}
},
{
"type": "logout",//退出登录
"content": {}
},
{
"type": "login",
"content": {
"email": "chen.nanfeng@nxcloud.com"
}
},
{
"type": "digitalAgentExists",
"content": {
"code": 1
}
},
{
"type": "unreadCount",
"content": {
"count": 0
}
},
{
"type": "digitalAgentStatus",
"content": {
"code": 0
}
},
{
"type": "sendMessageEvent",//发送消息事件
"content": {
"content": "Hello",//文本消息内容
"channel": 10,//渠道 10-webchat 5-viber 8-line 2-whatsapp
"customer_id": "2073673818",
"type": 1,
"preview_url": false,
"translate": false,
"business_whats_app_phone": "webchat",
"saas_conversation_id": "1182975032053788672",
"message_type": "text",//发送的消息类型
"message": {
"text": "Hello"
}
}
},
{
"type": "sendMessageEvent",
"content": {
"channel": 10,
"customer_id": "2073673818",
"type": "3",
"filename": "webchat-20250620171928-ae8376ff-8b39-4ee8-aa2e-f8509feca9d6-.png",
"mime_type": "image/png",
"media_id": "7a72ff03-7181-4172-bb77-4589d06fd670-584123",
"media_link": "https://omni-dev.oss-accelerate.aliyuncs.com/7a72ff03-7181-4172-bb77-4589d06fd670-584123",
"preview_url": false,
"business_whats_app_phone": "webchat",
"saas_conversation_id": "1182975032053788672",
"message_type": "image",
"message": {
"filename": "webchat-20250620171928-ae8376ff-8b39-4ee8-aa2e-f8509feca9d6-.png",
"media_id": "7a72ff03-7181-4172-bb77-4589d06fd670-584123",
"url": "https://omni-dev.oss-accelerate.aliyuncs.com/7a72ff03-7181-4172-bb77-4589d06fd670-584123"
}
}
},
{
"type": "newMessageEvent",//收到消息的事件
"content": {
"from": "1759972825966501695",
"to": "",
"message_id": "wg-b25fa5120a5448ae828997302b9221d3",
"channel": 10,
"status": "2",
"chat_type": 1,
"message_type": "text",
"content": "Hello",
"media_id": "",
"media_link": "",
"filename": "",
"created_at": "2025-10-09 09:33:24",
"customer_id": "2073673818",
"user_id": 584,
"user_name": "chen.nanfeng@nxcloud.com",
"message_status": 2,
"general_user_msg_status": "unread",
"saas_conversation_id": "1182975032053788672",
"tenant_id": 123,
"user_channel_id": "webchat",
"waba_id": "webchat",
"emoji_flag": false,
"full_name": "Anonymous501695",
"messageSource": 0,
"blacklisted": false,
"anonymous": true
}
},
]
Digital Iframe简单示例
<template>
<iframe
ref="iframeref"
allow="autoplay *;"
:src="digitalIframeUrl"
></iframe>
</template>
<script>
import { defineComponent, onMounted, reactive, toRefs, ref } from "vue";
export default defineComponent({
setup() {
const iframeref = ref();
const state = reactive({
digitalIframeUrl: "https://nxlink.nxcloud.com/admin/iframe/digital/index.html",
});
onMounted(() => {
});
window.addEventListener(
"message",
(event) => {
if (event.data.type == "login") {
console.log("登录成功", event.data);
}
if (event.data.type == "logout") {
console.log("登出", event);
}
if (event.data.type == "tokenInvalid") {
console.log("token失效", "token失效");
}
if (event.data.type == "digitalAgentExists") {
console.log("digital是否存在坐席", event.data);
}
if (event.data.type == "digitalAgentStatus") {
console.log("digital坐席状态", event.data);
}
if (event.data.type == "newMessageEvent") {
console.log("digital 收到新消息", event.data);
}
if (event.data.type == "sendMessageEvent") {
console.log("digital 发送消息", event.data);
}
if (event.data.type == "unreadCount") {
console.log("digital 未读消息数", event.data);
}
},
false
);
return {
...toRefs(state),
iframeref,
};
},
});
</script>