你所在的位置:微信群>公众号运营>正文

源代码的开发(以新浪SAE为例),消息接受与回复

原创
发布时间: 2023-05-31 10:22:04 热度: 407 作者: 李斯特 来源: 微信加 本文共 5319 字 阅读需要 18 分钟
1.接收消息URL接口验证以后,公众平台账号收到的消息将由微信服务器使用HTTPPOST推送至该URL。消息内容为XML格式。

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