Slack APIを使う

現在の勤め先ではリモートワークは試験運用?のような状態ですが、一応利用可能です。
とはいえ、オフィスに居ない中でいかにチーム開発として滞りなく活動できるか?については経験者のノウハウも魑魅魍魎といったところです。

特に無言でPCの前から居なくなると、お互い遠隔地を映像監視でもしていなければ、無応答状態の理由もわからないのは 意外とストレス要因になりそうに思います。※慣れの問題かもしれませんが・・・

というわけで、試しに業務利用中、天下のSlackステータスを自動で更新するアプリを作ってみることにしました。

まずはAPIの調査と下準備です。

Slackにアプリ登録する

  1. まずはSlack APIにアクセス
  2. 続いてBuilding Slack appsにアクセスしてアプリを作成

認証情報を生成する

ここ、意外と手こずりました。。

結論としては、ネットで出回っているAPI経由によるauthorizationではなく、ポータルメニューから実行しました。

  1. 先ほど作成したアプリの「Basic information」へ
  2. 「Add features and functionality」から必要な設定値を有効化する

img

  • 例えば今回の場合は、imcoming-webhookusers.profile:writeをセットする必要がある
  • 詳細はscope一覧を参照のこと

ここをONにしました img

ここで機能を有効化しました img

設定が完了したらAccess-Tokenが発行できます img

APIを利用する

プロフィールのステータス取得URL

これで取れます。ひょっとしたらユーザ指定するのが妥当かな Token自体がユーザ単位で発行されているから不要っぽい
https://slack.com/api/users.profile.get?token=xoxp-YOUR-TOKEN

プロフィールのステータス更新URL

これでできます。セットするステータスはjsonですが、URLエンコーディングしてパラメータにセットするらしいです。
https://slack.com/api/users.profile.set?token=xoxp-YOUR-TOKEN&profile=%7B%22status_text%22%3A%22riding%20a%20train%22%2C%22status_emoji%22%3A%22%3Amountain_railway%3A%22%7D

before encode
{
    "status_text": "riding a train",
    "status_emoji": ":mountain_railway:"
}
encoded

%7B%22status_text%22%3A%22riding%20a%20train%22%2C%22status_emoji%22%3A%22%3Amountain_railway%3A%22%7D

リファレンス

あとはこっちを読むこと

参考