【发布时间】:2017-09-25 18:12:22
【问题描述】:
我正在用 ColdFusion (CFML) 开发一个应用程序,以创建在 Telegram 消息传递平台上运行的通用、有状态的机器人。到目前为止,我在 PHP 中找到了很多示例,在其他语言中找到了一些示例(Ruby,...),在 CFML 中没有。所以,我来了。
“getUpdates”(即轮询)方式运行起来轻而易举,但以适合交互式使用的速度(大约 30 秒)轮询 Telegram 服务器以获取新更新是不可行的。所以,我转向了 Webhooks。
我将检查自签名证书的 webhook 设置,这超出了这里的范围,但我已经准备好解释我是如何克服这个问题的。 我的问题是:如何在发生更新时解码从 Telegram 服务器收到的帖子?
我的应用服务器(ColdFusion + Tomcat + Apache2)从 Telegram 获得的是一个带有如下标头的 HTTP:
struct
accept-encoding: gzip, deflate
connection: keep-alive
content-length: 344
content-type: application/json
host: demo.bigopen.eu
和这样的内容部分:
binary
1233411711210097116101951..... (*cut*)
请注意,数据部分 (ASCII) 仅包含十进制数字,而不是十六进制。我一直在努力如何解码这些东西,我正在努力获得一条消息的 JSON 表示。
我一直在尝试使用我拥有的 CFML 工具,例如BinaryDecode()、CharsetEncode()、Java GZip 库等,但目前没有成功。我期待回复中有一些序列化的 JSON,但它的编码方式我无法解码。我在文献中没有发现任何提示,因为只显示了对特定语言库的调用(例如 PHP 的 file_get_contents)。
我不希望得到实际的 CFML 代码,但希望 Telegram 端执行什么样的编码。
【问题讨论】:
标签: coldfusion bots telegram cfml