如何通过 SlackAPI 和 PSSlack 模块更改 Slack 的详细信息

How to change details on Slack via SlackAPI and PSSlack Module

我一直在研究创建一个脚本,通过使用 slack API 来更改用户的电子邮件。我已经完成了设置应用程序机器人并将其添加到服务器中以及通过 Oauth 授予所需权限的过程。当前的脚本如下所示:

$SlackToken = "xoxp"
$SlackAllUsers = Send-SlackApi -Token $SlackToken -Method 'users.list' | Select-Object -ExpandProperty 'Members'
$SlackAllUsers = $SlackAllUsers | Where-Object { $_.is_bot -eq $false -and $_.is_restricted -eq $false }
$UserEmail = 'x'
$SlackUserID = $SlackAllUsers | Where-Object { $_.Profile.Email -eq $UserEmail } | Select-Object -ExpandProperty 'ID'
$SlackUserID
$UserEmailNew = 'y'
Send-SlackApi -Token $SlackToken -Method 'users.profile.set' -Body `
@{
    user = $SlackUserID
    profile = @{
        email = $UserEmailNew
    }
}

实际上它利用users.list方法来抓取特定频道内的所有用户,然后过滤这些用户以删除不相关的帐户。我正在尝试使用 users.profile.set 在这里应用更改,这是我 运行 遇到问题的地方,我不知道为什么,但这会导致以下错误:

Parse-SlackError : Unknown error invalid_profile received from Slack API.
At C:\Program Files\WindowsPowerShell\Modules\PSSlack.0.5\Public\Send-SlackAPI.ps1:115 char:21

在测试 $SlackUserID 时,我可以看到我正确地获取了我尝试更改和编辑的特定用户的 ID。阅读 users.profile.set 上的文档 here 后,看来这是通过使用 API 实际应用更改的唯一方法。需要注意的重要一点是,在我的环境中,我们没有使用企业环境,这意味着我无权访问 admin.* Oauth 权限,因此无法使用该方法解决此问题。

我遇到的主要问题似乎是处理通过 API 令牌发送的更改请求的部分。开始部分和中间部分确实有效,我通过测试电子邮件和 ID 抓取以及管道正确的详细信息来确认这一点。简单的变化部分需要读作

Send-SlackApi -Token $SlackToken -Method 'users.profile.set' -Body `
@{
    user = $SlackUserID
    profile = @{
        email = $UserEmailNew
    } | ConvertTo-Json
}

回想起来这似乎很明显,如果你正在管道 API 基于 JSON 的调用,这意味着你需要添加 ConvertTo-Json 才能正确解释它。