https://github.com/seratch/kenall-for-slack
ケンオール API (kenall.jp) を Slack から使えるようにするアプリ
https://github.com/seratch/kenall-for-slack
Last synced: about 1 year ago
JSON representation
ケンオール API (kenall.jp) を Slack から使えるようにするアプリ
- Host: GitHub
- URL: https://github.com/seratch/kenall-for-slack
- Owner: seratch
- License: mit
- Created: 2021-02-15T07:04:16.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2021-02-19T06:56:07.000Z (over 5 years ago)
- Last Synced: 2025-03-24T04:22:33.823Z (over 1 year ago)
- Language: Python
- Homepage: https://kenall.jp/
- Size: 33.2 KB
- Stars: 9
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## ケンオール API を Slack から使えるようにするアプリ(非公式)
この Slack アプリは、[ケンオール API](https://kenall.jp/) を Slack から呼び出せるようにする実装例を示すためのサンプルアプリです。
### デモ

### とりあえず動かしてみる
ケンオールの API キーを発行、Slack アプリの設定を https://api.slack.com/apps で行った後、以下で起動できます。
#### Slack アプリ初期設定
Slack アプリの設定でやることは
* **Features** > **OAuth & Permissions** で Bot Token Scopes に `commands` scope を追加
* **Settings** > **Basic Information** の **Signing Secret** を `SLACK_SIGNING_SECRET` として環境変数に設定
* **Settings** > **Install App** からインストールし、`xoxb-` ではじまる **Bot User OAuth Access Token** を `SLACK_BOT_TOKEN` として環境変数に設定
が最低限の設定です。後ほどスラッシュコマンド、ショートカット・モーダルの有効化をしましょう。
#### ケンオール設定
アカウントを作成して、トライアルの状態で API キーを取得するだけです。
#### Flask やソケットモードを使ったアプリ設定
この例は Flask を使っていますが、すでに[ソケットモード](https://api.slack.com/socket-mode)についてご存知なら、そちらの方が楽だと思います。ソケットモードで起動する場合は、[こちらの記事](https://qiita.com/seratch/items/1a460c08c3e245b56441)の Python の例を参考に `python socket_mode_app.py` で起動してみてください。
```bash
git clone git@github.com:seratch/kenall-for-slack.git
cd kenall-for-slack
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -r requirements.txt
export SLACK_SIGNING_SECRET=
export SLACK_BOT_TOKEN=
export KENALL_API_KEY=
FLASK_APP=flask_app.py FLASK_ENV=development flask run -p 3000
```
別のターミナルで `ngrok http 3000` とすると公開 URL を発行できます。https://api.slack.com/apps のアプリ設定で Request URL に `http://{あなたのサブドメイン}.ngrok.io/slack/events` を設定してください。
#### スラッシュコマンド、ショートカット・モーダルを有効化
Flask で動かしているなら、確定したエンドポイントの URL を Request URL として **Slash Commands** と **Interactivity & Shortcuts** の設定画面に設定してください。ソケットモードを使っているなら URL の設定は不要です。

スラッシュコマンドは `/kenall`、グローバルショートカットの Callback ID は `kenall-search` とすると、このサンプルアプリのコードそのままで動作するでしょう。
### Heroku で動かす
[](https://heroku.com/deploy)
または
```bash
heroku create
heroku config:set SLACK_SIGNING_SECRET=$SLACK_SIGNING_SECRET
heroku config:set SLACK_BOT_TOKEN=$SLACK_BOT_TOKEN
heroku config:set KENALL_API_KEY=$KENALL_API_KEY
git add . -v
git commit -m'ケンオールでKEN_ALLに革命を。'
git push heroku main
```
Heroku アプリが起動したら https://api.slack.com/apps のアプリ設定へ行き、**Interactivity & Shortcuts** と **Slash Commands** の **Request URL** に `https://{あなたのサブドメイン}.herokuapp.com/slack/events` を設定してください。
### Docker で動かす
Flask + Gunicorn の雛形の Dockerfile を置いてありますが、自由に変更してください。
```bash
docker build . -t your-repo/kenall-for-slack
docker run \
-e SLACK_SIGNING_SECRET=$SLACK_SIGNING_SECRET \
-e SLACK_BOT_TOKEN=$SLACK_BOT_TOKEN \
-e KENALL_API_KEY=$KENALL_API_KEY \
-e PORT=3000 \
-p 3000:3000 \
-it your-repo/kenall-for-slack
```
### AWS Lambda で動かす
以下は python-lambda で Lambda を作って API Gateway は管理コンソールや aws-cli から手動で作る手順です。
```bash
# Lambda から Lambda を起動できる権限が必要です
export policy_arn=`aws iam create-policy --policy-name aws-lambda-invocation-policy --policy-document '{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["lambda:InvokeFunction", "lambda:GetFunction"],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:*"
}
]
}' | jq .Policy.Arn | tr -d \"`
aws iam create-role --role-name aws-lambda-invocation-role --assume-role-policy-document '{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "Service": ["lambda.amazonaws.com"] },
"Action": ["sts:AssumeRole"]
}
]
}
'
aws iam attach-role-policy --role-name aws-lambda-invocation-role --policy-arn $policy_arn
# 必要な環境変数をあらかじめ設定しておきます
export SLACK_SIGNING_SECRET=
export SLACK_BOT_TOKEN=
export KENALL_API_KEY=
# Lambda のときはこれを忘れずに
export SLACK_PROCESS_BEFORE_RESPONSE=1
# デプロイに python-lambda というツールを使用します(アプリはこれに依存しません)
pip install python-lambda
lambda deploy \
--config-file aws_lambda_config.yaml \
--requirements requirements-aws.txt
```
python-lambda は非常に高速なデプロイができるツールなので、紹介していますが、API Gateway も含め一元管理したい場合は他のソリューションを使ってください。
### ライセンス
The MIT License