首页 > 解决方案 > BotFramework 调用 Telegram 方法(getChatAdministrators)

问题描述

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

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

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

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

标签: c#.net-corebotframeworktelegram-botchannels

解决方案


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

我个人并没有完全按照您对 Telegram 的要求完成,但这是您应该使用的一般方法:

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

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


推荐阅读