1. 使用说明

欢迎使用 “AICC” 工作台集成通信SDK。SDK 对在线工作台嵌入和被嵌入情况下的通信功能进行了封装,让您不用复杂编程即可实现在线客服工作台与自有系统的双向通信完成页面交互及数据传递。

1.1. 支持场景

当前SDK支持在以下场景使用:

  • 1、您的系统页面使用iframe嵌套在线工作台页面,例如单点登录等场景

  • 2、在线工作台使用iframe嵌套您的系统页面,例如工作台右侧边栏自定义tab

1.1.1. 单点登录

即可以通过您的系统登录调用我们的接口同时登录我们系统,进入后可通过iframe嵌入我们的页面直接使用

对接详见:单点登录 (需要基于调用方式

1.1.2. 工作台右侧边栏自定义tab

使用管理员账号登录-系统设置-在线客服-系统对接-自定义tab页,点击新建创建一个自定义tab,地址指到需要操作sdk的页面的url。(如果您的列表中没有可用的自定义菜单,请联系售后支持帮您进行配置) image 再在所配置的页面接入我们在线的sdk即可

1.2. 支持功能

当前SDK支持如下主要功能:

  • 1、监听在线工作台事件变化,例如:座席状态变更、切换会话、掉线等

  • 2、操作在线工作台,例如:发消息,发卡片(商品、小程序、订单等)、控制工作台右侧边栏切换等

1.3. 注意事项

  • 1、浏览器尽量使用主流浏览器的主流版本,例如Chrome

  • 2、如果使用上层嵌入工作台页面(单点登录等),请确保使用sdk时,工作台页面初始化完成(onload回调后),否则事件可能添加不成功

  • 3、请确保使用sdk方法时,sdk已加载完成。可通过 获取通信状态 判断sdk是否可操作

2. 快速开始

2.1. 安装SDK

首先在页面中引入integration-api.js

// 引入sdk 示例
<script src="https://agent-bj.clink.cn/sdk/integration-api.js"></script>

2.2. 初始化

1、作为上层应用(单点登录)使用sdk时, 传入AICC所在iframe的id

  AICCIntegrationAPI.init('iframe-id');

2、作为下层应用(工作台右侧边栏自定义tab)使用sdk时

  AICCIntegrationAPI.init();

2.3. 使用

添加event:事件监听现暂时只支持上传应用监听,即工作台被内嵌情况才能监听到

  AICCIntegrationAPI.addEventListener(eventName,  function);

触发工作台操作action:事件触发

  AICCIntegrationAPI.actionEmit(actionName, params, callback)

3. 事件监听

现暂时只支持上传应用监听,即工作台被内嵌情况才能监听到

AICCIntegrationAPI.addEventListener(eventName, function)

3.1. 获取通信状态

事件名称:onReady

如果无法保证引入的sdk是立即执行的,例如异步加载sdk,可先判断通信状态,确认可用再发起动作

  • 示例:

/**
 * 方式一:直接获取
 * 只读 boolean
 * 在AICC系统发送的建立连接消息后,会跟着发送一条onReady消息,sdk接收到后isReady状态置为true
 * 只纪录一次,重新加载AICC的iframe就需要重新init sdk
 */
const flag = AICCIntegrationAPI.isReady;

/**
 * 方式二:监听事件
 * 连接建立后会触发一次
 */
AICCIntegrationAPI.addEventListener('onReady', (e) => {
  console.log('onReady-----------');
  console.log(e);
});

3.2. 登录过期感知

事件名称:unAuthorization

注意:只有作为上层应用才会收到此消息

示例:

AICCIntegrationAPI.addEventListener('unAuthorization', (e) => {
  console.log('unAuthorization-----------');
  console.log(e);
});

3.3. 座席事件感知

事件名称:chatAgentChange

示例:

  AICCIntegrationAPI.addEventListener('chatAgentChange', e => {
    console.log('chatAgentChange-----------');
    console.log(e);
  });

具体会作为chatAgentChange事件传递过来的参数e的数据格式如下

3.3.1. 座席切换状态

名称

类型

说明

event

string

'AGENT_STATUS' ,标识座席切换状态事件

cno

string

座席号
示例: '001'

prevStatus

string

切换前状态
示例: '空闲'

status

string

目标状态,值为“管理置忙”时为管理员操作
示例: '离线'

示例:

{
  event: 'AGENT_STATUS',
  cno:'001',
  prevStatus: '空闲',
  status: '离线',
}

3.3.2. 座席掉线

掉线期间会频繁触发

名称

类型

说明

event

string

'CHAT_BREAK_LINE' ,标识座席掉线事件

cno

string

座席号
示例: '001'

示例:

{
  event: 'CHAT_BREAK_LINE',
  cno: '001', // 座席号
}

3.3.3. 座席被踢下线

名称

类型

说明

event

string

'CHAT_KICKOUT' ,标识座席被踢下线事件

cno

string

座席号
示例: '001'

示例:

{
  event: 'CHAT_KICKOUT',
  cno: '001', // 座席号
}

3.4. 会话事件感知

事件名称:chatSessionChange

示例:

  AICCIntegrationAPI.addEventListener('chatSessionChange', e => {
    console.log('chatSessionChange-----------');
    console.log(e);
  });

具体会作为chatSessionChange事件传递过来的参数如下

3.4.1. 切换会话

名称

类型

说明

event

string

'SWITCH_CHAT_CARD' ,标识切换会话事件

activeTab

CHAT_STATUS_TYPE

左侧tab选项
示例: 'handle',标识是待处理列表切换会话,具体见ts类型下CHAT_STATUS_TYPE

sessionState

CARD_STATUS_TYPE

左侧待处理tab下的子tab选项,只有当activeTab是’handle’待处理下才会有值
示例: 'robot',标识是待处理下的机器人列表切换会话,具体见ts类型下CARD_STATUS_TYPE

contactName

string

渠道名称
示例: '网页'

appId

string

渠道id
示例: '6bdddf5e-xxxxxx-6bf5b4efbec4'

appName

string

接入号名称
示例: '测试网页'

mainUniqueId

string

会话id
示例: '54227446-xxxxxx-c49ed4a.1716791861'

startTime

number

时间戳, 开始时间
示例: 1716791861

endTime

number

时间戳, 结束时间
示例: 1716793103

qname

string

来源队列
示例: '客服队列一'

cno

string

受理座席
示例: '001'

clientName

string

受理座席名称
示例: '测试座席'

customerCity

string

访客地区
示例: '成都'

visitorId

string

访客id
示例: '0001'

enterpriseId

number

企业id
示例: 8001xxx12

visitorName

string

访客名称
示例: 访客名称xx

customerId

string

客户id
示例: 55xx409

visitorExtraInfo

object

访客自定义参数,可由访客接入会话时提供自定义参数,该值还包含询前表单内容。该值默认包含访客ID与访客名称。
示例: "{\"访客ID\": \"0001\",\"访客名称\": \"访客\", \"tel\": \"访客电话\", \"externalId\": \"客户外部唯一标识\"}"

contactType

number

接入渠道 1:微信、2:网页、3:座席、4:小程序、5:微博、6:企业微信、7:百度营销、8:SDK、9:微信客服(独立版)、10:第三方接入、11:移动端、12:企微客服渠道、13:飞书渠道、19:微信客服(联合版)
示例: 2

ts类型

export enum CHAT_STATUS_TYPE {
  HANDLE = 'handle', // 待处理
  QUEUE = 'queue', // 排队
  LEAVE = 'leaveMsg', // 留言
  BROWSE = 'browse', // 浏览中
  HISTORY = 'history', // 历史
}
export enum CARD_STATUS_TYPE {
  CHAT = 'chat', // 会话中
  TO_REPLAY = 'toReplay', // 未回复
  ROBOT = 'robot', // 机器人
}

示例:

{
  event: 'SWITCH_CHAT_CARD',
  activeTab: 'handle',
  sessionState: 'robot',
  contactName: '网页',
  appId: '6bdddf5e-xxxxxx-6bf5b4efbec4',
  appName: '测试网页',
  mainUniqueId: '54227446-xxxxxx-c49ed4a.1716791861',
  startTime: 1716791861,
  endTime: 1716793103,
  qname: '客服队列一',
  cno: '001',
  clientName: '测试座席',
  customerCity: '成都',
  visitorId: '0001',
  enterpriseId: 8001xxx12,
}

3.4.2. 会话结束

名称

类型

说明

event

string

'CLOSE_CHAT_CARD' ,标识会话结束事件

mainUniqueId

string

会话id
示例: '54227446-xxxxxx-c49ed4a.1716791861'

endTime

number

时间戳, 结束时间
示例: 1716793103

reason

REASON_TYPE

结束原因,见下面ts类型
示例: 5

enterpriseId

number

企业id
示例: 8001xxx12

ts类型

export enum REASON_TYPE {
  // 队列溢出
  QUEUE_FULL = 1,
  // 无可用座席
  QUEUE_EMPTY = 2,
  // 留言结束
  VISITOR_LEAVE_MESSAGE = 3,
  // 座席主动关闭
  CLIENT_CLOSE = 5,
  // 访客主动关闭
  VISITOR_CLOSE = 6,
  // 系统超时
  SYSTEM_TIMEOUT = 7,
  // 系统关闭
  SYSTEM = 10,
  // 访客放弃排队
  QUEUE_ABANDON = 11,
  // 队列超时
  QUEUE_TIMEOUT = 12,
  // 访客超时未回复关闭
  VISITOR_REPLY_TIMEOUT = 13,
  // 访客离开超时关闭
  VISITOR_LEAVE_TIMEOUT = 14,
  // 访客取关公众号
  VISITOR_UNSUBSCRIBE = 15,
}

示例:

{
  event: 'CLOSE_CHAT_CARD',
  mainUniqueId: '54227446-xxxxxx-c49ed4a.1716791861',
  endTime: 1716793103,
  reason: 5,
  enterpriseId: 8001xxx12,
}

3.4.3. 响铃

名称

类型

说明

event

string

'CHAT_RING' ,标识响铃事件

cno

string

座席号
示例: '001'

mainUniqueId

string

会话id
示例: '54227446-xxxxxx-c49ed4a.1716791861'

visitorId

string

访客id
示例: '0001'

visitorName

string

访客名称,根据接收的推送事件不同,此字段可能不存在
示例: 'x先生'

ringType

RING_TYPE

响铃类型
示例: 'transferApplySound'

ringTime

number

时间戳, 响铃事件
示例: 1716793103

ts类型

enum RING_TYPE {
  // 座席超时
  agentTimeoutSound = 'agentTimeoutSound',
  // 新会话
  newSessionSound = 'newSessionSound',
  // 新消息
  msgSoundSetting = 'msgSoundSetting',
  // 访客下线
  visitorOfflineSound = 'visitorOfflineSound',
  // 转接
  transferApplySound = 'transferApplySound',
}

示例:

{
  event: 'CHAT_RING',
  cno: '001',
  mainUniqueId: '54227446-xxxxxx-c49ed4a.1716791861',
  visitorId: '0001',
  visitorName: 'x先生',
  ringType: 'transferApplySound',
  ringTime: 1716793103,
}

3.4.4. 座席发起三方会话

名称

类型

说明

event

string

'INVITE_GROUP' ,标识座席发起三方会话事件

mainUniqueId

string

会话id
示例: '54227446-xxxxxx-c49ed4a.1716791861'

visitorId

string

访客id
示例: '0001'

cno

string

发起三方会话座席号
示例: '001'

targetCno

string

目标座席号
示例: '002'

示例:

{
  event: 'INVITE_GROUP',
  mainUniqueId: '54227446-xxxxxx-c49ed4a.1716791861',
  visitorId: '0001',
  cno: '001',
  targetCno: '002',
}

3.4.5. 座席加入三方会话

名称

类型

说明

event

string

'JOIN_GROUP' ,标识座席加入三方会话事件

mainUniqueId

string

会话id
示例: '54227446-xxxxxx-c49ed4a.1716791861'

visitorId

string

访客id
示例: '0001'

cno

string

当前接受三方会话座席号
示例: '001'

sourceCno

string

发起三方会话座席号
示例: '002'

示例:

{
  event: 'JOIN_GROUP',
  mainUniqueId: '54227446-xxxxxx-c49ed4a.1716791861',
  visitorId: '0001',
  cno: '001',
  sourceCno: '002',
}

3.4.6. 座席拒绝加入三方会话

名称

类型

说明

event

string

'REFUSE_GROUP' ,标识座席拒绝加入三方会话事件

mainUniqueId

string

会话id
示例: '54227446-xxxxxx-c49ed4a.1716791861'

visitorId

string

访客id
示例: '0001'

cno

string

当前拒绝三方会话座席号
示例: '001'

sourceCno

string

发起三方会话座席号
示例: '002'

示例:

{
  event: 'REFUSE_GROUP',
  mainUniqueId: '54227446-xxxxxx-c49ed4a.1716791861',
  visitorId: '0001',
  cno: '001',
  sourceCno: '002',
}

3.4.7. 座席转接会话

名称

类型

说明

event

string

'CHAT_TRANSFER' ,标识座席转接会话事件

mainUniqueId

string

会话id
示例: '54227446-xxxxxx-c49ed4a.1716791861'

visitorId

string

访客id
示例: '0001'

cno

string

发起转接座席号
示例: '001'

targetCno

string

目标座席号, 转给座席时才有
示例: '002'

targetQno

string

目标队列号, 转给队列时才有
示例: '002'

示例:

{
  event: 'CHAT_TRANSFER',
  mainUniqueId: '54227446-xxxxxx-c49ed4a.1716791861',
  visitorId: '0001',
  cno: '001',
  targetCno: '002',
}

3.4.8. 座席接受转接

名称

类型

说明

event

string

'ACCEPT_TRANSFER' ,标识座席接受转接事件

mainUniqueId

string

会话id
示例: '54227446-xxxxxx-c49ed4a.1716791861'

visitorId

string

访客id
示例: '0001'

cno

string

当前接受转接座席号
示例: '001'

sourceCno

string

发起转接座席号
示例: '002'

示例:

{
  event: 'ACCEPT_TRANSFER',
  mainUniqueId: '54227446-xxxxxx-c49ed4a.1716791861',
  visitorId: '0001',
  cno: '001',
  sourceCno: '002',
}

3.4.9. 座席拒绝转接

名称

类型

说明

event

string

'REJECT_TRANSFER' ,标识座席接受转接事件

mainUniqueId

string

会话id
示例: '54227446-xxxxxx-c49ed4a.1716791861'

visitorId

string

访客id
示例: '0001'

cno

string

当前接收转接座席号
示例: '001'

sourceCno

string

发起转接座席号
示例: '002'

示例:

{
  event: 'REJECT_TRANSFER',
  mainUniqueId: '54227446-xxxxxx-c49ed4a.1716791861',
  visitorId: '0001',
  cno: '001',
  sourceCno: '002',
}

3.5. 座席拖拽图片/视频上传感知

事件名称:chatFileDrop

注意:只有作为下层应用才会收到此消息

示例:

AICCIntegrationAPI.addEventListener('chatFileDrop', (fileUrl) => {
  console.log('chatFileDrop-----------');
  console.log(fileUrl);
  // fileUrl为文件的url,此链接为临时链接,需要下载文件另行保存
  // https://xxx.com/xxx.jpg
});

4. 事件触发

AICCIntegrationAPI.actionEmit(actionName, params[, function])

4.1. 切换路由导航

动件名称:navigate

请求参数:

名称 是否必须 类型 说明

key

string

需要跳转目标页面所对应 privilegeId
示例: 'home'

params

object

需要跳转目标页面URL中需携带的附加参数
示例: { id: '001' }

返回参数:

参数 类型 说明

success

boolean

操作是否成功

message

string

操作结果信息

返回结果示例

{
  success: true,
  message: '成功'
}

示例:

  function changeRoute(result) {
    console.log('切换路由导航回调')
    console.log(result)
  }
  AICCIntegrationAPI.actionEmit('navigate', {key: 'home', params: {id: '001'}, changeRoute);

4.2. 关闭页面

动件名称:close

名称 是否必须 类型 说明

key

string

需要关闭页面所对应 privilegeId
示例: 'CHAT_WORKBENCH'

params

object

需要关闭页面URL中携带的附加参数
示例: { id: '001' }

返回参数:

参数 类型 说明

success

boolean

操作是否成功

message

string

操作结果信息

返回结果示例

{
  success: true,
  message: '成功'
}

示例:

  function closePage(result) {
    console.log('关闭页面回调')
    console.log(result)
  }
  AICCIntegrationAPI.actionEmit('close', {key: 'CHAT_WORKBENCH'}, closePage);

4.3. 切换右侧边栏

动件名称:switchChatRightTab

名称 是否必须 类型 说明

tabName

string

tab名称,会根据传入的tab名称,将工作台右侧边栏切换到对应匹配到tabName的tab
示例: '商品管理'

tabUrlParams

object

当需要切换工作台右侧tab到一个配置的自定义tab上时,可以添加此参数,将tabUrlParams解析为url参数携带到自定义tab链接上
只有当跳转的tab是自定义tab时此参数才起作用,且由于是url参数,如果有特殊字符请先转义再传递
示例: { id: '001' }

示例:

  AICCIntegrationAPI.actionEmit('switchChatRightTab', {
    tabName: '商品管理',
    tabUrlParams: {
      id: '001'
    }
  });

4.4. 发消息

动件名称:sendChatMessage

示例:

  AICCIntegrationAPI.actionEmit('sendChatMessage', messageInfo);

具体messageInfo内容与要发的消息类型有关,见以下子菜单

4.4.1. 发送文本消息

名称 是否必须 类型 说明

type

string

'sendText' ,标识发送文本消息

content

string

发送文本消息的内容
示例: '文本消息'

示例:

  var messageInfo = {
    type: "sendText",
    content: "文本消息",
  };
  AICCIntegrationAPI.actionEmit('sendChatMessage', messageInfo);

4.4.2. 发送商品卡片

示例:

  // 参数说明:
  // {
  //     type: "sendCard", 发送卡片消息类型,固定
  //     title: "", 标题
  //     subTitle: "", 子标题,一般用作商品名
  //     description: "", 描述,一般用作对商品的描述
  //     price: "", 价格信息
  //     img: "", 图片链接
  //     url: "", 点击卡片跳转url
  //     status:"", 状态
  //     subUrl:"",座席端点击卡片跳转链接
  //     tabMenuName:"",商品卡片详情所展示到的自定义菜单名称
  //     time: "", 时间信息
  //     extraInfo: [
  //           { name: "", value: "" }, 扩展信息,可多条
  //           ...
  //     ]
  // };
  var messageInfo = {
    type: "sendCard",
    title: '订单号:#2112323123',
    subTitle: '华为P40 麒麟990 5G SoC芯片 5000万超感知徕卡三摄 30倍数字变焦',
    description: '麒麟990芯片;5000万超感知徕卡三摄;30倍数字变焦;华为手机至高6期免息',
    price: '¥6999',
    time: '2021/12/21 21:50',
    img: '',
    status: '完成',
    tabMenuName: '自定义菜单',
    url: 'https://item.jd.com/100006607505.html',
    subUrl: 'https://www.baidu.com',
    extraInfo: [
        { name: '自定义字段1', value: '' },
        { name: '自定义字段2', value: '' },
        { name: '自定义字段3', value: '' },
        { name: '自定义字段4', value: '' },
        { name: '自定义字段5', value: '' },
    ],
  };
  AICCIntegrationAPI.actionEmit('sendChatMessage', messageInfo);

4.4.3. 发送订单

传入数据说明

若订单数据只传productList,则显示为商品列表。productList内只放入一个商品数据,则显示为一个商品

MessageInfo发送消息格式
名称 是否必须 类型 说明

type

string

'sendCard' ,标识发送卡片消息

cardType

string

'3',标识是订单卡片

orderInfo

OrderInfo

OrderInfo订单数据,订单具体消息数据格式

OrderInfo订单数据
名称 是否必须 类型 说明

title

string

店铺名称
示例: XX专营店

logo

string

店铺头像
示例: https://xxx.com/image/xx.jpeg

time

string

订单时间,具体时间
示例: xx年xx月xx日 00:00:00

number

string

订单编号
示例: 1234**2457000

status

订单状态

订单状态,具体文字状态
示例: 待收货

bottomButtonConfig

ButtonConfig

订单底部按钮,只支持链接模式,建议一个订单包含商品较多的情况,这里只传递有限的几个商品数据,其他商品采用此按钮配置链接跳转到查看该订单所有商品的页面。ButtonConfig见其他格式说明
示例: { "text": "共计120件,查看更多", "type": "link", "linkUrl": "https://xxx.com/", "target": "", "appId": "", "pagePath": "", "style": {} }

productList

Product[]

商品列表数组,Product表示单个商品,说明Product

Product

单个商品的数据格式

名称 是否必须 类型 说明

title

string

商品标题
示例: xxx商品

subtitle

string

商品副标题
示例: 商品说明

remark

string

描述,展示为标签样式
示例: 商品描述

amount

string

商品数量,非数字,可携带单位
示例: x5

price

string

商品价格,非数字,可携带单位
示例: $2999

img

string

商品图片url
示例: https://xxx.com/image/xxx.jpeg

imgTag

string

商品标签,对应商品图片左上角标签文字,建议小于等于4个中文
示例: 敬请期待

imgTagStyle

StyleType

商品标签样式,StyleType见其他格式说明
示例: { "color": "red" }

agentNavigateTabName

string

只在在线客服工作台座席端才起作用,客服点击则定位到工作台右侧边栏同名的 tab 打开
示例: 预览页面

visitorUrl

string

访客点击后打开的链接
示例: https://xxx.com/

agentUrl

string

客服点击后打开的链接
示例: https://xxx.com/

appId

string

访客点击跳转目标小程序的appId,适用于小程序嵌入H5和公众号嵌入H5,只在访客端生效,和pagePath一起传才会触发小程序跳转,优先级高于url
示例: 3qwrq***o43op

pagePath

string

访客点击跳转目标小程序的路由地址,适用于小程序嵌入H5和公众号嵌入H5,和appId一起传才会触发小程序跳转,优先级高于url
示例: /xxx/path

status

string

商品状态
示例: 待收货

其他格式说明

以下是具体的ts类型

export type ExtraDataType = string; // json
export enum ButtonType {
    LINK = 'link',
}
export interface NameValue {
    label: string;
    value: string;
}
export interface StyleType {
    fontWeight?: string; // 字重
    color?: string; //字体颜色
    border?: string; //边框
    background?: string; //背景
}
export interface ButtonConfig {
    type: ButtonType;
    text: string;
    style?: StyleType;
    // ------------link类型字段--------------
    linkUrl?: string;
    target?: string; // a标签跳转的类型
    // link类型需要跳转小程序字段,需要跳转小程序时以下两个字段都必须传
    appId?: string;
    pagePath?: string;
}
export interface Product {
    title: string;
    subtitle?: string;
    remark?: string;
    amount?: string;
    price?: string;
    img: string;
    imgTag?: string;
    imgTagStyle?: StyleType;
    agentNavigateTabName?: string;
    visitorUrl?: string;
    agentUrl?: string;
    appId?: string;
    pagePath?: string;
    status?: string;
    extraData?: ExtraDataType;
}

export interface Order {
    title?: string;
    logo?: string;
    time?: string;
    number?: string;
    status?: string;
    bottomButtonConfig?: ButtonConfig;
    extraData?: ExtraDataType;
    productList: Product[];
}

示例:

// 发送订单
var messageInfo = {
  // 固定,标识发卡片消息
  type: 'sendCard',
  // 固定,标识订单卡片
  cardType: '3',
  // 订单数据
  orderInfo: {
    "title": "XX专营店",
    "logo": "https://xxx.com/image/xx.jpeg",
    "time": "xx年xx月xx日 00:00:00",
    "number": "1234**2457000",
    "status": "待收货",
    "bottomButtonConfig": {
      "text": "共计120件,查看更多",
      "type": "link",
      "linkUrl": "https://xxx.com/",
      "target": "",
      "appId": "",
      "pagePath": "",
      "style": {}
    },
    "productList": [
      {
        "title": "xxx商品",
        "subtitle": "商品说明",
        "remark": "商品描述",
        "amount": "x5",
        "price": "$2999",
        "img": "https://xxx.com/image/xxx.jpeg",
        "imgTag": "敬请期待",
        "imgTagStyle": {
          "color": "red"
        },
        "agentNavigateTabName": "预览页面",
        "visitorUrl": "https://xxx.com/",
        "agentUrl": "https://xxx.com/",
        "appId": "3qwrq***o43op",
        "pagePath": "/xxx/path",
        "status": "待收货",
      }
    ]
  }
};
AICCIntegrationAPI.actionEmit('sendChatMessage', messageInfo);

以上代码触发效果如下

image

4.4.4. 发送物流卡片

名称 是否必须 类型 说明

type

string

'sendCard' ,标识发送卡片消息

cardType

string

'1',标识是物流卡片

createTime

string

下单时间
示例: "承运日期:4月11日"

goodsName

string

商品名称
示例: "商品名称:石子"

senderName

string

寄件人姓名
示例: "xx厂"

recipientName

string

收件人姓名
示例: "xx站"

goodsAmount

string

商品金额
示例: "58.00元/吨"

goodsQuantity

string

商品数量
示例: "可接一车"

orderLink

string

订单链接
示例: "https://www.xxx.com"

orderNumber

string

订单编号
示例: "80xxxx41258"

var messageInfo = {
  type: 'sendCard',
  cardType: "1",
  createTime: "承运日期:4月11日",
  goodsName: "商品名称:石子",
  senderName: "xx厂",
  recipientName: "xx站",
  goodsAmount: "58.00元/吨",
  goodsQuantity: "可接一车",
  orderLink: "https://www.xxx.com",
  orderNumber: "80xxxx41258",
};
AICCIntegrationAPI.actionEmit('sendChatMessage', messageInfo);

以上代码触发效果如下

image

4.4.5. 发送小程序卡片

发送小程序卡片必须微信公众号和小程序关联(若想通过复制链接获取小程序链接需开启小程序链接管理权限)

名称 是否必须 类型 说明

type

string

'sendCard' ,标识发送卡片消息

cardType

string

'2',标识是小程序卡片

title

string

小程序标题
示例: "欢迎访问"

pagepath

string

点击卡片跳转的路由
示例: "pages/index/index"

query

string

点击卡片跳转的路由需要携带的参数
示例: "id=1&name=zs"

miniProgramUrl

string

点击卡片跳转的完整链接
示例: "https://wxaurl.cn/xxx"

picurl

string

小程序展示图,图片推荐大小为810px * 410px
示例: "https://xxx.com/image/xx.jpeg"

appid

string

小程序appId
示例: "wx9a65xxxx0"

appSecret

string

小程序appSecret
示例: "91cd2xxxxxxxxxxxxxxxb6e884"

appLogo

string

小程序logo,推荐图片长宽比例是5:4,推荐的logo大小可以是50px40px或100px80px
示例: "https://xxx.com/image/xx.jpeg"

appName

string

小程序名称
示例: "小程序测试"

访客端收到卡片后的URL点击执行优先级顺序:

1、网页:miniProgramUrl > appSecret获取的URL > pagepath+query
2、微信小程序、公众号、小程序嵌入H5、公众号嵌入H5:pagepath+query

访客端收到卡片后的URL复制执行优先级:

网页、小程序嵌入H5、公众号嵌入H5:miniProgramUrl > appSecret获取的URL > pagepath+query

示例:

var messageInfo = {
  type: 'sendCard',
  cardType: '2',
  title: '欢迎访问',
  pagepath: 'pages/index/index',
  query: 'id=1&name=zs',
  miniProgramUrl: 'https://wxaurl.cn/FX8cifcl49',
  picurl: 'https://xxx.com/image/xx.jpeg',
  appid: 'wx9a65xxxx0',
  appSecret: '91cd2xxxxxxxxxxxxxxxb6e884',
  appLogo:'https://xxx.com/image/xx.jpeg',
  appName: '小程序测试'
};
AICCIntegrationAPI.actionEmit('sendChatMessage', messageInfo);

以上代码触发效果如下

image