十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
需要将 button 组件 open-type 的值设置为 contact,当用户点击后就会进入客服会话,如果用户在会话中点击了小程序消息,则会返回到小程序,开发者可以通过 bindcontact 事件回调获取到用户所点消息的页面路径 path 和对应的参数 query。

站在用户的角度思考问题,与客户深入沟通,找到和顺网站设计与和顺网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、做网站、企业官网、英文网站、手机端网站、网站推广、国际域名空间、虚拟主机、企业邮箱。业务覆盖和顺地区。
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位整型 | 
用户在客服会话中发送图片消息时将产生如下数据包:
      1482048670 
      1234567890123456 
 
{
  "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位整型 | 
用户在客服会话中发送小程序卡片消息时将产生如下数据包:
  1482048670 
  1234567890123456 
   
{
  "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 | 
用户在小程序“客服会话按钮”进入客服会话时将产生如下数据包:
    1482048670 
     
{
  "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 数据:
    1399197672 
     
参数说明
| 参数 | 是否必须 | 描述 | 
|---|---|---|
| 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),
  }
}开发者可通过调用 客服输入状态接口,返回客服当前输入状态给用户。
开发者可在接收和发送客服消息的过程中获取或上传临时素材。
接收到用户消息之后,可通过 获取临时素材接口 获取消息中的临时素材
通过 上传临时素材接口 可以上传临时素材,并在 发送消息接口 中使用。