状况描述
最近要触发一个动作后给钉钉发送一个消息,然而每次都提示系统繁忙,本地DEBUG又每次都正常,这就尴尬了,更尴尬的是消息居然发生成功了。
网友的状况
网上一搜索此类的状态一大堆,最终的结论无非就是几类,1:参数错误, 2:ContentType错误,3:你太垃圾。
网络调试
已经在自己服务器上用mitmproy进行调试了,果然每次都出错,检查参数本地调试一切OK,没错啊。每次都让我怀疑人生,几行代码来来回回折腾几个小时。
最终发现问题
手贱点了一下reply,结果是没问题的,于是我就开始怀疑是不是阿里的服务太傻逼。
请求消息体如下:
{
"at": {
"atMobiles": [],
"isAtAll": false
},
"markdown": {
"text": "**已关闭**\n![](https://image.example.com/61e0754.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220108T005645Z&X-Amz-Expires=21600&X-Amz-Credential=X22HMKDFEPX1RZ1R8ZYC%2F20220108%2F%2Fs3%2Faws4_request&x-amz-content-sha256=UNSIGNED-PAYLOAD&X-Amz-SignedHeaders=host&X-Amz-Signature=f43d8c452290540b7445b9fffbc9603b14f522b1ffa2d2db27cfe53738f31ce6)\n时间: 2022-01-08 08:56:32.7465",
"title": "已关闭"
},
"msgtype": "markdown"
}
"at": {
"atMobiles": [],
"isAtAll": false
},
"markdown": {
"text": "**已关闭**\n![](https://image.example.com/61e0754.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220108T005645Z&X-Amz-Expires=21600&X-Amz-Credential=X22HMKDFEPX1RZ1R8ZYC%2F20220108%2F%2Fs3%2Faws4_request&x-amz-content-sha256=UNSIGNED-PAYLOAD&X-Amz-SignedHeaders=host&X-Amz-Signature=f43d8c452290540b7445b9fffbc9603b14f522b1ffa2d2db27cfe53738f31ce6)\n时间: 2022-01-08 08:56:32.7465",
"title": "已关闭"
},
"msgtype": "markdown"
}
这里发送了一张图片过去,图片是阿里直接在服务器下载的。每次消息发送成功说明服务器是有下载的,但是呢图片是没有缓存的,第一次下载耗时比较久,阿里等不了这么久就直接报错了,而且还是这种迷迷糊糊的报错。第二次成功的原因就是它有缓存了啊,肯定就快了啊,然后就正常了,此处一万只马路过。
解决方案
图片换个地方存储就行了,面对几个选择,1:阿里云oss(太贵),2:其他oss(太贵)。第三方存储都太贵了,只能随便找个服务器存着,然后过几分钟删除完事。
最终
还没写逻辑,太恶心了,你直接支持上传图片会死啊,迟早倒闭。
从高中到现在 你写的东西我是越来越看不懂了 越来越深奥了