源代码的开发(以新浪SAE为例),消息接受与回复
原创1.接收消息
URL 接口验证以后,公众平台账号收到的消息将由微信服务器使用 HTTP POST 推送至该 URL。消息内容为 XML 格式,消息类型有文本、图片、语音、视频等。各消息类型的推送 XML 数据包结构如下。
文本消息模板
<xml>
< ToUserName ><![CDATA[toUser]]></ ToUserName >
< FromUserName ><![CDATA[fromUser]]></ FromUserName >
< CreateTime >1348831860</ CreateTime >
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[ this is a test ]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>
其中, ToUserName 和 FromUserName 分别为公众账号和用户账号的表识串;MsgType 标识消息类型;“text”表明消息是文本消息;文本内容放置在 Content 字段;消息接口中定义的消息创建时间 CreateTime ,它表示 1970 年 1 月 1 日 0 时 0 分 0 秒至消息创建时所间隔的秒数,注意是间隔的秒数,不是毫秒数。
图片信息模板
<xml>
< ToUserName ><![CDATA[toUser]]></ ToUserName >
< FromUserName ><![CDATA[fromUser]]></ FromUserName >
< CreateTime >1348831860</ CreateTime >
<MsgType><![CDATA[image]]></MsgType>
<PicUrl><![CDATA[ this is a url ]]></PicUrl>
<MediaId><![CDATA[media_id]]></MediaId>
<MsgId>1234567890123456</MsgId>
</xml>
其中与文本信息编码中相同的字符所表示的意义也相同,可参考上面的解释。其他参数的意思是:PicUrl 为图片链接;MediaId 是图片消息媒体 id,可以调用多媒体文件下载接口拉取数据。
其他类型的推送 XML 数据包不多做阐释,可在微信公众平台的开发文档中查看。
接口调试工具
微信公众平台提供了网页版接口调试工具,为开发者检测调用“微信公众平台开发者 API”时发送的请求参数是否正确,提交相关信息后可获得服务器的验证结果。
在微信公众平台的开发文档中单击“使用网页调试工具调试该接口”的链接,如图 9-15 所示,会出现接口调试页面。先选择接口调试类型和接口列表,系统会生成该接口的参数表,所选择的接口列表不同,生成的参数表也不同,开发者可以直接在文本框内填入对应的参数值。
图 9-15 接口调试工具
在填写信息的过程中,填写的信息符合要求,就会在该项的下方出现“校验通过”的绿色字样,如果有出现填写错误的情况,则会出现“不合法数字”或其他红色字样,需要将那一项改正。填写完毕之后,单击“检查问题”按钮,即可得到相应的调试信息。
2.回复消息
当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个 POST 请求,开发者可以在响应包(Get)中返回特定 XML 结构来对该消息进行响应(现支持回复文本、图片、图文、语音、视频、音乐)。严格来说,发送被动响应消息其实并不是一种接口,而是对微信服务器发来的消息的一次回复。各种回复类型的编码模板如以下所示。
文本回复信息编码模板
<xml>
< ToUserName ><![CDATA[toUser]]></ ToUserName >
< FromUserName ><![CDATA[fromUser]]></ FromUserName >
< CreateTime >12345678</ CreateTime >
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你好]]></Content>
</xml>
其中, ToUserName 为接收方账号, FromUserName 为开发者微信号, CreateTime 为消息创建时间(整型),MsgType 为回复类型,如文本回复就是 text,以上 4 项参数出现在后面的编码中,也为同样的意思。
图片回复消息编码模板
<xml>
< ToUserName ><![CDATA[toUser]]></ ToUserName >
< FromUserName ><![CDATA[fromUser]]></ FromUserName >
< CreateTime >12345678</ CreateTime >
<MsgType><![CDATA[image]]></MsgType>
<Image>
<MediaId><![CDATA[media_id]]></MediaId>
</Image>
</xml>
图片回复消息的 MsgType 为 Image,MediaId 为通过素材管理中的接口上传多媒体文件得到的 ID。
语音回复消息编码模板
<xml>
< ToUserName ><![CDATA[toUser]]></ ToUserName >
< FromUserName ><![CDATA[fromUser]]></ FromUserName >
< CreateTime >12345678</ CreateTime >
<MsgType><![CDATA[voice]]></MsgType>
<Voice>
<MediaId><![CDATA[media_id]]></MediaId>
</Voice>
</xml>
视频信息编码模板
<xml>
< ToUserName ><![CDATA[toUser]]></ ToUserName >
< FromUserName ><![CDATA[fromUser]]></ FromUserName >
< CreateTime >12345678</ CreateTime >
<MsgType><![CDATA[video]]></MsgType>
<Video>
<MediaId><![CDATA[media_id]]></MediaId>
<Title><![CDATA[title]]></Title>
< Description ><![CDATA[ description ]]></ Description >
</Video>
</xml>
编码中的 Title 为视频消息的标题, Description 为视频消息的描述,这两项都不是必须填写的项目。
音乐消息回复模板
<xml>
< ToUserName ><![CDATA[toUser]]></ ToUserName >
< FromUserName ><![CDATA[fromUser]]></ FromUserName >
< CreateTime >12345678</ CreateTime >
<MsgType><![CDATA[music]]></MsgType>
<Music>
<Title><![CDATA[TITLE]]></Title>
< Description ><![CDATA[ DESCRIPTION ]]></ Description >
<MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl>
< HQMusicUrl ><![CDATA[HQ_MUSIC_Url]]></ HQMusicUrl >
< ThumbMediaId ><![CDATA[media_id]]></ ThumbMediaId >
</Music>
</xml>
编码中的 MusicUrl 为音乐链接, HQMusicUrl 为高质量音乐链接,WiFi 环境优先使用该链接播放音乐,这两项并不是必须填写的; ThumbMediaId 为缩略图的媒体 ID,通过素材管理中的接口上传多媒体文件得到的 ID,必须填写。
图文消息回复编码模板
<xml>
< ToUserName ><![CDATA[toUser]]></ ToUserName >
< FromUserName ><![CDATA[fromUser]]></ FromUserName >
< CreateTime >12345678</ CreateTime >
<MsgType><![CDATA[news]]></MsgType>
< ArticleCount >2</ ArticleCount >
<Articles>
<item>
<Title><![CDATA[title1]]></Title>
< Description ><![CDATA[ description 1]]></ Description >
<PicUrl><![CDATA[picurl]]></PicUrl>
<Url><![CDATA[url]]></Url>
</item>
<item>
<Title><![CDATA[title]]></Title>
< Description ><![CDATA[ description ]]></ Description >
<PicUrl><![CDATA[picurl]]></PicUrl>
<Url><![CDATA[url]]></Url>
</item>
</Articles>
</xml>
ArticleCount 为图文消息个数,限制为 10 条以内;Articles 为多条图文消息信息,默认第一个 item 为大图,注意,如果图文数超过 10,则将会无响应;PicUrl 为图片链接,支持 JPG、PNG 格式,较好的效果为大图 360 像素 ×200 像素,小图 200 像素 ×200 像素;Url 为单击图文消息跳转链接。
消息回复的编码做好后,可上传至新建应用中使用。如果出现“该公众号暂时无法提供服务,请稍后再试”的情况,可能是开发者在 5 秒内未回复任何内容或开发者回复了异常数据,如 JSON 数据等,需要对编码进行检测,登录新浪 SAE,找到新建应用然后单击“编辑代码”即可。
另外,回复图片等多媒体消息时需要预先通过素材管理接口上传临时素材到微信服务器,可以使用素材管理中的临时素材,也可以使用永久素材。
版权保护: 本文由 李斯特 原创,转载请保留链接: https://www.wechatadd.com/artdet/8397
阅读推荐
更多...- 「公众号运营」粉丝互动:如何让粉丝愿意一直跟随,活动策划:免费赠送+干货+奖品 2023-05-29
- 认证公众号 2023-05-31
- 软文写作的六个方向,帮你写出一篇爆歀软文 2021-10-25
- 公众号运营的6大关键词,互联网思维 2023-05-30
- 微信公众号的内容运营 2023-05-31
- 利用微信公众号发布产品信息,信息分享案例:朋友圈分享也有这么大的作用 2023-05-31
- 微信公众号社区推广 2023-05-29
- 微信公众号原有功能加强说明 2023-05-27
- 微信公众号运营规范 2023-05-27
- 「公众号运营」让粉丝忍不住去点击的大标题,权威:清华校长履新前最后演讲:平庸与卓越的差别 2023-05-29
- 对微信公众号进行日常管理,朋友圈 2023-05-31
- 怎样注册微信公众号?申请公众号流程是什么 2021-05-17
- 融媒体时代期刊公众号运营问题谈 2023-05-31
- 公众号四大运营模式,经典绘本的卖货模式 2023-05-29
- 「公众号运营诀窍」预见趋势:在未发生之前,占据先机 2023-05-28
- 给公众号贴上热门标签 2023-05-31
- 「公众号运营秘笈」稀缺性:越难得到的东西,越想得到 2023-05-28
- 微信公众号营销之运营与维护技巧、方法 2022-07-26