ワークスペースを作ったので、Slack Appを作成します。今度は、Webブラウザから「https://api.slack.com/」にアクセスします。開いたページの中央にある「Start Building」ボタンをクリックします(図12)。
「Create a Slack App」のダイアログが開いたら、「App Name」に任意のアプリケーション名(ここでは「Important Message」)を入力し、「Development Slack Workspace」のプルダウンメニューからチーム名(ここでは「シェルスクリプトマガジン」)を選んで「Create App」ボタンをクリックします(図13)。
「Basic Information」ページに切り替わったら、下にスクロールして「Install your app to your workspace」をクリックします(図14)。
「permission scope」リンクをクリックします(図15)。
下にスクロールして「Scopes」の「Select Permission Scopes」でSlack Appが動作する範囲を選択します(図16)。メールの受信メッセージを転送するだけなので「chat:write:bot」を選んで「Save Changes」ボタンをクリックします。上部に「Success!」と表示されたら、範囲指定完了です。
スクロールで上に戻って「Install App to Workspace」ボタンをクリックします(図17)。
Slack Appからできることが表示されます(図18)。「許可する」ボタンをクリックします。
「OAuth Access Token」に認証アクセス用のトークンが表示されるので、「Copy」ボタンをクリックしてクリップボードにコピーしてテストファイルなどにペーストして保存しておきます(図19)。
実際にメッセージを送信できるかどうかを確認します。次のURLにアクセスすると、メッセージが送信されます。
1 |
https://slack.com/api/chat.postMessage?token=トークン&channel=チャンネル&text=メッセージ |
なお、日本語のチャンネル名やメッセージの場合、URLエンコードしなくてはいけません。そこで、URLエンコードするPythonプログラムで日本語名のチャネルに日本語のメッセージを送信してみます。チャンネル名はプロジェクト名と同じなので「シェルスクリプト連載」、日本語のメッセージは「こんにちは」にします。「トークン」は、自分で作成したSlack Appの認証アクセス用のトークンに変更してください。
1 2 3 |
$ channel_urlencoding=$(echo "シェルスクリプト連載" | python3 -c "import sys, urllib.parse; print (urllib.parse.quote(sys.stdin.read().rstrip()));") $ message_urlencoding=$(echo "こんにちは" | python3 -c "import sys, urllib.parse; print (urllib.parse.quote(sys.stdin.read().rstrip()));") $ curl "https://slack.com/api/chat.postMessage?token=トークン&channel={channel_urlencoding}&text=${message_urlencoding}" |
この三つのコマンドを実行すると、図20のように「こんにちは」のメッセージが表示されます。