vb.net - 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 有效负载没有任何关系,而是与身份验证有关。
解决方案
通过MicrosoftAppCredentials.TrustserviceUrl
同时使用 serviceUrl 和端点消息解决了问题。
推荐阅读
- css - 如何在 AdminLTE 中将侧边栏移动到仪表板的右侧?
- java - 类treenode中的构造函数treenode不能应用于java中的给定类型?
- vue.js - 输入带有当前日期的日期占位符
- c# - 如何从工具窗口访问当前代码编辑器?
- email - 如何使用 Outlook 的 SMTP 服务器发送电子邮件?
- android - BufferQueueProducer 问题专门针对 Android Q Pixel 3 和 3 XL 设备。模拟器工作正常
- python - Instagram 页面无法通过 Tor 的 urlopen() 加载。可能是什么原因/解决方法?
- r - 具有可变数量参数的递归函数
- python - 用于比较两个数据框并使用真/假创建新列的功能
- ubuntu - SSH 在使用以太网电缆一段时间后无限期挂起;甚至无法断开连接