Slackのusers.info
APIを使用してユーザー情報を取得しようとしていますが、メールでユーザーを検索する必要があります。それを行う方法はありますか?
現在、IDでusers.info
のユーザーのみを検索できます。
問題の別の解決策は、 sers.list を呼び出し、クライアント内でprofile.email
を使用して、探している電子メールをフィルタリングすることです。
はい!
https://slack.com/api/users.lookupByEmail
これを使用して、メールIDが使用可能な場合にユーザーを見つけることができます。
ドキュメントに記載されていないAPIがこのジョブを実行できます: https://slack.com/api/auth.findUser?team= &email =&token = xoxp-XXXXXXXXX
このスコープを使用する必要がありますusers:read.email、users:readは、もはやメールフィールドの十分なスコープではありません。
詳細を確認するには、これをチェックしてください: https://api.slack.com/scopes/users:read.email
それは私にとっては期待通りにうまくいきました!
これは私にとって役に立ちました。私のセットアップ:私は企業の一部であるため、legacy token
にはusers:read.email
スコープがありません。
解決策:users:read.email
スコープと必要なその他のスコープを使用してアプリを作成しました。管理者から承認されたアプリを入手し、アプリをワークスペースにインストールし、OAuthトークンを取得し、https://slack.com/api/users.lookupByEmail
で使用しました。
メインの呼び出しメソッドからmessage.userでユーザーIDを取得できます
getUsername(userID).then((output) => { username = output.user.name });
function getUsername(userid){
return new Promise((resolve, reject) => {
//get token from https://api.slack.com/methods/users.info
options.uri = "https://slack.com/api/users.info?token=********&userid=" +userid+ "&pretty=";
rp(options).then(function (body) {
resolve(body);
console.log('Retrieved Info slack --- ' + JSON.stringify(body));
})
.catch(function (err) {
resolve(err);
console.log('aborted - slack ' + JSON.stringify(err));
});
});
}
参照リンク: https://github.com/hassifow/Slack.API-User.info/blob/master/LambdaFunction.js