当前位置: 首页 > 知识库问答 >
问题:

电报机器人无法接收预CheckoutQuery更新

蒋胡非
2023-03-14

在向用户发送sendInvoice后(用户正确获取此支付表单),我的bot无法接收用于付款确认的preCheckoutQuery。我试图通过webhook接收来自Telegram Bot的更新(特别是preCheckoutQuery),但这里:

dev.botframework.com-

另外,当我尝试在我自己的机器人 dev.botframework.com 上设置网络钩子并检查获取WebhookInfo时,我得到了像这样的特定网址:

{"ok":true,"result":{"url":"https://telegram.botframework.com/api/telegram/XXX/XXX","has_custom_certificate":false,"pending_update_count":0,"max_connections":40}}

有了这个网络钩子,我的机器人信息与用户正确

如何正确接收preCheckoutQuery?

附加信息:

/获取网络钩子信息有时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));
        ...
    }
}

共有2个答案

屠和洽
2023-03-14

为了获取“preCheckoutQuery”,我执行了以下操作:

  • 为机器人添加了api控制器“电报网络挂钩”
  • 把bot的网络钩子改成之前创建的api控制器
  • 处理preCheckoutQuery消息后,将收到的请求重定向到Azure web挂钩https://telegram.botframework.com/api/telegram/XXX/XXX

结果是像“网络挂钩代理”这样的东西

昌和悦
2023-03-14

从链接的 GitHub 问题:

我刚刚收到确认Azure机器人服务不支持Telegram支付系统。如果您想访问所有Telegram事件,您必须自行将您的机器人连接到Telegram。

这意味着如果您希望< code>preCheckoutQuery工作,您的bot不能使用ABSendpoint。

 类似资料:
  • 我开始开发电报机器人应用程序。我正在使用自定义键盘,同时向用户发送消息。我需要知道的是如何从键盘按钮单击中接收答复,以及如何响应用户的特定按钮单击。 > 我的方向是否正确? 与机器人聊天时请求响应流如何工作? 我如何才能收到键盘按钮点击的响应,并回复该按钮点击的用户。如果使用json,如果有人在C#中用一个例子来指导,这将是有帮助的? 是否有一种方法来触发一个回调url的键盘按钮点击,可以解决在服

  • 这不是重复的:| 我添加了一个用于管理goup的新机器人。通过此信息: 我的机器人是管理员 我的机器人隐私被禁用 “启用”-您的机器人只会接收以“/”符号开头或通过用户名提及机器人的消息。“禁用”-您的机器人将接收人们发送到组的所有消息。当前状态是:禁用成功!新状态是:禁用 bot可以读取除其他bot消息外的所有成员!但可以在回复中看到信息。 我的tg api是:https://github.co

  • 我只想让我的机器人接收特定频道的消息,比如当电报用户加入电报频道时。1.我不是频道创建者或管理员。2.我不想让我的机器人成为频道管理员。3.我不想要求每个频道管理员将我的机器人添加到频道成员中。 你知道通过电报客户端UI或API制作机器人、加入频道的方法吗? 有没有另一种方法可以让机器人接收频道的更新?

  • 我无法理解电报机器人api的Reply_to_message方法。以下是我的代码: 这里,当用户发送/启动机器人发送hello world文本。我想让用户回复发送hello world的消息。我的意思是当用户发送/启动机器人回复信息的文本“你好,世界!” 我使用网络钩子。

  • 我通过GitHub将我的电报机器人部署到Heroku(我使用Webhook),机器人正在运行,但由于某种原因,它没有通过Webhook接收消息。 代码如下: 文件:

  • Telegram机器人向我发送了一条带有文本片段的消息,我想对其进行编辑,并将其发送回机器人进行进一步处理。 复制和粘贴需要时间。重新键入消息需要时间。 理想情况下,我想按下机器人消息上的内联按钮“编辑”,并让消息文本出现在我的回复输入框中进行编辑。(以某种方式附加到我的回复的消息ID将是一个加号)。 我试着使用除/start*之外的参数的深度链接,但这似乎不起作用。 我可以使用机器人API(或任