web-dev-qa-db-ja.com

users.info APIを使用して、スラックユーザーをメールで取得する方法

Slackのusers.info AP​​Iを使用してユーザー情報を取得しようとしていますが、メールでユーザーを検索する必要があります。それを行う方法はありますか?

20

現在、IDでusers.infoのユーザーのみを検索できます。

問題の別の解決策は、 sers.list を呼び出し、クライアント内でprofile.emailを使用して、探している電子メールをフィルタリングすることです。

15
seanrose

はい!

https://slack.com/api/users.lookupByEmail

これを使用して、メールIDが使用可能な場合にユーザーを見つけることができます。

詳細: https://api.slack.com/methods/users.lookupByEmail

13
Shree Harsha S

ドキュメントに記載されていないAPIがこのジョブを実行できます: https://slack.com/api/auth.findUser?team= &email =&token = xoxp-XXXXXXXXX

4
sai.xu

これがSlack slashコマンドの代わりに行われている場合、@username#channelsなどを展開するようにコマンドを構成できます。

これは、Slackアプリのコマンドセクションで実行できます。次のスクリーンショットを参照してください。

Slack app config: expand usernames and channels

2
sshaw

このスコープを使用する必要がありますusers:read.emailusers:readは、もはやメールフィールドの十分なスコープではありません。

詳細を確認するには、これをチェックしてください: https://api.slack.com/scopes/users:read.email

それは私にとっては期待通りにうまくいきました!

1
safimed

これは私にとって役に立ちました。私のセットアップ:私は企業の一部であるため、legacy tokenにはusers:read.emailスコープがありません。

解決策:users:read.emailスコープと必要なその他のスコープを使用してアプリを作成しました。管理者から承認されたアプリを入手し、アプリをワークスペースにインストールし、OAuthトークンを取得し、https://slack.com/api/users.lookupByEmailで使用しました。

1
Nawaz Hussain K

メインの呼び出しメソッドから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

0
HariKishore