【问题标题】:BotFramework call Telegram method (getChatAdministrators)BotFramework 调用 Telegram 方法(getChatAdministrators)
【发布时间】:2019-06-08 21:59:34
【问题描述】:

我如何从 BotFramework 调用 Telegram 方法 (getChatAdministrators)

我试过这段代码,但响应是空的

        turnContext.Activity.ChannelData = JsonConvert.SerializeObject(new
        {
            method = "getChatAdministrators",
            parameters = new
            {
                chat_id = chat.Id,
            }
        });

        var response = await turnContext.SendActivityAsync(turnContext.Activity);

【问题讨论】:

  • 我的回答有帮助吗?您还有其他问题吗?如果有帮助,您可以投票/标记为将来帮助其他人的答案吗?
  • @DrewMarsh 感谢回答,但无济于事。 new Activity() - 收到错误“操作返回了无效的状态代码 'BadRequest'”。使用 turnContext.Activity.AsMessageActivity() 和 ChannelData - 获得一个值“Id”。结果我使用了 TelegramBotClient()

标签: c# .net-core botframework telegram-bot channels


【解决方案1】:

ITurnContextActivity 属性表示当前回合的传入活动,因此如果您尝试发送新活动,则不想使用/变异那个实例,你想创建一个新实例。

我没有亲自完成您对 Telegram 的要求,但这是您应该使用的一般方法:

var response = await turnContext.SendActivityAsync(new Activity
{
    ChannelData = new 
    {
       method = "getChatAdministrators",
       parameters = new 
       {
           chat_id = chat.Id,
       },    
    },
});

注意:也没有理由手动 JSON 序列化任何东西,如果您愿意,只需使用匿名类型(您也可以创建自己的带有 JSON.NET 序列化属性标记的强类型类),它们会很好地序列化。 ? 恕我直言,一个好的频道集成应该提供一个 NuGet 包,其中包含特定于频道的类型/扩展,但由于 V4 现在相对较新,还没有那么多扩展。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 2022-10-26
    相关资源
    最近更新 更多