Slackのカスタム絵文字をLINEスタンプ風に表示してほしいという要望があったので作成してみた。
下記の記事を参考にしてGoogleAppsScriptで実装しました。
Slackのemojiをデカくする
処理の流れ
SlackではSlash commandsを自分で作ることができます。
https://api.slack.com/slash-commands
これを使って「/stamp :custom_emoji:」と入力されたら、GAS側はdoPostでコマンドを受け取りその絵文字の元々の画像をポストするようにします。
GASをウェブアプリケーションとして公開し匿名ユーザーを含む誰でもアクセス可能にしておきます。
GAS側の処理としては、
- 絵文字を探す
- 投稿元のチャンネルとユーザー情報(名前とアイコン)を取得する
- 上記情報を使ってチャンネルにPostする
という流れになります。
また、GASでのslackに関する処理はほとんど下記のライブラリでできます(いつもお世話になっております)
Slack BotをGASでいい感じで書くためのライブラリを作った
アクセストークンについて
アクセストークンはLegacy tokenとOAuth Access Tokenの2種類があります。
取得方法についてはそれぞれ下記の記事が詳しいですが、Legacy TokenはすべてにアクセスできてしまうのでOAuth Access Tokenを使って適切に権限を設定するほうがいいと思います。
- Legacy Token
Slack APIのTokenの取得・場所 - OAuth Access Token
Slack API 推奨Tokenについて
なお、今回のソースで使用する権限は下記の3つです。
- Send messages as slamp_gas(chat:write:bot)
- チャンネルに投稿する
- Access the workspace’s emoji(emoji:read)
- 絵文字の一覧を取得する
- Access user’s profile and workspace profile fields(users.profile:read)
- ユーザーのプロフィールを取得する
使い方
元記事の通り、/stamp :custom_emoji:
とタイプするとその絵文字の元画像が投稿されます。
/stamp :まで打ってTABキーで補完してくれる他、/stampまで打って普通に絵文字を選んでもいいです。
ソースとインストール方法
Githubに上げました。
https://github.com/iteduki/slamp_gas