客服功能:
使用小程序客服功能可以与客服人员进行沟通.
会话入口:
- 小程序内:开发者在小程序内添加客服消息按钮组件,用户可以在小陈需内唤起客服会话页面,给小程序发消息;
- 已使用过的小程序客服消息会聚合显示在小程序客服消息内,用户可以在小程序外查看历史消息,并给小程序客服发消息.
客服消息按钮组件
contact-button, 客服会话按钮,用于在页面上显示一个客服会话按钮,用户点击该按钮后会进入客服会话.
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
size | Number | 18 | 会话按钮大小,有效值 18-27,单位:px |
type | String | default-dark | 会话按钮的样式类型 |
session-from | String | 用户从该按钮进入会话时,开发者将收到带上本参数的事件推送。本参数可用于区分用户进入客服会话的来源. |
示例代码
<contact-button
type="default-light"
size="20"
session-from="weapp"
>
</contact-button>
相关组件:button 组件通过设置 open-type="contact" 亦可进入客服会话
当用户在客服会话中发送消息(或进行某些特定的用户操作引发的事件推送时),微信服务器会将消息(或事件)的数据包(JSON或者XML格式)POST请求开发者填写的URL。开发者收到请求后可以使用发送客服消息接口进行异步回复。
发送客服消息
当用户和小程序客户产生特定动作的交互时,微信会把消息数据推送给开发者,开发者在一段时间内(48小时)调用客服接口,通过POST一个JSON数据包来发送消息给普通用户.此接口主要用于客服等有人工消息处理环节的功能,为开发者用户提供更加优质的服务.
用户动作 | 允许下发条数限制 | 下发时限 |
---|---|---|
用户通过客服消息按钮进入会话 | 1条 | 1分钟 |
用户发送信息 | 5条 | 48小时 |
客服接口-发消息
http请求方式: POST
https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN
各消息类型所需的JSON数据包如下:
- 发送文本消息
{
"touser":"OPENID",
"msgtype":"text",
"text":
{
"content":"Hello World"
}
}
发送文本消息时,支持添加可跳转小程序的文字链
文本内容....<a href="http://www.qq.com" data-miniprogram-appid="appid" data-miniprogram-path="pages/index/index">点击跳小程序</a>
说明:
1.data-miniprogram-appid 项,填写小程序appid,则表示该链接跳转小程序;
- data-miniprogram-path项,填写小程序路径,路径与app.json中保持一致,可带参数;
- 对于不支持data-miniprogram-appid 项的客户端版本,如果有herf项,则仍然保持跳href中的链接;
- 小程序发带小程序文字链的文本消息,data-miniprogram-appid必须是该小程序的appid。
- 发送图片消息
{
"touser":"OPENID",
"msgtype":"image",
"image":
{
"media_id":"MEDIA_ID"
}
}
- 发送图文链接:每次可以发送一个图文链接
{
"touser": "OPENID",
"msgtype": "link",
"link": {
"title": "Happy Day",
"description": "Is Really A Happy Day",
"url": "URL",
"thumb_url": "THUMB_URL"
}
}
- 发送小程序卡片
{
"touser":"OPENID",
"msgtype":"miniprogrampage",
"miniprogrampage":{
"title":"title",
"pagepath":"pagepath",
"thumb_media_id":"thumb_media_id"
}
}
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
access_token | 是 | 调用接口凭证 |
touser | 是 | 普通用户(openid) |
msgtype | 是 | 消息类型,文本为text,图文链接为link |
content | 是 | 文本消息内容 |
media_id | 是 | 发送的图片的媒体ID,通过新增素材接口上传图片文件获得。 |
title | 是 | 消息标题 |
description | 是 | 图文链接消息 |
url | 是 | 图文链接消息被点击后跳转的链接 |
picurl | 是 | 图文链接消息的图片链接,支持 JPG、PNG 格式,较好的效果为大图 640 X 320,小图 80 X 80 |
pagepath | 是 | 小程序的页面路径,跟app.json对齐,支持参数,比如pages/index/index?foo=bar |
thumb_media_id | 是 | 小程序消息卡片的封面, image类型的media_id,通过新增素材接口上传图片文件获得,建议大小为520*416 |
返回码说明
参数 | 说明 |
---|---|
-1 | 系统繁忙,此时请开发者稍后再试 |
0 | 请求成功 |
40001 | 获取 access_token 时 AppSecret 错误,或者 access_token 无效。请开发者认真比对 AppSecret 的正确性,或查看是否正在为恰当的小程序调用接口 |
40002 | 不合法的凭证类型 |
40003 | 不合法的 OpenID,请开发者确认OpenID否是其他小程序的 OpenID |
45015 | 回复时间超过限制 |
45047 | 客服接口下行条数超过上限 |
48001 | api功能未授权,请确认小程序已获得该接口 |
当用户在客服会话发送消息(或进行某些特定的用户操作引发的事件推送时),,微信服务器会将消息(或事件)的数据包(JSON或者XML格式)POST请求开发者填写的URL。开发者收到请求后可以使用发送客服消息接口进行异步回复。
微信服务器在将用户的消息发给小程序的开发者服务器地址(开发设置处配置)后,微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次,如果在调试中,发现用户无法收到响应的消息,可以检查是否消息处理超时。关于重试的消息排重,有msgid的消息推荐使用msgid排重。事件类型消息推荐使用FromUserName + CreateTime 排重。
服务器收到请求必须做出下述回复,这样微信服务器才不会对此作任何
处理,并且不会发起重试,否则,将出现严重的错误提示。详见下面说明:
1、直接回复success(推荐方式)
2、直接回复空串(指字节长度为0的空字符串,而不是结构体中content字段的内容为空)
一旦遇到以下情况,微信都会在小程序会话中,向用户下发系统提示“该小程序客服暂时无法提供服务,请稍后再试”:
1、开发者在5秒内未回复任何内容
2、开发者回复了异常数据
如果开发者希望增强安全性,可以在开发者中心处开启消息加密,这样,用户发给小程序的消息以及小程序被动回复用户消息都会继续加密,详见消息加解密说明。
各消息类型的推送JSON、XML数据包结构如下。
文本消息
用户在客服会话中发送文本消息时将产生如下数据包:
XML格式:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1482048670</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this is a test]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>
JSON格式
{
"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格式
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1482048670</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<PicUrl><![CDATA[this is a url]]></PicUrl>
<MediaId><![CDATA[media_id]]></MediaId>
<MsgId>1234567890123456</MsgId>
</xml>
JSON格式
{
"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,可以调用获取临时素材接口拉取数据。 |
MsgId | 消息id,64位整型 |
小程序卡片消息
用户在客服会话中发送小程序卡片消息时将产生如下数据包:
XML格式
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1482048670</CreateTime>
<MsgType><![CDATA[miniprogrampage]]></MsgType>
<MsgId>1234567890123456</MsgId>
<Title><![CDATA[Title]]></Title>
<AppId><![CDATA[AppId]]></AppId>
<PagePath><![CDATA[PagePath]]></PagePath>
<ThumbUrl><![CDATA[ThumbUrl]]></ThumbUrl>
<ThumbMediaId><![CDATA[ThumbMediaId]]></ThumbMediaId>
</xml>
JSON格式
{
"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格式
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1482048670</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[user_enter_tempsession]]></Event>
<SessionFrom><![CDATA[sessionFrom]]></SessionFrom>
</xml>
JSON格式
{
"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 |
调用客服消息接口发送客服消息
当用户在小程序内打开客服会话,或是给小程序客服发消息,微信服务器会将消息(或事件)的数据包(JSON或者XML格式)POST到开发者填写的URL。开发者收到请求后可以调用接口进行异步回复。如小程序的客服消息权限集已授权给第三方平台,则所有的客服消息将推送到第三方平台的服务器,不再推送到开发者的服务器或推送到网页版客服工具.
填写消息推送配置
登录小程序,在“设置-开发设置-消息推送”启用消息推送功能并完成相关信息配置(包括服务器地址、Token、及加密方式等)。
启用并设置服务器配置后,用户发送的消息以及开发者需要的事件推送,都将被微信转发至开发者URL中。