Verwendung von NodeJS für die WeChat-Entwicklung
Bei den hochgeladenen Materialien handelt es sich um temporäre Materialien
Der Antwortmechanismus auf das Video ist wie folgt:
if(content === '视频'){ var data = yield wechatApi.uploadMaterial('video',__dirname+'\public\video\3.mp4') console.log('data') console.log(data) reply = { type:'video', title:'回复的视频', description:'视频描述', mediaId:data.media_id } }
Nach der Eingabe von „Video“ im mobilen WeChat-Client
ist die Hintergrundanzeige wie folgt:
Wenn ein Code wie dieser erscheint, sollte das bedeuten, dass der Upload erfolgreich war, oder? Auf dem Mobiltelefon wird jedoch die Meldung angezeigt, dass das offizielle Konto vorübergehend nicht verfügbar ist. Bitte versuchen Sie es später erneut. Warum das?
ps: Ich habe beim Hochladen auch festgestellt, dass es dreimal hochgeladen wurde? Ich habe nur ein „Video“ gepostet. Wie kommt es, dass es dreimal hochgeladen wurde?
Der hochgeladene Code lautet wie folgt:
Wechat.prototype.uploadMaterial = function(type,filepath){ var that = this; var form = { media: fs.createReadStream(filepath) } return new Promise(function(resolve,reject){ that .fetchAccessToken() .then(function(data){ console.log(data); var url = api.upload +'access_token='+data.access_token + '&type='+type; request({method:'POST',url:url,formData:form,json:true}).then(function(response){ var _data = response.body; //console.log(data); if(_data){ resolve(_data) } else{ throw new Error('upload Material fail') } }) .catch(function(err){ reject(err) }) }) }) }
Die Upload-Schnittstelle sieht so aus:
var wechatApi = new Wechat(config.wechat)
Dies ist die Instanziierung der oben genannten Daten. Die für die spezifische Instanziierung erforderlichen Daten werden aus der Konfiguration abgerufen.
Verwenden Sie beim Hochladen die Methode wechatApi.uploadMaterial(), um dies zu erreichen.
1.为什么微信为什么返回公众号暂时无法提供服务
微信的机制是 用户发送给公众号信息后,服务器5秒内没有返回则提示该公众号暂时无法提供服务
5秒的机制是可以用别的方式解决的, 先返回给微信空内容为了不提示, 等程序处理完再给微信返回一个正确的
响应内容
2.上传三次的问题需要你贴上传接口的代码和上传处理的代码,然后我们在说怎么解决
这个问题在我开发的时候也遇到了,当用户发送“视频”两个字后,后台确实是在上传视频素材(上传的代码写得没有问题),但是视频上传的时间由于网络或者微信后台本身的原因有时会超过5秒(大一点的视频在测试账号都超5秒),这时服务器就直接返回提示信息:该公众号暂时无法提供服务。需要过一会儿,程序才打印出你截图的data和xml的信息。
所以
自动回复的时候上传视频素材
这种做法是不合适的,视频应该事先先上传好,用户发送"视频",直接获取事先上传好的视频信息,并回复用户