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



我一直在研究创建一个脚本,通过使用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 FilesWindowsPowerShellModulesPSSlack1.0.5PublicSend-SlackAPI.ps1:115 char:21

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

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

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

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

相关内容

最新更新