Node.js 如何让应用程序通过Graph API向Microsoft团队发送消息?

Node.js 如何让应用程序通过Graph API向Microsoft团队发送消息?,node.js,typescript,microsoft-graph-api,microsoft-teams,microsoft-graph-teams,Node.js,Typescript,Microsoft Graph Api,Microsoft Teams,Microsoft Graph Teams,我希望能够使用graph API获取频道和团队列表,然后让应用程序向适当的频道发送更新,而用户无需与MS团队交互。环顾四周,我看到很多帖子说这是不可能的,但似乎正在这样做。Monday.com甚至指定它使用beta api,而且两者都不使用连接器 在通过该方法进行身份验证后,我尝试使用apiPOST/teams/{id}/channels/{id}/messages 第一次呼叫AdminApprove https://login.microsoftonline.com/organizations

我希望能够使用graph API获取频道和团队列表,然后让应用程序向适当的频道发送更新,而用户无需与MS团队交互。环顾四周,我看到很多帖子说这是不可能的,但似乎正在这样做。Monday.com甚至指定它使用beta api,而且两者都不使用连接器

在通过该方法进行身份验证后,我尝试使用api
POST/teams/{id}/channels/{id}/messages

第一次呼叫
AdminApprove

https://login.microsoftonline.com/organizations/v2.0/adminconsent?&client_id={botID}&response\u type=code&redirect\u uri=https://myoauthCallback&scope=offline_access User.ReadWrite.All Group.ReadWrite.All

在返回之后,我立即调用以获取访问令牌,上面的调用似乎没有返回我需要放入此请求中的任何内容

POST=>/organizations/oauth2/v2.0/token

body=client\u id={botId}&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client\u secret={secret}&grant\u type=client\u凭证

我在
https://portal.azure.com/#blade/
使bot具有与上述第一个请求相同的范围。这里它不喜欢以相同的方式传递范围,所以我将其设置为
default

然后,我获取返回的
access\u令牌
,并尝试调用
POST
向频道发送消息

URL:
/teams/{TEAM\u ID}/channels/{CHANNEL\u ID}/messages

正文:
{
主题:“测试主题”,
正文:{contentType:'text',content:'testmessagefrom app'},
}

这会导致一个错误

statusCode:401,代码:“未知错误”,消息:“”

那么,我如何获得与这些其他应用程序相同的功能,以便在不设置连接器的情况下直接向团队发送消息呢?

如果您查看“auth”页面,它是指创建应用程序权限。但是,请参阅图表文档,在顶部附近的“权限”下,它显示它仅支持“委派”权限,因此您不能使用具有应用程序权限的特定端点

连接器(Webhooks)将能够满足您的需要,但您说希望避免这种情况——也许您可以解释为什么它不理想?恐怕我不知道如何以编程方式创建webhook。

结果表明,需要在团队中进行配置的是Office 365连接器,而不是常规的“连接器”

编辑:忽略,即使使用office 365连接器,用户仍需要以某种方式与MS团队进行交互

另一个编辑:原来它使用的是主动消息传递


虽然从技术上讲,如果用户没有首先与bot进行交互,您实际上无法向应用发送消息,但安装应用确实会触发会话更新,您可以对此进行回复。因此,最终,我可以安装Teams应用程序,并在我的web应用程序中发送机器人通知,而用户无需实际接触Microsoft Teams。

这是一个很大的限制,无法自动完成。我知道我的做法是不正确的,我就是想不出正确的方法。我知道上面来自monday.com和smartsheet的示例应用程序没有使用连接器,而是使用graph api。所以这是可能的,我只是不确定我怎么能直接问你是怎么知道的?我当然看不到你发来的关于它的Monday.com链接。也许他们正在使用graph api完成第一部分,但是通过webhook发送消息本身?我没有具体的证据,但webhook本质上是连接器的别名。它们显示在频道的“连接器”菜单中,需要配置吗?使用上述应用程序,频道配置连接器列表中没有显示任何内容,团队端也不需要配置。Monday.com还指定了其使用Teams Graph Beta功能的功能,而连接器不是该功能的一部分。有没有一种方法可以通过编程方式创建一个不是团队连接器的webhook?我正试图使用此API向频道发布消息,但最终收到401响应,您能告诉我您是如何实现的吗?我不确定我是否理解你的回答。我已经向我的应用程序授予了多个应用程序和委托权限(包括必需的权限),但我继续收到401,请求正文是正确的。