微信小程序 send
customerServiceMessage.send
本接口应在服务器端调用,详细说明参见服务端API。
本接口支持云调用。需开发者工具版本 >= 1.02.1904090(最新稳定版下载)
wx-server-sdk >= 0.4.0
发送客服消息给用户。详细规则见 发送客服消息
调用方式:
- HTTPS 调用
- 云调用
HTTPS 调用
请求地址
POST https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN
请求参数
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
access_token | string | 是 | 接口调用凭证 | |
touser | string | 是 | 用户的 OpenID | |
msgtype | string | 是 | 消息类型 | |
text | Object | 是 | 文本消息,msgtype="text" 时必填 | |
image | Object | 是 | 图片消息,msgtype="image" 时必填 | |
link | Object | 是 | 图文链接,msgtype="link" 时必填 | |
miniprogrampage | Object | 是 | 小程序卡片,msgtype="miniprogrampage" 时必填 |
msgtype 的合法值
值 | 说明 | 最低版本 |
---|---|---|
text | 文本消息 | |
image | 图片消息 | |
link | 图文链接 | |
miniprogrampage | 小程序卡片 |
text 的结构
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
content | string | 是 | 文本消息内容 |
image 的结构
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
media_id | string | 是 | 发送的图片的媒体ID,通过 新增素材接口 上传图片文件获得。 |
link 的结构
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
title | string | 是 | 消息标题 | |
description | string | 是 | 图文链接消息 | |
url | string | 是 | 图文链接消息被点击后跳转的链接 | |
thumb_url | string | 是 | 图文链接消息的图片链接,支持 JPG、PNG 格式,较好的效果为大图 640 X 320,小图 80 X 80 |
miniprogrampage 的结构
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
title | string | 是 | 消息标题 | |
pagepath | string | 是 | 小程序的页面路径,跟app.json对齐,支持参数,比如pages/index/index?foo=bar | |
thumb_media_id | string | 是 | 小程序消息卡片的封面, image 类型的 media_id,通过 新增素材接口 上传图片文件获得,建议大小为 520*416 |
返回值
Object
返回的 JSON 数据包
属性 | 类型 | 说明 |
---|---|---|
errcode | number | 错误码 |
errmsg | string | 错误信息 |
errcode 的合法值
值 | 说明 | 最低版本 |
---|---|---|
0 | 请求成功 | |
-1 | 系统繁忙,此时请开发者稍候再试 | |
40001 | 获取 access_token 时 AppSecret 错误,或者 access_token 无效。请开发者认真比对 AppSecret 的正确性,或查看是否正在为恰当的小程序调用接口 | |
40002 | 不合法的凭证类型 | |
40003 | 不合法的 OpenID,请开发者确认 OpenID 是否是其他小程序的 OpenID | |
45015 | 回复时间超过限制 | |
45047 | 客服接口下行条数超过上限 | |
48001 | API 功能未授权,请确认小程序已获得该接口 |
下发消息示例
发送文本消息
{
"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>
说明:
- data-miniprogram-appid 项,填写小程序appid,则表示该链接跳转小程序;
- data-miniprogram-path项,填写小程序路径,路径与app.json中保持一致,可带参数;
- 对于不支持 data-miniprogram-appid 项的客户端版本(6.5.16 以下),如果有 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"
}
}
云调用
云调用是小程序·云开发提供的在云函数中调用微信开放接口的能力,需要在云函数中通过 wx-server-sdk 使用。
接口方法
openapi.customerServiceMessage.send
需在 config.json 中配置 customerServiceMessage.send API 的权限,详情
请求参数
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
touser | string | 是 | 用户的 OpenID | |
msgtype | string | 是 | 消息类型 | |
text | Object | 是 | 文本消息,msgtype="text" 时必填 | |
image | Object | 是 | 图片消息,msgtype="image" 时必填 | |
link | Object | 是 | 图文链接,msgtype="link" 时必填 | |
miniprogrampage | Object | 是 | 小程序卡片,msgtype="miniprogrampage" 时必填 |
msgtype 的合法值
值 | 说明 | 最低版本 |
---|---|---|
text | 文本消息 | |
image | 图片消息 | |
link | 图文链接 | |
miniprogrampage | 小程序卡片 |
text 的结构
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
content | string | 是 | 文本消息内容 |
image 的结构
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
mediaId | string | 是 | 发送的图片的媒体ID,通过 新增素材接口 上传图片文件获得。 |
link 的结构
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
title | string | 是 | 消息标题 | |
description | string | 是 | 图文链接消息 | |
url | string | 是 | 图文链接消息被点击后跳转的链接 | |
thumbUrl | string | 是 | 图文链接消息的图片链接,支持 JPG、PNG 格式,较好的效果为大图 640 X 320,小图 80 X 80 |
miniprogrampage 的结构
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
title | string | 是 | 消息标题 | |
pagepath | string | 是 | 小程序的页面路径,跟app.json对齐,支持参数,比如pages/index/index?foo=bar | |
thumbMediaId | string | 是 | 小程序消息卡片的封面, image 类型的 media_id,通过 新增素材接口 上传图片文件获得,建议大小为 520*416 |
返回值
Object
返回的 JSON 数据包
属性 | 类型 | 说明 |
---|---|---|
errCode | number | 错误码 |
errMsg | string | 错误信息 |
errCode 的合法值
值 | 说明 | 最低版本 |
---|---|---|
0 | 成功 |
异常
Object
抛出的异常
属性 | 类型 | 说明 |
---|---|---|
errCode | number | 错误码 |
errMsg | string | 错误信息 |
errCode 的合法值
值 | 说明 | 最低版本 |
---|---|---|
-1 | 系统繁忙,此时请开发者稍候再试 | |
40001 | 获取 access_token 时 AppSecret 错误,或者 access_token 无效。请开发者认真比对 AppSecret 的正确性,或查看是否正在为恰当的小程序调用接口 | |
40002 | 不合法的凭证类型 | |
40003 | 不合法的 OpenID,请开发者确认 OpenID 是否是其他小程序的 OpenID | |
45015 | 回复时间超过限制 | |
45047 | 客服接口下行条数超过上限 | |
48001 | API 功能未授权,请确认小程序已获得该接口 |
下发消息示例
发送文本消息
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.customerServiceMessage.send({
touser: 'OPENID',
msgtype: 'text',
text: {
content: 'Hello World'
}
})
return result
} catch (err) {
return err
}
}
发送文本消息时,支持添加可跳转小程序的文字连接
文本内容...<a href="http://www.qq.com" data-miniprogram-appid="appid" data-miniprogram-path="pages/index/index">点击跳小程序</a>
说明:
- data-miniprogram-appid 项,填写小程序appid,则表示该链接跳转小程序;
- data-miniprogram-path项,填写小程序路径,路径与app.json中保持一致,可带参数;
- 对于不支持 data-miniprogram-appid 项的客户端版本(6.5.16 以下),如果有 herf 项,则仍然保持跳 href 中的链接;
- 小程序发带小程序文字链的文本消息,data-miniprogram-appid必须是该小程序的appid。
发送图片消息
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.customerServiceMessage.send({
touser: 'OPENID',
msgtype: 'image',
image: {
mediaId: 'MEDIA_ID'
}
})
return result
} catch (err) {
return err
}
}
发送图文链接
每次可以发送一个图文链接
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.customerServiceMessage.send({
touser: 'OPENID',
msgtype: 'link',
link: {
title: 'Happy Day',
description: 'Is Really A Happy Day',
url: 'URL',
thumbUrl: 'THUMB_URL'
}
})
return result
} catch (err) {
return err
}
}
发送小程序卡片
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.customerServiceMessage.send({
touser: 'OPENID',
msgtype: 'miniprogrampage',
miniprogrampage: {
title: 'title',
pagepath: 'pagepath',
thumbMediaId: 'thumb_media_id'
}
})
return result
} catch (err) {
return err
}
}