我在 Telegram 中发现了错误吗?
Did I discover a bug in Telegram?
我使用 Telegram 机器人将来自本地气象服务的天气警报整合到我的家庭自动化系统中。今天我发现一个奇怪的问题,因为包含天气警报的消息没有发送。如果我在 Linux 上的 bash 中尝试此操作:
output="Nationaal Hitteplan";curl "https://api.telegram.org/botxxxxxxxxx:longsecuritycode/sendMessage?chat_id=xxxxxxxxx&text=$output"
(我当然在上面的命令中删除了我的个人令牌......)
然后我收到 400 Bad Request 并且消息未发送。
如果我将 output="Nationaal Hitteplan" 更改为 output="Nationaal hitteplan",则消息将按预期发送。
我不明白这里有什么问题。 Nationaal Hitteplan 一词基本上是一组关于在炎热天气中应该做什么的建议。它没有与之相关的负面含义,但显然 Telegram 检测到问题。
除了如上所述更改术语外,有人对此有解决方案吗?
Url 包含像 space 这样的特殊字符应该是 url-encoded.
使用下面的curl命令让curl让编码:
token='xxxxxxxxx:longsecuritycode';
output="Nationaal Hitteplan";
curl -G \
--data-urlencode 'chat_id=1234567' \
--data-urlencode "text=${output}" \
"https://api.telegram.org/bot${token}/sendMessage"
How to urlencode data for curl command?
我使用 Telegram 机器人将来自本地气象服务的天气警报整合到我的家庭自动化系统中。今天我发现一个奇怪的问题,因为包含天气警报的消息没有发送。如果我在 Linux 上的 bash 中尝试此操作:
output="Nationaal Hitteplan";curl "https://api.telegram.org/botxxxxxxxxx:longsecuritycode/sendMessage?chat_id=xxxxxxxxx&text=$output"
(我当然在上面的命令中删除了我的个人令牌......)
然后我收到 400 Bad Request 并且消息未发送。
如果我将 output="Nationaal Hitteplan" 更改为 output="Nationaal hitteplan",则消息将按预期发送。
我不明白这里有什么问题。 Nationaal Hitteplan 一词基本上是一组关于在炎热天气中应该做什么的建议。它没有与之相关的负面含义,但显然 Telegram 检测到问题。
除了如上所述更改术语外,有人对此有解决方案吗?
Url 包含像 space 这样的特殊字符应该是 url-encoded.
使用下面的curl命令让curl让编码:
token='xxxxxxxxx:longsecuritycode';
output="Nationaal Hitteplan";
curl -G \
--data-urlencode 'chat_id=1234567' \
--data-urlencode "text=${output}" \
"https://api.telegram.org/bot${token}/sendMessage"
How to urlencode data for curl command?