Botframework 无法通过ConnectorClient bot连接器向团队发送消息

Botframework 无法通过ConnectorClient bot连接器向团队发送消息,botframework,microsoft-teams,Botframework,Microsoft Teams,我正试图从位于我的Teams Bot中的主动第三方WebHook回调中向团队频道发送消息,该回调在我的Bot对话结束后一段时间从外部触发 我的config.ServiceURL为“”,这是我在会话中对话时从bot获得的 My config.MicrosoftAppId值是分配给Azure中我的机器人应用程序注册的ApplicationID 我的config.MicrosoftAppPassword是我为注册的bot应用程序创建的客户端密码 我的ChannelInfo值是我在另一个应用程序中枚举目

我正试图从位于我的Teams Bot中的主动第三方WebHook回调中向团队频道发送消息,该回调在我的Bot对话结束后一段时间从外部触发

我的config.ServiceURL为“”,这是我在会话中对话时从bot获得的

My config.MicrosoftAppId值是分配给Azure中我的机器人应用程序注册的ApplicationID

我的config.MicrosoftAppPassword是我为注册的bot应用程序创建的客户端密码

我的ChannelInfo值是我在另一个应用程序中枚举目标团队的所有频道时发现的值。我用“f”替换了实际值

在Azure中,我向注册的应用程序添加了以下权限:Delegate-Group.ReadWrite.All

当我试图创建对话时,我得到了禁止的回应。如果我将下面的ChannelInfo更改为伪值,我将收到预期的Not Found响应,因此至少ChannelInfo看起来是一个有效值

我还需要添加其他权限吗?我错过了第一步吗?我做错什么了吗?

代码如下:

        AuthenticationConfig config = AuthenticationConfig.ReadFromJsonFile("appsettings.json");

        var credentials = new MicrosoftAppCredentials(config.MicrosoftAppId, config.MicrosoftAppPassword);

        if (!MicrosoftAppCredentials.IsTrustedServiceUrl(config.ServiceURL))
        {
            MicrosoftAppCredentials.TrustServiceUrl(config.ServiceURL);
        }

        var serviceUri = new Uri(config.ServiceURL);
        var botConnector = new ConnectorClient(serviceUri, credentials);


        Activity message = (Activity)Activity.CreateMessageActivity();
        message.Text = "Hello World";

        var conversationParameters = new ConversationParameters
        {
            Bot = message.From,
            IsGroup = true,
            ChannelData = new TeamsChannelData
            {
                Channel = new ChannelInfo("19:ffffffffffffffffffffffffffffffff@thread.skype")
            },
            Activity = (Activity)message
        };


        var conversationResponse = await botConnector.Conversations.CreateConversationAsync(conversationParameters);

        await botConnector
           .Conversations
           .SendToConversationAsync(message);

你的代码对我很有效。以下是一些您可以尝试的东西:

  • 确保您通过App Studio或清单上载将机器人侧向加载到团队中,并且您不仅仅是通过appId与机器人交谈
  • 确保您的bot已安装到您希望它发送消息的团队中
  • 将您的bot所在的域添加到bot清单的部分
  • e通过更改
    .SendToConversationAsync(消息),确保您正在将消息发送到正确的对话
    .SendToConversationAsync(conversationResponse.Id,message)

  • 还请注意,由于BotTeams功能已直接应用到botframeworksdk中,该软件包已被弃用。我强烈建议您远离它

    您可能希望发送主动消息,如中所示。另一个是50-60号



    如果您想继续使用该软件包,请告诉我,我可以继续尝试提供支持。

    您的代码对我来说运行良好。以下是一些您可以尝试的东西:

  • 确保您通过App Studio或清单上载将机器人侧向加载到团队中,并且您不仅仅是通过appId与机器人交谈
  • 确保您的bot已安装到您希望它发送消息的团队中
  • 将您的bot所在的域添加到bot清单的部分
  • e通过更改
    .SendToConversationAsync(消息),确保您正在将消息发送到正确的对话
    .SendToConversationAsync(conversationResponse.Id,message)

  • 还请注意,由于BotTeams功能已直接应用到botframeworksdk中,该软件包已被弃用。我强烈建议您远离它

    您可能希望发送主动消息,如中所示。另一个是50-60号



    如果您想继续使用该软件包,请告诉我,我可以继续尝试提供支持。

    我最终能够让代码正常工作,但它只会发布到我的Bot运行的同一频道。也就是说,它发回自己,对我来说毫无价值。我无法将消息推送到其他频道。相反,我完全放弃了这个方法,现在使用应用程序webhook将我的消息推送到目标频道。@Mike。我懂了。不幸的是,您的bot必须安装到该频道才能获得发送到该频道的相应权限。它就像用户一样工作——普通用户不能发布到他们不属于的频道。我能够让代码最终工作,但它只会发布到我的机器人运行的同一频道。也就是说,它发回自己,对我来说毫无价值。我无法将消息推送到其他频道。相反,我完全放弃了这个方法,现在使用应用程序webhook将我的消息推送到目标频道。@Mike。我懂了。不幸的是,您的bot必须安装到该频道才能获得发送到该频道的相应权限。它的工作原理和用户一样——普通用户不能发布到他们不属于的频道。