首页 > 解决方案 > Microsoft Teams API 返回未经授权

问题描述

因此,我正在为 Microsoft Teams 设置一个新的(私人)机器人,该机器人应该能够按需在频道中发布消息。我已经有一个为 Google Hangouts Chat 编码的机器人,但 Microsoft Teams 让我很难过。

我已经在网上搜索了 10 多个小时,我很困惑。

现在,我想做的只是将明信片发送到 Microsoft Teams 频道。所以我创建了连接器客户端,我使用了当机器人加入频道(以smba.trafficmanager.net开头)时提供的 baseuri,以及我的 MSAppID 和 MSAppPassword。然后,我尽可能多地填写信息(也许太多了?)并使用连接器的.conversations.createconversation.

使用的命名空间:Microsoft.bot.connector,Microsoft.bot.connector.teams.models

这是代码:

Dim Connector As New ConnectorClient(New Uri("https://smba.trafficmanager.net/amer/"), "MSAPPID", "MSAPPPASSWORD")

Dim conversation As New ConversationParameters
Dim activity2 = Activity.CreateMessageActivity

Dim bot As New ChannelAccount
bot.Id = "BOTID"
bot.Name = "EDD Bot Test"
conversation.Bot = bot

Dim chaninfo As New ChannelInfo
chaninfo.Id = "CHANID"
chaninfo.Name = "General"

Dim teaminfo As New TeamInfo
teaminfo.Id = "TEAMID"
teaminfo.Name = "EDD"

activity2.Text = "Test"
activity2.ServiceUrl = "https://smba.trafficmanager.net/amer/"
activity2.Type = ActivityTypes.Message
activity2.From = bot
activity2.ChannelId = "msteams"

Dim tenantdata As New TenantInfo
tenantdata.Id = "TENANTID"

Dim teamschanneldata As New TeamsChannelData
teamschanneldata.Channel = chaninfo
teamschanneldata.Team = teaminfo
teamschanneldata.Tenant = tenantdata
activity2.ChannelData = teamschanneldata

conversation.Activity = activity2
Response.Write(JsonConvert.SerializeObject(conversation))
Try
  Dim reqresp As ConversationResourceResponse = Connector.Conversations.CreateConversation(conversation)
  Response.Write("ActivityID: " & reqresp.ActivityId & ", ServiceURL: " & reqresp.ServiceUrl & ", ID: " & reqresp.ServiceUrl)
Catch ex As ErrorResponseException
  Response.Write(ex.Response.Content & " " & ex.Response.ReasonPhrase)
End Try

这是 API 返回的内容:

{"message":"Authorization has been denied for this request."} Unauthorized

请记住,我什至不能 100% 确定我使用了正确的方法来创建频道消息,我认为它要么是CreateConversation要么ReplyToActivity

我也给了应用程序Users.ReadWriteAll权限,所以我错过了什么吗?该错误使我认为它与 ConversationParameters 有效负载没有任何关系,而是与身份验证有关。

标签: vb.netbotframeworkmicrosoft-teams

解决方案


通过MicrosoftAppCredentials.TrustserviceUrl同时使用 serviceUrl 和端点消息解决了问题。


推荐阅读