b..._微信小程序 button客服用户进去消息推送">
赞
踩
需要将 button 组件 open-type 的值设置为 contact,当用户点击后就会进入客服会话,如果用户在会话中点击了小程序消息,则会返回到小程序,开发者可以通过 bindcontact 事件回调获取到用户所点消息的页面路径 path 和对应的参数 query。
"contact" bindcontact="handleContact">button>
Page({
handleContact (e) {console.log(e.detail.path)console.log(e.detail.query)
}
})
参数 | 类型 | 说明 |
---|---|---|
path | String | 小程序消息指定的路径 |
query | Object | 小程序消息指定的查询参数 |
用户向小程序客服发送消息、或者进入会话等情况时,开发者填写的服务器配置 URL (如果使用的是云开发,则是配置的云函数)将得到微信服务器推送过来的消息和事件,开发者可以依据自身业务逻辑进行响应。接入和使用方式请参考消息推送。
在页面中使用 可以显示进入客服会话按钮。
当用户在客服会话发送消息、或由某些特定的用户操作引发事件推送时,微信服务器会将消息或事件的数据包发送到开发者填写的 URL,如果使用的是云开发,则可以推送到指定的云函数(详情请参考消息推送)。开发者收到请求后可以使用 发送客服消息 接口进行异步回复。
各消息类型的推送JSON、XML数据包结构如下。
用户在客服会话中发送文本消息时将产生如下数据包:
1482048670 1234567890123456
{ "ToUserName": "toUser", "FromUserName": "fromUser", "CreateTime": 1482048670, "MsgType": "text", "Content": "this is a test", "MsgId": 1234567890123456}
参数 | 说明 |
---|---|
ToUserName | 小程序的原始ID |
FromUserName | 发送者的openid |
CreateTime | 消息创建时间(整型) |
MsgType | text |
Content | 文本消息内容 |
MsgId | 消息id,64位整型 |
用户在客服会话中发送图片消息时将产生如下数据包:
<xml> <ToUserName>ToUserName> <FromUserName>FromUserName> <CreateTime>1482048670CreateTime> <MsgType>MsgType> <PicUrl>PicUrl> <MediaId>MediaId> <MsgId>1234567890123456MsgId>xml>
{"ToUserName": "toUser","FromUserName": "fromUser","CreateTime": 1482048670,"MsgType": "image","PicUrl": "this is a url","MediaId": "media_id","MsgId": 1234567890123456}
参数 | 说明 |
---|---|
ToUserName | 小程序的原始ID |
FromUserName | 发送者的openid |
CreateTime | 消息创建时间(整型) |
MsgType | image |
PicUrl | 图片链接(由系统生成) |
MediaId | 图片消息媒体id,可以调用[获取临时素材]((getTempMedia)接口拉取数据。 |
MsgId | 消息id,64位整型 |
用户在客服会话中发送小程序卡片消息时将产生如下数据包:
<xml> <ToUserName>ToUserName> <FromUserName>FromUserName> <CreateTime>1482048670CreateTime> <MsgType>MsgType> <MsgId>1234567890123456MsgId> <Title>Title> <AppId>AppId> <PagePath>PagePath> <ThumbUrl>ThumbUrl> <ThumbMediaId>ThumbMediaId>xml>
{"ToUserName": "toUser","FromUserName": "fromUser","CreateTime": 1482048670,"MsgType": "miniprogrampage","MsgId": 1234567890123456,"Title":"title","AppId":"appid","PagePath":"path","ThumbUrl":"","ThumbMediaId":""}
参数 | 说明 |
---|---|
ToUserName | 小程序的原始ID |
FromUserName | 发送者的openid |
CreateTime | 消息创建时间(整型) |
MsgType | miniprogrampage |
MsgId | 消息id,64位整型 |
Title | 标题 |
AppId | 小程序appid |
PagePath | 小程序页面路径 |
ThumbUrl | 封面图片的临时cdn链接 |
ThumbMediaId | 封面图片的临时素材id |
用户在小程序“客服会话按钮”进入客服会话时将产生如下数据包:
<xml> <ToUserName>ToUserName> <FromUserName>FromUserName> <CreateTime>1482048670CreateTime> <MsgType>MsgType> <Event>Event> <SessionFrom>SessionFrom>xml>
{"ToUserName": "toUser","FromUserName": "fromUser","CreateTime": 1482048670,"MsgType": "event","Event": "user_enter_tempsession","SessionFrom": "sessionFrom"}
参数 | 说明 |
---|---|
ToUserName | 小程序的原始ID |
FromUserName | 发送者的openid |
CreateTime | 事件创建时间(整型) |
MsgType | event |
Event | 事件类型,user_enter_tempsession |
SessionFrom | 开发者在客服会话按钮设置的 session-from 属性 |
当用户和小程序客服产生特定动作的交互时(具体动作列表请见下方说明),微信将会把消息数据推送给开发者,开发者可以在一段时间内(目前为 48 小时)调用客服接口,通过调用 发送客服消息接口 来发送消息给普通用户。此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务。
目前允许的动作列表如下,不同动作触发后,允许的客服接口下发消息条数和下发时限不同。
用户动作 | 允许下发条数限制 | 下发时限 |
---|---|---|
用户发送消息 | 5 条 | 48 小时 |
如果小程序设置了消息推送,普通微信用户向小程序客服发消息时,微信服务器会先将消息 POST 到开发者填写的 URL 上,如果希望将消息转发到网页版客服工具,则需要开发者在响应包中返回 MsgType 为 transfer_customer_service 的消息,微信服务器收到响应后会把当次发送的消息转发至客服系统。
用户被客服接入以后,客服关闭会话以前,处于会话过程中时,用户发送的消息均会被直接转发至客服系统。当会话超过 30 分钟客服没有关闭时,微信服务器会自动停止转发至客服,而将消息恢复发送至开发者填写的 URL 上。
用户在等待队列中时,用户发送的消息仍然会被推送至开发者填写的 URL 上。
这里特别要注意,只针对微信用户发来的消息才进行转发,而对于其他事件(比如用户从小程序唤起客服会话)都不应该转发,否则客服在客服系统上就会看到一些无意义的消息了。
开发者只要在响应包中返回 MsgType 为 transfer_customer_service 的消息,微信服务器收到响应后就会把当次发送的消息转发至客服系统。
如果是使用自有服务器接收的消息推送,则需返回如下格式的 XML 数据:
<xml> <ToUserName>ToUserName> <FromUserName>FromUserName> <CreateTime>1399197672CreateTime> <MsgType>MsgType>xml>
参数说明
参数 | 是否必须 | 描述 |
---|---|---|
ToUserName | 是 | 接收方帐号(收到的OpenID) |
FromUserName | 是 | 开发者微信号 |
CreateTime | 是 | 消息创建时间 (整型) |
MsgType | 是 | transfer_customer_service |
如果是使用云函数接收的消息推送,则需在云函数被客服消息触发后返回同样格式的 JSON 数据:
// ...exports.main = async (event, context) => { // 判断处理客服消息 ... // 最后返回 JSON return { MsgType: 'transfer_customer_service', ToUserName: 'touser', FromUserName: 'fromuser', CreateTime: parseInt(+new Date / 1000), }}
开发者可通过调用 客服输入状态接口,返回客服当前输入状态给用户。
此接口需要客服消息接口权限。
如果不满足发送客服消息的触发条件,则无法下发输入状态。
下发输入状态,需要客服之前 30 秒内跟用户有过消息交互。
在输入状态中(持续 15 秒),不可重复下发输入态。
在输入状态中,如果向用户下发消息,会同时取消输入状态。
开发者可在接收和发送客服消息的过程中获取或上传临时素材。
接收到用户消息之后,可通过 获取临时素材接口 获取消息中的临时素材
通过 上传临时素材接口 可以上传临时素材,并在 发送消息接口 中使用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。