curl 使用电报Webhook的HTTP POST

ercv8c1e  于 2023-03-12  发布在  其他
关注(0)|答案(1)|浏览(206)

我使用curl命令运行了一个端点
curl -X POST https://example.com/control -d "channel=X&turn=XXX&id=XXXXXX&auth_key=XXXXX"
我想在Telegram Webhook和POST之间进行绑定,这样每次我的Telegram机器人获得消息时,它都会POST到该URL
我尝试注册Telegram webhook:
https://api.telegram.org/bot<telegram_token>/setWebhook?url=https://example.com/control?channel=X&turn=XXX&id=XXXXXX&auth_key=XXXXX
但是我发现POST只发送了
https://example.com/control?channel=X
是否有办法使用Telegram webhook附加更多数据?

wkyowqbh

wkyowqbh1#

问题似乎是curl将其他查询参数(turnidauth_key)理解为https://api.telegram.org的参数,而不是您在url参数中传递的url的参数。

curl -X POST https://httpbin.org/anything -d "url=https://example.com/control?channel=X&turn=XXX&id=XXXXXX&auth_key=XXXXX"

返回的对象包含:

"form": {
    "auth_key": "XXXXX",
    "id": "XXXXXX",
    "turn": "XXX",
    "url": "https://example.com/control?channel=X"
},

解决方案是使用--data-urlencode标志,而不是-d(即--data):

curl -X POST "https://httpbin.org/anything" --data-urlencode "url=https://example.com/control?channel=X&turn=XXX&id=XXXXXX&auth_key=XXXXX"

回复:

"form": {
    "url": "https://example.com/control?channel=X&turn=XXX&id=XXXXXX&auth_key=XXXXX"
},

电报请求:

curl -X POST https://api.telegram.org/bot<telegram_token>/setWebhook --data-urlencode "url=https://example.com/control?channel=X&turn=XXX&id=XXXXXX&auth_key=XXXXX"

相关问题