目录
企业可将应用页面配置到客服工具栏,方便接待人员在与微信用户的客服聊天中查看和使用,提高服务效率。从客服工具栏打开的页面,除了一般的小程序接口之外,可以使用有会话属性的接口,例如:获取当前客户userid、分享消息到当前会话。当然,开发者首先需要调用getContext接口获取当前入口entry值,以此判断是否从客服工具栏进入页面。
接口使用说明详见“wx.qy.getContext”,在客服工具栏里返回的entry值是single_kf_tools,具体如下:
返回结果 entry 说明
值 | 说明 | 支持的最低版本 |
---|---|---|
contact_profile | 从联系人详情进入 | 3.0.24 |
single_chat_tools | 从单聊会话的工具栏进入 | 3.0.24 |
group_chat_tools | 从群聊会话的工具栏进入 | 3.0.24 |
chat_attachment | 从会话的聊天附件栏进入 | 3.1.6 |
single_kf_tools | 从微信客服的工具栏进入 | 3.1.10 |
normal | 除以上场景之外进入,例如工作台,聊天会话等 | 3.0.24 |
接口使用说明详见“wx.qy.getCurExternalContact”,在客服工具栏里调用该接口,自建应用与第三方应用所需的权限有所不同,具体如下:
入口 | [getContext](#getContext)的entry值 | 自建应用 | 第三方应用 | 用户 | 支持的最低版本 |
---|---|---|---|---|---|
微信客服工具栏 | single_kf_tools | 所有 | 需有“微信客服权限->获取基础信息”权限 | 所有 | 3.1.10 |
接口使用说明详见“wx.qy.sendChatMessage”,在客服工具栏里调用该接口,自建应用与第三方应用所需的权限有所不同,具体如下:
入口 | [getContext](#getContext)的entry值 | 自建应用 | 第三方应用 | 用户 | 支持的最低版本 |
---|---|---|---|---|---|
微信客服工具栏 | single_kf_tools | 所有 | 需有“微信客服权限->获取基础信息”权限 | 所有 | 3.1.10 |
微信客服工具栏额外支持msgmenu
和channels_shop_product
的消息类型,具体如下:
msgmenu
移动端ios/android从 3.1.12 版本开始支持;桌面端win从 3.1.20 版本开始支持,mac暂不支持channels_shop_product
从 4.1.6 版本开始支持,四端均支持,参数可通过获取商品接口和获取店铺基本信息接口获取
需要从客服工具栏进入页面才可调用,否则会报错:unsupported msgtype,可先通过调用“wx.qy.getContext”来判断进入小程序的入口。
参数说明
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
msgtype | string | 是 | 消息类型 |
enterChat | Boolean | 否 | 为true时表示发送完成之后顺便进入会话,默认为false,仅移动端3.1.10及以上版本支持该字段 |
msgmenu | Object | 否 | 菜单消息 |
msgmenu::head_content | string | 否 | 起始文本 不多于1024字节 |
msgmenu::list | Object | 否 | 菜单项配置列表 |
msgmenu::list::type | string | 是 | 菜单类型。click -回复菜单 view -超链接菜单 miniprogram -小程序菜单 |
msgmenu::list::click | Object | 否 | type为click 的菜单项 |
msgmenu::list::click::id | string | 否 | 菜单ID 不少于1字节 不多于64字节 |
msgmenu::list::click::content | string | 是 | 菜单显示内容 不少于1字节 不多于128字节 |
msgmenu::list::view | Object | 否 | type为view 的菜单项 |
msgmenu::list::view::url | string | 是 | 点击后跳转的链接 不少于1字节 不多于2048字节 |
msgmenu::list::view::content | string | 是 | 菜单显示内容 不少于1字节 不多于1024字节 |
msgmenu::list.miniprogram | Object | 否 | type为miniprogram 的菜单项 |
msgmenu::list.miniprogram::appid | string | 是 | 小程序appid,必须是当前聊天工具栏打开的小程序 不少于1字节 不多于32字节 |
msgmenu::list.miniprogram::page | string | 是 | 小程序打开后的路径,注意要以.html作为后缀,否则在微信端打开会提示找不到页面 不少于1字节 不多于1024字节 |
msgmenu::list.miniprogram::content | string | 是 | 菜单显示内容 不少于1字节 不多于1024字节 |
msgmenu::tail_content | string | 否 | 结束文本 不多于1024字节 |
channelsShopProduct | Object | 否 | 视频号商品消息 |
channelsShopProduct::productId | string | 是 | 商品ID |
channelsShopProduct::shopAppId | string | 是 | 小店ID |
channelsShopProduct::imgUrl | string | 是 | 商品图像,获取商品接口中head_imgs 数组中的第一张图片 |
channelsShopProduct::title | string | 是 | 商品名,可通过获取商品接口获取 |
channelsShopProduct::sellingPrice | string | 是 | 价格区间最小值(单位分),获取商品接口中的商品 SKU 最小价格 |
channelsShopProduct::shopImgUrl | string | 是 | 视频号店铺头像URL,可通过获取店铺基本信息接口获取 |
channelsShopProduct::shopNickname | string | 是 | 视频号店铺名称,可通过获取店铺基本信息接口获取 |
success | Function | 否 | 群发成功的回调函数 |
fail | Function | 否 | 群发失败的回调函数 |
complete | Function | 否 | 调用结束的回调函数(群发成功、失败都会执行) |
示例代码
wx.qy.sendChatMessage({
msgtype:"msgmenu", //消息类型,必填
enterChat: true, //为true时表示发送完成之后顺便进入会话,默认为false,仅移动端3.1.10及以上版本支持该字段
msgmenu: {
head_content: "您对本次服务是否满意呢? ", // 起始文本
list: [{ // 菜单项配置列表
type: "click", // type 为 click 的菜单项
click: {
id: "101", // 菜单ID
content: "满意", // 菜单显示内容
},
},
{
type: "click",
click: {
id: "102",
content: "不满意",
},
},
{
type: "view", // type 为 view 的菜单项
view: {
url: "https://work.weixin.qq.com", // 点击后跳转的链接
content: "点击跳转到自助查询页面", // 菜单显示内容
},
},
{
type: "miniprogram", // type 为 miniprogram 的菜单项
miniprogram: {
appid: "wx123123123123123", //小程序的appid
page: "pages/index?userid=zhangsan&orderid=123123123", //小程序消息打开后的路径
content: "点击打开小程序查询更多", // 小程序消息的title
},
}],
tail_content: "欢迎再次光临", // 结束文本
},
channelsShopProduct: {
productId: "10000000000000", // 商品ID
shopAppId: "wx123123123123123", // 小店ID
imgUrl: "https://mmecimage.cn/p/xxxxxx"// 商品图像
title: "aaaaa" // 商品名
sellingPrice: "800" // 价格区间最小值(单位分) (销售价)
shopImgUrl: "http://mmbiz.qpic.cn/mmbiz_jpg/xxxx" // 视频号店铺头像URL
shopNickname: "名称" // 视频号店铺名称
},
success: function(res) {
//todo:
}
});