2016年9月16日金曜日

Slack の API を使ってユーザ名からユーザ ID を取得してみた

概要

Slack の API でユーザ回りの操作をするときはユーザ ID (U0123456789 みたいな ID) が必要になります
ブラウザやアプリの Slack 上では Username で mention などのやり取りをしますが、それだと API でユーザを指定することができません
なので、今回は Username からユーザ ID を取得してみました

環境

  • Mac OS X 10.10.5
  • Ruby 2.3.1p112
  • Gem 2.5.1
  • slack-api 1.2.4

事前準備

前回の記事を先行にトークンの取得まで行っておいてください
http://hawksnowlog.blogspot.jp/2016/09/try-slack-rtm-api.html

ユーザ ID を取得するスクリプトの作成

  • vim get_user.rb
if ARGV.length != 1
 exit(1)
end

@token = "xoxp-xxxxxxxxxxx-xxxxxxxxxxx-xxxxxxxxxxx-xxxxxxxxxx"

require 'slack'
Slack.configure {|config| config.token = @token }
client = Slack::Client.new

client.users_list['members'].map{ |v|
  if v['name'] == ARGV[0]
    puts "#{v['id']}"
    break
  end
}

引数にユーザ名を与えてそれに合致する名前があればユーザ ID を表示する感じです

最後に

Slack API でユーザに対する操作をするときは一旦こんな感じのスクリプトや API を使ってユーザ ID を調べてから操作する感じかなと思います

本当はユーザ名で検索できるといいのですが、ちょっとそういった API が見つからなかったので、一覧を取得してそこから検索するようにしました

参考サイト

0 件のコメント:

コメントを投稿