SlackのSlash Commandsをとりあえず実装してみる
すみさきです。
最近気が緩みすぎてるのかSAN値が減りすぎてやる気が起きないのか、いろんなことが進んでないです。
というわけで息抜き回。
SlackのSlash Commandsを簡単に使ってみます。
前提
今回はAWSを使用しています。
あと、Serverless Frameworkも使います。
もちろんSlackのアカウントも必要です。
処理部分
まずはSlackからのリクエストを受け付ける部分を作りましょう。
新しいサービスを作成します
sls create -t aws-python3 -p SlackAppService
中にserverless.ymlというファイルがあるので以下のように編集しましょう
service: SlackAppService provider: name: aws runtime: python3.6 stage: dev region: ap-northeast-1 functions: hello: handler: handler.hello events: - http: path: helloworld method: POST
(例では配置先を東京リージョンにしてますよ)
次はhandler.pyを以下のように書き換えます
import json from urllib.parse import parse_qsl def hello(event, context): # Slackからのリクエストをパースする params = dict(parse_qsl(event['body'])) # レスポンスを作成 res_body = {'text': 'hello <@{0}>'.format(params['user_id'])} response = {"statusCode": 200, "body": json.dumps(res_body)} return response
Slackから送られてくるPOSTリクエストの中身は、x-www-urlencodedなので、parse_qslでパースします。
parse_qsで直接dictにしても良いのですが、valueが配列になってしまうので・・・
今回は使っていませんが、使用したコマンドやパラメータを取りたい場合は、commandやtextの中に入っています。
詳しくはドキュメントを見るべし。
ソースが書けたらデプロイしましょう
sls deploy
Slash Commandsの作成
https://api.slack.com/appsにアクセスして、「Create New App」をクリック。
画面の指示に従ってアプリ名と開発ワークスペースを登録する。
アプリが作成できたら、FeaturesのSlash Commandsを選択し、「Create New Command」をクリック
コマンド名、リクエスト先、Slack上で表示されるツールヒントなどを入力して登録しましょう。
全部作成できたら、SettingsのInstall Appから、自分のワークスペースにインストールすればOK
結果
こんな感じになるはず (コマンドをechoするわけではないのでちょっとわかりづらいっすけどねー)
AWS Lambdaや他のバックエンドに命令を送ることが出来るようになりますよ。
やったね。