【发布时间】:2018-09-19 08:02:44
【问题描述】:
所以我正在为 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 有效负载没有任何关系,而是与身份验证有关。
【问题讨论】:
-
我能够修复它。我为 serviceurl 和端点消息添加了 MicrosoftAppCredentials.TrustserviceUrl。
-
如果可以,请将其添加为正式答案,以便在其他用户遇到此问题时,您可以得到认可。
标签: vb.net botframework microsoft-teams