我正在尝试使用 Microsoft Graph API 在此处创建 OnlineMeetings https://docs.microsoft.com/en-us/graph/api/application-post-onlinemeetings?view=graph-rest-1.0&tabs=http
但是当按照此处的说明配置应用程序访问策略时:
https://docs.microsoft.com/en-us/graph/cloud-communication-online-meeting-application-access-policy
我们收到了 404 错误:
New-CsApplicationAccessPolicy -Identity OnlineMeetings-Link -AppIds "xxx-xxx-xxx" -Description "xxxx Local"
Get-CsOnlineSession: /Users/xxx/.local/share/powershell/Modules/MicrosoftTeams/2.3.1/netcoreapp3.1/SfBORemotePowershellModule.psm1:63
Line |
63 | $remoteSession = & (Get-CsOnlineSessionCommand)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| The remote server returned an error: (404) Not Found.
Invoke-Command: /Users/xxx/.local/share/powershell/Modules/MicrosoftTeams/2.3.1/netcoreapp3.1/SfBORemotePowershellModule.psm1:22959
Line |
22959 | … -Session (Get-PSImplicitRemotingSession -CommandName 'New-CsApplic …
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Cannot validate argument on parameter 'Session'. The argument
| is null or empty. Provide an argument that is not null or
| empty, …
Run Code Online (Sandbox Code Playgroud) powershell azure microsoft-teams microsoft-graph-teams microsoft-graph-api
我们在 MS Teams 机器人上工作。每个机器人通知都包含aadObjectId
在我们识别用户的请求正文中。
示例机器人请求
{"name":"composeExtension/query","type":"invoke","timestamp":"2021-04-28T06:41:18.718Z","localTimestamp":"2021-04-28T12:11:18.718+05:30","id":"f:c3c988ef-b14b-b996-b3ec-cee22dbeb5ca","channelId":"msteams","serviceUrl":"https://smba.trafficmanager.net/in/","from":{"id":"29:1FKDpJ_2YcIMpBd94h8BABBpkrv_RVSSeeJ3qh8U3djsypgk2lnJxbq_Sd4eUVFE2lHXBuUBMQ_se7QEvYzTbtQ","name":"Test Account","aadObjectId":"7812b15f-6462-44ef-a772-d9012c55bf1c"},"conversation":{"conversationType":"personal","tenantId":"4d4f9f3f-2553-430b-b86b-442be9306e29","id":"a:1W4nBEGebG_h5wTFEGuyFYXr0_vCYTvg3-lIZ9uKaPFiDZmtU5FIA2PH880C09mrtxbqEeIJ-sPQvwy0qfDhmTOPuEGRtkoT7NGS1eTBHBfjWXWFMRgOK5yzsNMlL6i0d"},"recipient":{"id":"28:97f33763-604f-89ae-40b3-719c55e66177","name":"Test Bot"},"entities":[{"locale":"en-GB","country":"GB","platform":"Web","timezone":"Asia/Calcutta","type":"clientInfo"}],"channelData":{"tenant":{"id":"4d4f9f3f-2553-430b-b86b-442be9306e29"},"source":{"name":"compose"}},"value":{"commandId":"Contacts","parameters":[{"name":"initialRun","value":"true"}],"queryOptions":{"skip":0,"count":25}},"locale":"en-GB","localTimezone":"Asia/Calcutta"}
Run Code Online (Sandbox Code Playgroud)
在初始身份验证期间,我们存储用户 ID。我们使用 OAuth2.0 和以下 Microsoft Graph API 来获取用户 ID。
https://docs.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0&tabs=http
我们注意到id
图形 api 和机器人框架中返回的业务(或工作)帐户是相同的。
但是对于个人账户就不同了
样本 ID 供参考
Work Account
From Graph API - id : 7812b15f-6462-44ef-a772-d9012c55bf1c
From Bot - aadObjectId : 7812b15f-6462-44ef-a772-d9012c55bf1c
Run Code Online (Sandbox Code Playgroud)
Personal Account
From Graph API - id : 47268d7805746036
From Bot - aadObjectId : 6542b15f-7632-a772-44ef-d9012c55bf1c
Run Code Online (Sandbox Code Playgroud)
那么如何获取个人用户的aadObjectId呢?
azure-active-directory microsoft-teams microsoft-graph-teams microsoft-graph-api
今天读了一篇关于两个PnP库“ PnP Core SDK ”和“PnP Framework”的文章。
\nPnP Core SDK 似乎是一个完全抽象 SharePoint/Teams 的 CSOM、Graph 或 REST API 的框架。
\n因此,我可以只使用 Pnp-Context,而不必再关心后台是否实际使用 Graph 或 CSOM。
\n这对我来说很有意义。
但 PnP 框架也是一个新库,它仍然提供对实际 CSOM 上下文的访问。
\n这让我很困惑,因为我现在不知道作为一名开发人员该如何行事。
我应该只使用 PnP Core SDK 吗?仅当我需要站点配置引擎时才使用 PnP 框架吗?
\n或者我可以使用 PnP 框架来执行“创建站点”、“更新列表项”等典型操作吗?
\n该文章指出了两个库之间的以下差异:
\n\n您可能想知道 PnP Framework 和 PnP Core SDK 之间有什么区别。PnP Core SDK 由 PnP 框架使用,并且以独立于 SharePoint 的 CSOM 的思维方式实现。SPO 中引入的越来越多的新功能不一定可以通过 CSOM 获得;这是 Microsoft 365 PnP 引入新 SDK 的动力,该 SDK 包含在 PnP Framework 和 …
我们希望实现可以跟踪所有过去和新的聊天和频道消息的电子发现集成。
但我们观察到,使用委托权限,该应用程序只能列出用户(无论是否为管理员)所属的聊天;使用应用程序权限时,不支持列表聊天端点。
搜索网站,我们看到了这个问题:如何使用 Microsoft Graph API 检索其他用户的 MS Teams 聊天记录?
这表明这是不可能的。但是他的问题与我们的有点不同,而且是大约一年前的问题。所以我想确认一下:
谢谢!
我正在尝试使用 Microsoft Graph Beta API 在 Microsoft Teams 中创建频道。在文档中,它说通道实体有一个属性IsFavoriteByDefault
指示
频道是否应自动标记为团队所有成员的“最爱”。默认值:假。
https://learn.microsoft.com/en-us/graph/api/resources/channel?view=graph-rest-beta#properties
但是,尝试 Graph Beta API(使用自定义调用或 Graph Explorer)以及我传递给此属性的任何值true
或false
,此属性仍然存在null
。
实际设置此属性的值是否需要执行任何特殊操作?
在特定租户下登录我们系统的任何用户(作为身份验证的身份服务器)都应该能够创建一个在线会议(MS Teams)活动。
我们遵循了使用 Microsoft Graph和Create构建 ASP.NET Core MVC 应用程序并启用事件作为在线会议来创建一个应用程序,该应用程序对组织的AD 用户进行身份验证并允许他将事件创建为在线会议。
我们能够成功实施它,并且能够将活动创建为在线会议。
但这里的确切情况是,在我们的 Web 应用程序中通过身份验证的任何用户(不是 AD 用户)都应该能够创建 MS Teams 会议事件并与应该能够加入会议的其他参与者共享。
我不确定如何实现这一目标。
编辑
或者至少我如何创建 onlineMeeting?我尝试使用客户端凭据提供程序如下
IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create("<<App_Id>>")
.WithTenantId("<<Tenant_Id>>")
.WithClientSecret("<<Client_Secret>>")
.Build();
ClientCredentialProvider authenticationProvider = new ClientCredentialProvider(confidentialClientApplication);
GraphServiceClient graphClient = new GraphServiceClient(authenticationProvider);
var onlineMeeting = new OnlineMeeting
{
StartDateTime = DateTimeOffset.Parse("2020-01-15T21:30:34.2444915+05:30"),
EndDateTime = DateTimeOffset.Parse("2020-01-15T22:00:34.2464912+05:30"),
Subject = "User Token Meeting"
};
var meeting = graphClient.Me.OnlineMeetings
.Request() …
Run Code Online (Sandbox Code Playgroud) 我正在尝试实现以下解决方案:订阅所有 MS 团队聊天消息的 Web 应用程序。如果消息包含禁止文本,应用程序应以某种方式警告用户(最好是回复同一消息,或者如果不可能,则发起与用户的对话)。
我能够接收所有聊天 Webhook 并处理它们,但我找不到任何方法使用 Graph API 将消息发布回 Teams 频道(https://learn.microsoft.com/en-中描述的操作) us/graph/api/channel-post-messagereply?view=graph-rest-beta&tabs=http
中描述的操作)
应用程序权限不支持
因此,我尝试使用 Bot 框架发送主动消息,但是,Bot 框架需要一个我没有的团队对话 ID(图形 API Webhook 提供团队、频道和用户 ID,但这些 ID 都不被 Bot 接受)机器人 API)。
有谁知道我可以使用图形 API 提供的团队 ID 和频道 ID 检索团队对话 ID 的方法吗?
谢谢,丹
团队列表频道 Graph API 已开始抛出未经授权的错误,如下所示。直到昨天它都可以正常工作。我们使用“ServicePrincipal”进行身份验证,它具有所有必要的图形权限。在这种情况下 - Group.Read.All
我们使用的示例端点如下。 https://graph.microsoft.com/v1.0/teams/dccde580-0fc5-11eb-adc1-0242ac120002/channels。
从今天早上开始,它不断失败并出现以下错误。更重要的是,这不是测试版 API。
根据我们的分析,对于那些拥有私人频道的团队来说,这是失败的。但是根据文档,私有频道也应该在响应中返回。我不明白可能是什么问题。
在这方面的任何想法/提示/帮助都非常感谢。
{
"error": {
"code": "Unauthorized",
"message": "Failed to execute Aad backend request GetUsersByObjectIdsRequest. Workload Unknown. Request Url: https://graph.windows.net/myorganization/getObjectsByObjectIds?api-version=1.61-internal, Request Method: POST, Response Status Code: Unauthorized, Response Headers: ocp-aad-diagnostics-server-name: 0yK5pQbb6mmQTig21hH07WmGI0k2nuTime8Zw4wMO7k=\r\nrequest-id: c33c655e-27f7-4f96-aabf-70e6d9d8770d\r\nclient-request-id: 5bd775a7-7dba-4ad7-bc9a-fbd91ae46fea\r\nStrict-Transport-Security: max-age=31536000; includeSubDomains\r\nDate: Fri, 16 Oct 2020 15:23:45 GMT\r\n, Reason Phrase: Unauthorized",
"innerError": {
"date": "2020-10-16T15:23:45",
"request-id": "3f3793b8-02d6-4653-a14f-3e455660e3d8",
"client-request-id": "3f3793b8-02d6-4653-a14f-3e455660e3d8"
}
}
}
Run Code Online (Sandbox Code Playgroud) 创建将使用 Azure AD 身份验证来登录用户的多租户应用程序时,GitHub 上的各种示例似乎建议应用程序注册应包含 OpenId 下的以下权限。
email View users' email address
offline_access Maintain access to data you have given it access to
openid Sign users in
profile View users' basic profile
Run Code Online (Sandbox Code Playgroud)
(例如: https: //github.com/OfficeDev/microsoft-teams-sample-auth-node第 12 节)
在遵循 Azure 门户本身上的示例时,快速入门仅使用这一权限创建应用程序注册
User.Read 登录并读取用户个人资料
Microsoft 的 Azure AD User.Read 权限是通用 openid 的电子邮件、openid 和配置文件权限的超集吗?
在https://login.microsoftonline.com/common/adminconsent?client_id={client-id}表单中创建同意 URL 时,似乎仅显示 User.Read。
对于需要用户登录的基本应用程序,建议的推荐权限集是什么?
azure-active-directory microsoft-graph-teams microsoft-graph-api
是否有任何解决方法可以使用代码在私人频道上创建、更新和删除对话?
botframework microsoft-teams microsoft-graph-teams microsoft-graph-api