Microsoft Teams API返回Unauthorized

问题描述 投票:0回答:1

所以我正在为Microsoft Teams设置一个新的(私有)机器人,它应该能够按需在频道中发布消息。我已经有一个用于Google Hangouts Chat的僵尸程序,但是Microsoft Teams给了我一个非常艰难的时间。

我现在一直在网上搜索超过10个小时,我很困惑。

现在,我想要做的就是将卡片发送到Microsoft Teams Channel。所以我创建了connectorclient,当我使用我的MSAppID和MSAppPassword加入通道(用smba.trafficmanager.net开始)时,我使用了baseuri。然后,我尽可能多地填写信息(也许太多了?)然后我使用连接器的.conversations.createconversation提交信息。

使用的命名空间:Microsoft.bot.connectorMicrosoft.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%确定我使用正确的方法来创建频道消息,我认为它是CreateConversationReplyToActivity

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

vb.net botframework microsoft-teams
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.