powershell - 使用 MS Graph(或 PowerShell)创建 MS Teams 聊天

标签 powershell microsoft-graph-api microsoft-teams

我目前正在尝试使用 Microsoft Graph 向特定员工发送 Microsoft Teams 聊天消息。

其背后的想法是我希望能够使用 PowerShell 发送聊天消息,但就目前而言,我很乐意先在 Microsoft Graph 中完成它,然后再构建一个 PowerShell 脚本。

重要提示:我不想将消息发布到 channel ,而只是在 1:1 聊天中。

我尝试过的:

我可以通过以下方式获取我自己用户的当前聊天记录:

https://graph.microsoft.com/beta/users/{myid}/chats

但是,如果我尝试使用不同用户的 id,我会收到 401(权限被拒绝) 错误。即使我拥有所有可用权限,我什至看不到他们当前的聊天记录。

在错误消息中,它表示如下:

"User Id must match the API caller when called in delegated mode"

...但我不想使用委托(delegate)模式,因为那意味着我正在执行命令,就好像我是那个用户一样,因此无法创建我想要的第一个聊天消息地方。

这听起来可能很困惑,所以我希望你明白我的意思。

最佳答案

据我所知,没有某种上下文就无法直接向用户发送消息。问题变成了,例如,消息会出现在哪里,它会来自谁?

如果您可以在 Channel 中处理它,那么 PowerShell 就可以了,因为您可以设置一个 webhook 来执行此操作。几年前我从 PS -> Teams 做过同样的事情,所以我认为它应该仍然有效。 This article应该有帮助。

或者,如果您真的想要“一对一”对话,可以这么说,您需要创建并注册一个 Bot,以便消息“来自某人”给用户。这个概念称为主动消息传递,我已经发布了更多关于它的信息 here .然而,纯粹来自 PowerShell 将需要大量工作:

  1. 在 Azure 中创建一个机器人以获取 App ID 和密码。从技术上讲,这将是一个不存在的 Bot,因为没有实现,这意味着如果用户要回复它,它将无处可去。这可能没问题?您可以可能尝试在 PowerShell 中构建一个 Azure Function Bot,但不是我自己做过的事情,所以无法提供建议(到目前为止,我只使用 C# 来创建 Bots)
  2. 创建一个对话 ID,并将其保存以备后用 - 又是一大堆工作。
  3. 将代码(例如来 self 上面的帖子)转换为 PowerShell,引用相关的 NuGet 包。

因此,如果您可以在您的用例中进行管理,我建议尝试找到一种使用 Teams channel 的方法,并在那里向用户发送消息?

除非您试图代表另一个用户发送所有这些都是无关紧要的?

关于powershell - 使用 MS Graph(或 PowerShell)创建 MS Teams 聊天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59561168/

相关文章:

powershell - 如何在 Power Shell 中将字符串与文件中的多行字符串连接起来?

powershell - 如何使用 Powershell 在 IIS 中设置 "ConnectAs"用户

jquery - 使用 Powershell Where-Object 获取 src img

microsoft-graph-api - ADAL.js 和 MSAL.js 有什么区别?

azure - 如何限制应用程序端点在浏览器中加载?

node.js - 如何在 Microsoft Bot Framework 上通过 ID 获取用户电子邮件?

powershell - 无法从 Exchange cmdlet 捕获/重定向警告

python-3.x - 客户端凭据流中的 requests-oauthlib 自动刷新不记名 token ?

microsoft-graph-api - Microsoft Graph 获取今天发生的日历条目(在时间范围内到达)

c# - 使用自定义 API 机器人无法使用 Bot 框架在 Microsoft Teams channel 中发布操作卡