Telegram 发送消息 url 转义问题

2018-06-09 17:59:31 +08:00
 v6dp

情况是这样的: 使用 curl -X POST,然后 Telegram Bot 给 Channel 发消息

curl -X POST "https://api.telegram.org/bot<API Token>/sendMessage" -d "chat_id=<Chat ID>&disable_notification=true&text=https://www.netxautomation.com:8443/display/BMS20/HTTP2%3A+Using+the+HTTP+module+to+send+Telegram+messages"

但是 Channel 那边收到的是

https://www.netxautomation.com:8443/display/BMS20/HTTP2: Using the HTTP module to send Telegram messages

而不是

https://www.netxautomation.com:8443/display/BMS20/HTTP2%3A+Using+the+HTTP+module+to+send+Telegram+messages

相当于它把 %3A 替换成了 :,把 + 替换成了 (空格)
这就导致了你在 Channel 中无法直接点链接,因为它已经不是一个完整的可点击的链接了。
搜 Goole 搜了好长时间,没有找到解决方法,不知道大家有没有类似问题的解决经验,求教。

4977 次点击
所在节点    Telegram
5 条回复
Daniel65536
2018-06-09 19:20:09 +08:00
所以,你不会把%也转义了么……
v6dp
2018-06-09 19:27:33 +08:00
@Daniel65536 抱歉,没有理解你的意思。能不能说得详细点。Telegram bot sendMessage 发送的 text 是连续的完整的可点击的链接,在 curl -X POST 后被自动替换了,你的意思是?求教。
Daniel65536
2018-06-09 19:32:04 +08:00
% = %25
%26 = %25%26
Daniel65536
2018-06-09 19:34:44 +08:00
啊,是%2526 来着
v6dp
2018-06-09 19:42:57 +08:00
@Daniel65536 感谢,接下来就是写个脚本进行自动替换了,比如链接中有空格或者加号,将其替换成 `%2520` ,有 `%` 将其替换成 `%25`。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/461777

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX