【发布时间】:2020-07-16 11:20:00
【问题描述】:
将 sendInvoice 发送给用户(用户正确获取此付款表格)后,我的机器人没有收到 preCheckoutQuery 以确认付款。 我试图通过 webhook 从 Telegram Bot 接收更新(特别是 preCheckoutQuery),但在这里:
dev.botframework.com -> 我的机器人 -> 电报 -> 健康专栏 -> 问题 -> “向您的机器人发送此消息时出错:HTTP 状态代码 BadRequest”。
另外,当我尝试在 dev.botframework.com 上为我自己的机器人设置 webhook 并检查 getWebhookInfo 时,我会得到这样的特定网址:
{"ok":true,"result":{"url":"https://telegram.botframework.com/api/telegram/XXX/XXX","has_custom_certificate":false,"pending_update_count":0,"max_connections":40}}
使用这个 webhook,我的机器人可以正确地与用户进行消息传递
一些信息如何正确接收 preCheckoutQuery?
附加信息:
/getWebhookInfo 有时会返回我 pending_update_count":1
库:Telegram.Bot (https://github.com/TelegramBots/telegram.bot)
我的机器人支持 TLS 1.2:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
我的控制器什么也没收到
[Route("api/[controller]")]
public class UpdateController : Controller
{
private readonly IBotFrameworkHttpAdapter Adapter;
private readonly IBot Bot;
public UpdateController(IBotFrameworkHttpAdapter adapter, IBot bot)
{
Adapter = adapter;
Bot = bot;
}
[HttpPost]
public async Task<IActionResult> Post([FromBody]Update _update)
{
...
await Consts.BotClient.SendTextMessageAsync(chatId, string.Format("Update received\nP: {0} M: {1} H: {2}", a.Path, a.Method, a.Host.Value));
...
}
}
【问题讨论】:
-
您是否尝试通过 Azure Bot Service Telegram 通道连接器?连接器不太可能支持
preCheckoutQuery。见这里:github.com/microsoft/botframework-sdk/issues/5828
标签: c# asp.net-core botframework payment telegram-webhook