先日、絵文字生成を行なうコマンドとサーバを作成したため、それに合わせて slack のコマンドを作成してみました。軽いツールの説明と導入手順を書いていきます。
ツール説明
絵文字作成ツール
まず、絵文字作成ツールです。
https://github.com/komem3/wordimg
入力したテキストから絵文字を作成してくれるコマンドラインツールが欲しいと思い作成しました。 Go で作ったのでコマンドとサーバのどちらも作成してみました。サーバの URL は https://wordimg-otho5yxlgq-an.a.run.app/wordimg です。絵文字ジェネレーター のコマンドライン版みたいのを作りたいなというモチベーションで作成しましたが、あちらの完成度が高いのでまだまだ改良の余地があるなと感じております。
ちなみに、https://wordimg-otho5yxlgq-an.a.run.app/wordimg?text=helloworld
というURLを見ると以下のようになります。更新するたびに違う画像が表示されるはずです。
Slackbot
こちは先程の slackbot 版です。こちらも Go で書かれています。
https://github.com/komem3/wordimg/tree/main/slackbot
slack のコマンドを受けとり、その引数の絵文字を生成してくれる slackbot です。イメージ的には以下のような感じ。
/wordimg hello word
やっていることは文字をクエリとしてた URL をslack に返しているだけです。コード見ると slack の認証関係でぐちゃぐちゃやっていますが、基本的にはそれだけです。
Slackbot 導入手順
せっかく作ったのでこの bot の導入手順を記していきます。この子は cloud function で動かすことを想定して作成したため、必要なものは以下になります。
- GCP プロジェクト
- gcloud sdk
0. コードのダウンロード
コードをクローンなどでローカルにダウンロードを行ない、slackbot
ディレクトリに入ってください。
1. コードのデプロイ
スクリプトを実行し、自身の GCP プロジェクトにコードをデプロイして下さい。
./deploy.sh $your_projectID
2. 環境変数の設定
デプロイした関数の環境変数の「URL」に https://wordimg-otho5yxlgq-an.a.run.app/wordimg
を設定してください。自身の環境に絵文字作成ツールをデプロイしている場合は、そちらの URL を指定してください。(ないと思うけど)
3. Slack アプリを新規作成
https://api.slack.com/apps こちらから、Create New App
で新規作成ができます。
4. コマンドを登録
以下4つのコマンドを登録していきます。URLは先程デプロイした Cloud Function の URL になります。Cloud Function の URL は Cloud Function の詳細のトリガータブから見ることができます。
- /wordimg
- /wordimg1
- /wordimg2
- /wordimg3
5. Slack への権限追加
ボットにチャットへの書き込み権限を与えます。こいつを与えないと slack に書きこめません。
6. Slack にインストール
その他、Bot の名前を入力したりアイコン付けたりする必要がありますが、 Bot 作成に必要な項目を全て入力すると Install App
によってワークスペースにアプリがインストールできます。
7. シークレットマネージャーに追加
インストールを行なうと、API トークンが発行されるため、これと、Basic Information
から見れる Signing Secret
をシークレットマネージャーに追加します。
以下の名前でそれぞれ追加してください。
- SLACK_SECRET :
Signing Secret
の値 - SLACK_APIKEY : 発行された API トークンの値
8. Cloud Function のサービスアカウントに権限付与
デフォルトの Cloud Function のサービスアカウントはシークレットへのアクセス権を持っていないため、権限を付与してシークレットにアクセスできるようにする必要があります。
サービスアカウントの名前は プロジェクトID@appspot.gserviceaccount.com
のような名前のはずです。こいつに Secret Manager Secret Accessor
権限(日本語だとシークレットアクセッサー
だったはず)を与えてください。
9. 好きなチャンネルに追加
適当なチャンネルに追加してください。なかなか画像がでかくていうざいので、まずは Bot に DM で色々試して雰囲気を掴んでもらうといいかもです。
総括
- Go は絵文字も作れてすごい。(めっちゃ作りにくかったけど)
- 512*512 の画像はでかくてうざい