微信公众号 回复文本信息长度限制
content的长度限制是2048字节(2kbyte)
content的长度限制是2048字节(2kbyte)
这个词条被刷上热搜好几波,我观察到了身边的一些有趣现象,不同角色的人他们站队和态度截然不同。
你问我怎么看?
现在凌晨2:38我刚把今天(误,昨天)的工作做完,你问我怎么看???
接续处理前几天的需求,这两天原本是在思考公众号的响应交互有没有办法在被动回给用户一条多图文消息后,根据用户的点击动作继续给用户响应文本或图文消息。
不查不要紧,一查发现™D水真深,又是一个大坑。
首先我在官方的文档原文看到了一句之前未曾见到的补充说明
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140543
在 回复图文消息 的参数说明内
ArticleCount 是(是否必须) 图文消息个数;当用户发送文本、图片、视频、图文、地理位置这五种消息时,开发者
只能回复1条图文消息
;其余场景最多可回复8条图文消息
Articles 是(是否必须) 图文消息信息,注意,如果图文数超过限制,则将只发限制内的条数
似乎是2018年底开始的改动,而且是偷偷改的,并未在微信开发者更新上进行公告。
?!! 那就是说, 只有事件型的响应例如关注、扫码 才可以触发最多8个items的图文消息,消息型的响应被阉割成1条了
然后我又查到了微信公众号开发者论坛的这条
https://developers.weixin.qq.com/community/develop/doc/0006c2dd60c6188526e7194ec56800?page=1#comment-list
里面也是一片惨叫。1250张八骏图从心里滚过..
立刻自己测试一下..
//该测试显示多图文
unset($its);
$its[0]["Title"]="测试显示多图文信息的复数查询结果";
$its[0]["PicUrl"]="http://wx.praysatoshi.top/wxservice/ruoyu_test/test_location_sm.png";
$its[1]["Title"]="lat:".$lat;
$its[2]["Title"]="lon:".$lon;
$its[3]["Title"]="以上是刚才上报的位置信息";
$its[4]["Title"]="多图文推送测试结束.";
die($this->xmlNews($fromUsername,$toUsername,$its)); //应推送出1+4 的5项图文信息块
...
/**
* wechatCallbackapiTest::xmlNews()
* 生成图文信息
* @param mixed $fromUsername
* @param mixed $toUsername
* @param Array $items
* @return String $xml
* items的元素(keys)有
* Title
* Description
* PicUrl 首图360*200,小图200*200
* Url
*/
private function xmlNews($fromUsername,$toUsername,$items){
$time = time();
$xmlTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>%s</ArticleCount>
<Articles>
%s
</Articles>
</xml>";
$itemCount = count($items);
//组织items串
$stritem = "";
foreach($items as $item){
$stritem .="<item>";
if($item["Title"]) $stritem .= "
<Title><![CDATA[{$item["Title"]}]]></Title>";
if($item["Description"]) $stritem .= "
<Description><![CDATA[{$item["Description"]}]]></Description>";
if($item["PicUrl"]) $stritem .= "
<PicUrl><![CDATA[{$item["PicUrl"]}]]></PicUrl>";
if($item["Url"]) $stritem .= "
<Url><![CDATA[{$item["Url"]}]]></Url>";
else $stritem .= "
<Url><![CDATA[]]></Url>";
$stritem .="</item>";
}
$resultStr = sprintf($xmlTpl, $fromUsername, $toUsername, $time, $itemCount, $stritem);
return $resultStr;
}
触发交互——SHIT! 实锤了!!
安逸了..不用想微信内的交互了,明天向甲方解释一下..死了心做jssdk上的H5交互..
微信固然有自己的考虑,但从来当开发者和公众号用户的呼声是屎一样..着实被恶心了一次又一次,大家都想逃离然而又显得那么无可奈何。
当有实力抗衡这匹独角兽的挑战者出现的时候大家的义无反顾也会变得理所当然吧。
一次意外断电,造成lnmp没有正常自启动(wwwroot用sd卡mount的),开始以为是启动脚本没写好,忘了mount sd 卡。
手动mount完之后 lnmp提示restart成功。 但在浏览器端始终无法打开文件,加载到超时。再后来发现在ssh上看sd卡上的文件系统也是提示大量的错误类似于
flamen@z8350:/mnt/sdcard$ ls -l
ls: 无法访问'wwwroot': 输入/输出错误
ls: 无法访问'bakwallet': 输入/输出错误
ls: 无法访问'script': 输入/输出错误
总用量 32
...
试过重启,插拔 sd卡,均无效。
查了下,用以下命令修复成功
fsck -y /dev/mmcblk1p1
(sd卡的分区的名称是 /dev/mmcblk1p1)
fsck -y /dev/mmcblk1p1
fsck,来自 util-linux 2.27.1
e2fsck 1.42.13 (17-May-2015)
/dev/mmcblk1p1: 正在修复日志
/dev/mmcblk1p1: clean, 12652/1954064 files, 1103525/7814912 blocks
root@z8350:/dev# reboot
执行完之后重启,一切恢复正常