【问题标题】:Relationship between Teams Messaging Extension with action command, the underlying bot and access via Graph APITeams 消息扩展与操作命令、底层机器人和通过 Graph API 访问之间的关系
【发布时间】:2021-02-01 13:09:07
【问题描述】:

我想调用消息扩展程序(使用操作命令)并通过机器人访问 Graph API 以获取频道的不同资源(例如,检索所有消息或获取我的消息的回复)。 在 Microsoft 的示例中,作为先决条件,我必须进行“机器人通道注册”,以便机器人可以通过 OAuth2 访问 Graph API。 我真的需要这个频道注册吗?还是有别的办法?

作为测试,我创建了一个 azure 免费试用版,使用它执行“Bot 频道注册”,还可以在注册中保存 Graph Api 访问的 ID 和密码。有了这个我就成功了。现在 30 天的测试期已经结束,我很想知道没有它是否可以工作。

感谢您的帮助

更新: 这就是我初始化图形 api 的代码:

IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(AppId)
            .WithClientSecret(AppSecret)
            .WithAuthority(new Uri($"https://login.microsoftonline.com/{Tenant}"))
            .Build();
string[] scopes = new string[] { "https://graph.microsoft.com/.default" };
AuthenticationResult authenticationResult = await app.AcquireTokenForClient(scopes).ExecuteAsync();

var graphServiceClient = new GraphServiceClient(new DelegateAuthenticationProvider((requestMessage) =>
        {
            requestMessage
                .Headers
                .Authorization = new AuthenticationHeaderValue("Bearer", authenticationResult.AccessToken);
return Task.FromResult(0);
        }));

【问题讨论】:

  • 是的,要获取访问令牌,您的机器人需要在 azure 中注册。
  • 感谢您的反馈。与此同时,我已经更改了我的代码,以便使用图形 api 访问部分工作(请参阅有问题的更新)以下调用成功执行并返回预期结果:var channels = graphServiceClient.Teams["123"].Channels.Request().GetAsync().Result; 但以下调用返回 UnknownError var messages = graphServiceClient.Teams["123"].Channels["456"].Messages.Request().GetAsync().Result;我认为这与访问类型(委托或应用程序权限)有关。有人可以解释为什么它不起作用吗?
  • 是的,需要为各自的 API 启用所需的图形委托或应用程序权限才能获得结果。你能检查一下refer document
  • 感谢您的回答。我会检查提供的链接。
  • 好的,非常感谢您的回复。我将使用 azure 帐户。

标签: microsoft-teams microsoft-graph-teams


【解决方案1】:

对于 OAuth 身份验证,您肯定需要使用 azure 注册机器人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多