Поэтому я работаю над созданием нового (частного) бота для команд 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, но имеет отношение к аутентификации.