xml内容获取到了,提示我“该公众号暂时无法提供服务,请稍后再试”

来源:4-3 第四天 自动回复各种消息

PaulDing

2016-08-15

http://szimg.mukewang.com/57b1905e00011a3a09380200.jpg

老师,我已经可以 获取到xml内容了,但是,为什么我微信里面没有  回复这个内容呢? 而是提示“该公众号暂时无法提供服务, 请稍后再试”?

http://szimg.mukewang.com/57b1a7da00017e1b15221080.jpg

写回答

7回答

AssassinX

2016-08-27

wechat\util.js

exports.tpl = function(content, message) {
	var info = {}
	var type = 'text'
	var fromUserName = message.ToUserName    //注意这里,ToUserName和
	var toUserName = message.FromUserName    //FromUserName对调一下

	if (Array.isArray(content)) {
		type = 'news'
	}

	if (!content) {
		content = 'Empty news.'
	}
	type = content.type || type
	info.content = content
	info.createTime = new Date().getTime()
	info.msgType = type
	info.fromUserName = fromUserName
	info.toUserName = toUserName

	return tpl.compiled(info)
}

我之前也是跟你的情况一样,后来发现是给微信客户端发送消息的XML内容格式不对,FromUserName和ToUserName弄反了。

服务器接收到的消息中FromUserName是用户的OpenID,ToUserName是开发者微信号。

而发送给微信的FromUserName自然是开发者微信号,ToUserName是用户的OpenID。

1
2
PaulDing
非常感谢!
2016-08-30
共2条回复

小七努力变大牛

2016-08-31

啊  我看了一下你的tpl的代码... 感觉你的错误和我的错误 可能有点不一样... 你用console.log 输出一下  回复的xml信息看看... 我后来发现我的问题是处在  toUser和fromUser 前后 多了一对引号  所以才服务器才报错的... 

0
0

慕神9599839

2016-08-26

我也收不到订阅的body message,但是也不会弹"该公众号暂时无法提供服务, 请稍后再试"

0
0

PaulDing

提问者

2016-08-23

'use strict'

var ejs = require('ejs');
var heredoc = require('heredoc');
var tpl = heredoc(function() {
  /*
  <xml>
    <ToUserName><![CDATA[ <%= toUserName %> ]]></ToUserName>
    <FromUserName><![CDATA[ <%= fromUserName %> ]]></FromUserName>
    <CreateTime>  <%= createTime %>  </CreateTime>
    <MsgType><![CDATA[<%= msgType %>]]></MsgType>
    <%if(msgType === 'text') {
    %>
    <Content><![CDATA[<%= content %>]]></Content>
    <%
    } else if(msgType === 'image') {
    %>
    <Image>
    <MediaId><![CDATA[<%= content.media_id %>]]></MediaId>
    </Image>
    <%
    } else if(msgType === 'voice') {
    %>
    <Voice>
    <MediaId><![CDATA[<%= content.media_id %>]]></MediaId>
    </Voice>
    <%
    } else if(msgType === 'video') {
    %>
    <Video>
    <MediaId><![CDATA[<%= content.media_id %>]]></MediaId>
    <Title><![CDATA[<%= content.title %>]]></Title>
    <Description><![CDATA[<%= content.description %>]]></Description>
    </Video>
    <%
    } else if(msgType == 'music') {
    %>
    <Music>
    <Title><![CDATA[<%= content.title %>]]></Title>
    <Description><![CDATA[<%= content.description %>]]></Description>
    <MusicUrl><![CDATA[<%= content.musicUrl %>]]></MusicUrl>
    <HQMusicUrl><![CDATA[<%= content.hqMusicUrl %>]]></HQMusicUrl>
    <ThumbMediaId><![CDATA[<%= content.thumbMediaId %>]]></ThumbMediaId>
    </Music>
    <%
    } else if(MsgType === 'news') {
    %>
    <ArticleCount><%= content.length %></ArticleCount>
    <Articles>
      <% content.forEach(function(item) {
      %>
      <item>
      <Title><![CDATA[<%= item.title %>]]></Title>
      <Description><![CDATA[<%= item.description %>]]></Description>
      <PicUrl><![CDATA[<%= item.picurl %>]]></PicUrl>
      <Url><![CDATA[<%= item.url %>]]></Url>
      </item>
      <%
      })%>
    </Articles>
    <%
    }
    %>
  </xml>
  */
})

var compiled = ejs.compile(tpl);
exports = module.exports = {
  compiled: compiled
}


0
1
PaulDing
这是tpl 的模板代码
2016-08-23
共1条回复

小七努力变大牛

2016-08-21

我也是诶... 请问你解决了嘛...?

0
0

Hugo_s

2016-08-16

只能说明写的有问题,仔细看视频,运行的时候看有没有报错

0
0

Hugo_s

2016-08-16

http的response的太慢了,微信会不认,会有这种情况发生,文档上有写

0
4
PaulDing
回复
小七努力变大牛
请问下,你的问题跟我的一样吗?
2016-08-23
共4条回复

7天搞定Node.js微信公众号

Koa框架、ES2015新特性、MongoDB,开发微信公众号

1742 学习 · 787 问题

查看课程