天天育儿网,内容丰富有趣,生活中的好帮手!
天天育儿网 > 小程序 消息订阅 统一服务消息 客服消息 消息推送

小程序 消息订阅 统一服务消息 客服消息 消息推送

时间:2020-04-02 04:41:20

相关推荐

小程序 消息订阅 统一服务消息 客服消息 消息推送

1、消息订阅1、消息类型(1) 一次性订阅消息用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。(2) 长期订阅消息用户订阅一次后,开发者可长期下发多条消息。目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。(3) 订阅消息语音提醒当开发者调用wx.requestSubscribeMessage时仅订阅1条消息且该模板支持开启语音提醒,当用户开启了语音提醒,该模板的订阅状态为'acceptWithAudio'。如:收款到账通知2、配置模板并获取模板id小程序后台->订阅消息中设置3、发起订阅一次性模板id和永久模板id不可同时使用一次授权调用里,每个tmplId对应的模板标题不能存在相同的,若出现相同的,只保留一个(1)wx.requestSubscribeMessagewx.requestSubscribeMessage({tmplIds['id',...],一次调用最多可订阅3条消息,每个tmplId对应的模板标题需要不相同,否则会被过滤。successerrMsg接口调用成功时errMsg值为'requestSubscribeMessage:ok'模板id'accept'、'reject'、'ban'、'filter''accept'表示用户同意订阅该条id对应的模板消息'reject'表示用户拒绝订阅该条id对应的模板消息'ban'表示已被后台封禁'filter'表示该模板因为模板标题同名被后台过滤。例如 { errMsg: "requestSubscribeMessage:ok", zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: "accept"}failcomplete})(2)获取用户对相关模板消息的订阅状态当用户勾选了订阅面板中的“总是保持以上选择,不再询问”时,模板消息会被添加到用户的小程序设置页,通过wx.getSetting接口可获取用户对相关模板消息的订阅状态wx.getSetting({withSubscriptions是否同时获取用户订阅消息的订阅状态,默认不获取,注意:withSubscriptions只返回用户勾选过订阅面板中的“总是保持以上选择,不再询问”的订阅消息。 successauthSetting用户授权结果subscriptionsSetting用户订阅消息设置,接口参数withSubscriptions值为true时才会返回。{mainSwitch: true, 订阅消息总开关itemSettings: { 每一项开关SYS_MSG_TYPE_INTERACTIVE: 'accept', 小游戏系统订阅消息SYS_MSG_TYPE_RANK: 'accept'zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: 'reject', 普通一次性订阅消息ke_OZC_66gZxALLcsuI7ilCJSP2OJ2vWo2ooUPpkWrw: 'ban',}}miniprogramAuthSetting在插件中调用时,当前宿主小程序的用户授权结果failcomplete})(3)服务端发送消息方式一:POST https://api./cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN请求体:access_token|cloudbase_access_token接口调用凭证touser接收者(用户)的openidtemplate_id所需下发的订阅模板idpage点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。data模板内容,格式形如{"key1":{"value":any},"key2":{"value":any}}参数类别参数说明参数值限制说明thing.DATA事物20个以内字符可汉字、数字、字母或符号组合number.DATA数字32位以内数字只能数字,可带小数letter.DATA字母32位以内字母只能字母symbol.DATA符号5位以内符号只能符号character_string.DATA字符串32位以内数字、字母或符号可数字、字母或符号组合time.DATA时间24小时制时间格式(支持+年月日),支持填时间段,两个时间点之间用“~”符号连接例如:15:01,或:10月1日 15:01date.DATA日期年月日格式(支持+24小时制时间),支持填时间段,两个时间点之间用“~”符号连接例如:10月1日,或:10月1日 15:01amount.DATA金额1个币种符号+10位以内纯数字,可带小数,结尾可带“元”可带小数phone_number.DATA电话17位以内,数字、符号电话号码,例:+86-0766-66888866car_number.DATA车牌8位以内,第一位与最后一位可为汉字,其余为字母或数字车牌号码:粤A8Z888挂name.DATA姓名10个以内纯汉字或20个以内纯字母或符号中文名10个汉字内;纯英文名20个字母内;中文和字母混合按中文名算,10个字内phrase.DATA汉字5个以内汉字5个以内纯汉字,例如:配送中基本格式:姓名: {{name01.DATA}}金额: {{amount01.DATA}}行程: {{thing01.DATA}}日期: {{date01.DATA}}示例:"data": {"number01": {"value": '339208499'},"date01": {"value": '01月05日'},"site01": {"value": 'TIT创意园'},"site02": {"value": '广州市新港中路397号'}},miniprogram_state跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版lang"进入小程序查看"的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN接口调用凭证ACCESS_TOKEN通过如下接口获取GET https://api./cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET方式二:云调用方式const cloud = require('wx-server-sdk')cloud.init({env: cloud.DYNAMIC_CURRENT_ENV,})exports.main = async (event, context) => {try {const result = await cloud.openapi.subscribeMessage.send({touser接收者(用户)的openidtemplate_id所需下发的订阅模板idpage点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。data模板内容,格式形如{"key1":{"value":any},"key2":{"value":any}}miniprogram_state跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版lang"进入小程序查看"的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN})return result} catch (err) {return err}}(4)服务端接收相关的订阅内容1.当用户触发订阅消息弹框后,用户的相关行为事件结果会推送至开发者所配置的服务器地址。{"ToUserName": "gh_123456789abc","FromUserName": "o7esq5OI1Uej6Xixw1lA2H7XDVbc","CreateTime": "1620973045","MsgType": "event","Event": "subscribe_msg_popup_event","SubscribeMsgPopupEvent": [ {"TemplateId": "hD-ixGOhYmUfjOnI8MCzQMPshzGVeux_2vzyvQu7O68","SubscribeStatusString": "accept","PopupScene": "0"}],}ToUserName小程序帐号IDFromUserName用户openidCreateTime时间戳TemplateId模板id(一次订阅可能有多个id)SubscribeStatusString订阅结果(accept接收,reject拒收)PopupScene弹框场景,0代表在小程序页面内2.当用户在手机端服务通知里消息卡片右上角“...”管理消息时,或者在小程序设置管理中的订阅消息管理页面内管理消息时,相应的行为事件会推送至开发者所配置的服务器地址。目前只推送取消订阅的事件,即对消息设置“拒收”{"ToUserName": "gh_123456789abc","FromUserName": "o7esq5OI1Uej6Xixw1lA2H7XDVbc","CreateTime": "1610968440","MsgType": "event","Event": "subscribe_msg_change_event","SubscribeMsgChangeEvent": [ {"TemplateId":"BEwX0BOT3MqK3Uc5oTU3CGBqzjpndk2jzUf7VfExd8","SubscribeStatusString": "reject"}],}ToUserName小程序帐号IDFromUserName用户openidCreateTime时间戳TemplateId模板id(一次订阅可能有多个id)SubscribeStatusString订阅结果(reject拒收)3.调用订阅消息接口发送消息给用户的最终结果,会推送下发结果事件至开发者所配置的服务器地址。{"ToUserName": "gh_123456789abc","FromUserName": "o7esq5PHRGBQYmeNyfG064wEFVpQ","CreateTime": "1620963428","MsgType": "event","Event": "subscribe_msg_sent_event","SubscribeMsgSentEvent": {"List": {"TemplateId": "BEwX0BO-T3MqK3Uc5oTU3CGBqzjpndk2jzUf7VfExd8","MsgID": "1864323726461255680","ErrorCode": "0","ErrorStatus": "success"}}}ToUserName小程序帐号IDFromUserName用户openidCreateTime时间戳TemplateId模板id(一次订阅可能有多个id)MsgID消息id(调用接口时也会返回)ErrorCode推送结果状态码(0表示成功)ErrorStatus推送结果状态码对应的含义2、统一服务消息为便于开发者对用户进行服务消息触达,简化小程序和公众号模板消息下发流程,小程序提供统一的服务消息下发接口服务端调用:POST https://api./cgi-bin/message/wxopen/template/uniform_send?access_token=ACCESS_TOKEN请求体参数access_token|cloudbase_access_token接口调用凭证touser用户openid,可以是小程序的openid,也可以是mp_template_msg.appid对应的公众号的openidweapp_template_msg小程序模板消息相关的信息,可以参考小程序模板消息接口; 有此节点则优先发送小程序模板消息(小程序模板消息已下线,不用传此节点)template_id小程序模板IDpage小程序页面路径form_id小程序模板消息formiddata小程序模板数据emphasis_keyword小程序模板放大关键词mp_template_msg公众号模板消息相关的信息,可以参考公众号模板消息接口;有此节点并且没有weapp_template_msg节点时,发送公众号模板消息appid公众号appid,要求与小程序有绑定且同主体template_id公众号模板idurl公众号模板消息所要跳转的urlminiprogram公众号模板消息所要跳转的小程序,小程序的必须与公众号具有绑定关系data公众号模板消息的数据接口调用凭证ACCESS_TOKEN通过如下接口获取GET https://api./cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET示例:{"touser":"OPENID","weapp_template_msg":{模板消息可能已经不再需要,未验证"template_id":"TEMPLATE_ID","page":"page/page/index","form_id":"FORMID","data":{"keyword1":{"value":"339208499"},"keyword2":{"value":"01月05日 12:30"},"keyword3":{"value":"腾讯微信总部"},"keyword4":{"value":"广州市海珠区新港中路397号"}},"emphasis_keyword":"keyword1.DATA"},"mp_template_msg":{"appid":"APPID ","template_id":"TEMPLATE_ID","url":"/download","miniprogram":{"appid":"xiaochengxuappid12345","pagepath":"index?foo=bar"},"data":{"first":{"value":"恭喜你购买成功!","color":"#173177"},"keyword1":{"value":"巧克力","color":"#173177"},"keyword2":{"value":"39.8元","color":"#173177"},"keyword3":{"value":"9月22日","color":"#173177"},"remark":{"value":"欢迎再次购买!","color":"#173177"}}}}云函数方式const cloud = require('wx-server-sdk')cloud.init({env: cloud.DYNAMIC_CURRENT_ENV,})exports.main = async (event, context) => {try {const result = await cloud.openapi.uniformMessage.send({"touser": 'OPENID',"weappTemplateMsg": {"page": 'page/page/index',"data": {"keyword1": {"value": '339208499'},"keyword2": {"value": '01月05日 12:30'},"keyword3": {"value": '腾讯微信总部'},"keyword4": {"value": '广州市海珠区新港中路397号'}},"templateId": 'TEMPLATE_ID',"formId": 'FORMID',"emphasisKeyword": 'keyword1.DATA'},"mpTemplateMsg": {"appid": 'APPID ',"url": '/download',"miniprogram": {"appid": 'xiaochengxuappid12345',"pagepath": 'index?foo=bar'},"data": {"first": {"value": '恭喜你购买成功!',"color": '#173177'},"keyword1": {"value": '巧克力',"color": '#173177'},"keyword2": {"value": '39.8元',"color": '#173177'},"keyword3": {"value": '9月22日',"color": '#173177'},"remark": {"value": '欢迎再次购买!',"color": '#173177'}},"templateId": 'TEMPLATE_ID'}})return result} catch (err) {return err}}3、客服消息(1)使用客服消息<button open-type="contact" bindcontact="handleContact"></button>open-type="contact"session-from会话来源,open-type="contact"时有效send-message-title当前标题会话内消息卡片标题,open-type="contact"时有效send-message-path当前分享路径会话内消息卡片点击跳转小程序路径,open-type="contact"时有效send-message-img截图会话内消息卡片图片,open-type="contact"时有效show-message-card是显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示,用户点击后可以快速发送小程序消息,open-type="contact"时有效bindcontact客服消息回调,open-type="contact"时有效path小程序消息指定的路径query小程序消息指定的查询参数(2)后台接入消息服务用户向小程序客服发送消息、或者进入会话等情况时,开发者填写的服务器配置URL(如果使用的是云开发,则是配置的云函数)将得到微信服务器推送过来的消息和事件,开发者可以依据自身业务逻辑进行响应。接入和使用方式请参考消息推送。详见消息推送:https://developers./miniprogram/dev/framework/server-ability/message-push.html(3)接受到的消息格式1.用户在客服会话中发送文本消息时将产生如下数据包:{"ToUserName": "toUser","FromUserName": "fromUser","CreateTime": 1482048670,"MsgType": "text","Content": "this is a test","MsgId": 1234567890123456}ToUserName小程序的原始IDFromUserName发送者的openidCreateTime消息创建时间(整型)MsgTypetextContent文本消息内容MsgId消息id,64位整型2.用户在客服会话中发送图片消息时将产生如下数据包{"ToUserName": "toUser","FromUserName": "fromUser","CreateTime": 1482048670,"MsgType": "image","PicUrl": "this is a url","MediaId": "media_id","MsgId": 1234567890123456}ToUserName小程序的原始IDFromUserName发送者的openidCreateTime消息创建时间(整型)MsgTypeimagePicUrl图片链接(由系统生成)MediaId图片消息媒体id,可以调用[获取临时素材]((getTempMedia)接口拉取数据。https://developers./miniprogram/dev/api-backend/open-api/customer-message/customerServiceMessage.getTempMedia.htmlMsgId消息id,64位整型3.小程序卡片消息:{"ToUserName": "toUser","FromUserName": "fromUser","CreateTime": 1482048670,"MsgType": "miniprogrampage","MsgId": 1234567890123456,"Title":"title","AppId":"appid","PagePath":"path","ThumbUrl":"","ThumbMediaId":""}ToUserName小程序的原始IDFromUserName发送者的openidCreateTime消息创建时间(整型)MsgTypeminiprogrampageMsgId消息id,64位整型Title标题AppId小程序appidPagePath小程序页面路径ThumbUrl封面图片的临时cdn链接ThumbMediaId封面图片的临时素材id4.进入会话事件{"ToUserName": "toUser","FromUserName": "fromUser","CreateTime": 1482048670,"MsgType": "event","Event": "user_enter_tempsession","SessionFrom": "sessionFrom"}ToUserName小程序的原始IDFromUserName发送者的openidCreateTime事件创建时间(整型)MsgTypeeventEvent事件类型,user_enter_tempsessionSessionFrom开发者在客服会话按钮设置的 session-from 属性(4)回复客服消息用户给客服发了一次,客服回复的不能超过五次,第六次就报错后端调用POST https://api./cgi-bin/message/custom/send?access_token=ACCESS_TOKEN请求体参数access_token|cloudbase_access_token接口调用凭证touser用户的OpenIDmsgtype消息类型text文本消息image图片消息link图文链接miniprogrampage小程序卡片text文本消息,msgtype="text"时必填content:'文本内容' 文本内容可以是超链接跳回小程序,如:...<a href="" data-miniprogram-appid="appid" data-miniprogram-path="pages/index/index">点击跳小程序</a>image图片消息,msgtype="image"时必填media_id发送的图片的媒体ID,通过新增素材接口上传图片文件获得。https://developers./miniprogram/dev/api-backend/open-api/customer-message/customerServiceMessage.uploadTempMedia.htmllink图文链接,msgtype="link"时必填title消息标题description图文链接消息url图文链接消息被点击后跳转的链接thumb_url图文链接消息的图片链接,支持JPG、PNG格式,较好的效果为大图640X320,小图80X80miniprogrampage小程序卡片,msgtype="miniprogrampage"时必填title消息标题pagepath小程序的页面路径,跟app.json对齐,支持参数,比如pages/index/index?foo=barthumb_media_id小程序消息卡片的封面,image类型的media_id,通过新增素材接口上传图片文件获得,建议大小为520*416https://developers./miniprogram/dev/api-backend/open-api/customer-message/customerServiceMessage.uploadTempMedia.html接口调用凭证ACCESS_TOKEN通过如下接口获取GET https://api./cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET云函数调用方式参数和上面的方式一致,除了不用传递access_tokenconst cloud = require('wx-server-sdk')cloud.init({env: cloud.DYNAMIC_CURRENT_ENV,})exports.main = async (event, context) => {try {const result = await cloud.openapi.customerServiceMessage.send({"touser": 'OPENID',"msgtype": 'text',"text": {"content": 'Hello World'文本内容可以是超链接跳回小程序,如:...<a href="" data-miniprogram-appid="appid" data-miniprogram-path="pages/index/index">点击跳小程序</a>}})return result} catch (err) {return err}}(5)转发客服消息如果小程序设置了消息推送,普通微信用户向小程序客服发消息时,微信服务器会先将消息 POST 到开发者填写的 URL 上如果希望将消息转发到网页版客服工具,则需要开发者在响应包中返回 MsgType 为 transfer_customer_service 的消息,微信服务器收到响应后会把当次发送的消息转发至客服系统。用户被客服接入以后,客服关闭会话以前,处于会话过程中时,用户发送的消息均会被直接转发至客服系统。当会话超过 30 分钟客服没有关闭时,微信服务器会自动停止转发至客服,而将消息恢复发送至开发者填写的 URL 上。用户在等待队列中时,用户发送的消息仍然会被推送至开发者填写的 URL 上。这里特别要注意,只针对微信用户发来的消息才进行转发,而对于其他事件(比如用户从小程序唤起客服会话)都不应该转发,否则客服在客服系统上就会看到一些无意义的消息了。消息转发到网页版客服工具开发者只要在响应包中返回 MsgType 为 transfer_customer_service 的消息,微信服务器收到响应后就会把当次发送的消息转发至客服系统。需返回如下格式的 XML 数据<xml><ToUserName><![CDATA[touser]]></ToUserName><FromUserName><![CDATA[fromuser]]></FromUserName><CreateTime>1399197672</CreateTime><MsgType><![CDATA[transfer_customer_service]]></MsgType></xml>ToUserName接收方帐号(收到的OpenID)FromUserName开发者微信号CreateTime消息创建时间 (整型)MsgTypetransfer_customer_service如果是使用云函数接收的消息推送,则需在云函数被客服消息触发后返回同样格式的JSON数据:// ...exports.main = async (event, context) => {// 判断处理客服消息 ...// 最后返回 JSONreturn {MsgType: 'transfer_customer_service',ToUserName: 'touser',FromUserName: 'fromuser',CreateTime: parseInt(+new Date / 1000),}}(6)显示客服输入态此接口需要客服消息接口权限。如果不满足发送客服消息的触发条件,则无法下发输入状态。下发输入状态,需要客服之前 30 秒内跟用户有过消息交互。在输入状态中(持续 15 秒),不可重复下发输入态。在输入状态中,如果向用户下发消息,会同时取消输入状态。POST https://api./cgi-bin/message/custom/typing?access_token=ACCESS_TOKEN请求体参数access_token|cloudbase_access_token接口调用凭证touser用户的OpenIDcommand命令Typing对用户下发"正在输入"状态CancelTyping取消对用户的"正在输入"状态接口调用凭证ACCESS_TOKEN通过如下接口获取GET https://api./cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET云函数调用方式const cloud = require('wx-server-sdk')cloud.init({env: cloud.DYNAMIC_CURRENT_ENV,})exports.main = async (event, context) => {try {const result = await cloud.openapi.customerServiceMessage.setTyping({"touser": 'OPENID',"command": 'Typing'})return result} catch (err) {return err}}4、消息推送https://developers./miniprogram/dev/framework/server-ability/message-push.html

如果觉得《小程序 消息订阅 统一服务消息 客服消息 消息推送》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。