Microsoft Teams API возвращает несанкционированный - PullRequest
0 голосов
/ 15 сентября 2018

Поэтому я работаю над созданием нового (частного) бота для команд Microsoft, который должен иметь возможность публиковать сообщения в канале по требованию. У меня уже есть бот, закодированный для чата Google Hangouts, но Microsoft Teams доставляет мне действительно тяжелые времена.

Я искал более 10 часов по всей сети, и я очень растерялся.

Прямо сейчас все, что я хочу сделать, это отправить открытки на канал Microsoft Teams. Поэтому я создал клиент Connector, я использовал baseuri, предоставленный, когда бот присоединился к каналу (начинается с smba.trafficmanager.net) с моими 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, но имеет отношение к аутентификации.

1 Ответ

0 голосов
/ 19 сентября 2018

Проблема была решена с помощью MicrosoftAppCredentials.TrustserviceUrl как для serviceUrl, так и для сообщения конечной точки.

...