Slack から kintone へレコード登録する方法 ~AWS Lambda でつなぐ~ 後編
警告
記事内で利用しているライブラリ「
request
」は、非推奨(deprecated)になりました。
HTTP リクエストができる他のライブラリ(
axios
など)や、
https.requst
に書き換えることをおすすめします。
それでは、 前編 に引き続き Slack と kintone を連携させるための AWS の設定をしていきたいと思います。
Amazon Lambda の設定
まずは、お馴染み AWS Lambda です。
アップロード用 Zip ファイルの作成
今回、Lambda では、Javascipt(Node.js)で作成したプログラム一式を Zip 化して Lambda にアップロードしていきます。
方法は以下の記事とほぼ同様なので、以下の記事を参考にしましょう。
Qiita:
kintone APIを使ってスペースを有効活用する(サーバーレスで)
今回は以下のコードを index.js として保存します。
- kintone 環境のサブドメイン、アプリ ID、API トークンは環境に合わせて変更してください。
- Slack で「ToDo」をトリガーワードとする想定です。トリガーワードによって 14 行目の文字列を変更してください。
|
|
index.js を作成し、Node.js の request モジュールをインストールしたら以下のコマンドで zip ファイルを作成します。
|
|
zip ファイル「slackin.zip」を作成したら Lambda の設定に移ります。
Lambda の設定
AWS のコンソールにログイン後、Lambda を選択し「Create a Lambda fuction」をクリックします。
blueprint は指定せず「skip」を押します。
Configure function は以下のように設定しました。
大項目 | 中項目 | 設定値 |
---|---|---|
Configure function |
Name | slackinSample |
Description | This is a sample. | |
Runtime | Node.js | |
Lambda function code | Code entry type | Upload a Zip file にて先ほど作成した「slackin.zip」をアップロードします。 |
Lambda function handler and role | Handler | index.handler |
Role | Basic execution role より IAM ロールを新規に作成 | |
Advanced settings | Memory(MB) | 128 |
Timeout | 0min 3sec |
これで、設定したら「Next」>「Createfunction」を押します。
Lambda function の作成はこれで完了です。
この段階でテストしてもエラーがでるかと思いますが、気にせず次に進みます。
Amazon API Gateway の設定
AWS のコンソール画面で「Amazon API Gateway」を選択後、「Create API」より API を作成します。
今回は以下のように設定しました。
項目 | 設定値 |
---|---|
API name | skackinAPI |
Clone from API | Do not clone from existing API |
Description | sample API |
「Create API」ボタンを押して画面遷移後、「Create Resource」より以下の設定でリソースを作成しました。
項目 | 設定値 |
---|---|
Resource Name | slackin |
Resource Path | slackin |
次に、セットアップ画面で以下を設定します。今回は Slack から POST されるので「Create Method」より、「POST」を作成します。
設定情報として以下を設定します。
Integration type | Lambda Function |
---|---|
Lambda Region | Lambda Function がある任意の region |
Lambda Function | slackinSample |
「Save」を押すと、Permission 設定が出るので「OK」を押します。
Slack からの Outgoing Webhooks をトリガーにする場合、API Gateway の設定で Content-Type を指定しておく必要があります。
Integration Request の設定から、「Mapping Templates」を開き application/x-www-form-urlencoded
に対して、Mapping Template で以下を指定します。
|
|
参考: API Gateway Mapping Template Reference
次にこの API をデプロイします。「Deploy API」ボタンを押します。今回は以下の設定でデプロイしました。
項目 | 設定値 |
---|---|
Deployment stage | New Stage |
Stage name | slackinstage |
Stage description | My first stage |
Deployment description | This is my first deploy |
デプロイしたら、Invoke URL をコピーしておきます。
Slack Outgoing Webhooks の設定
最後に、Slack 側の設定をしていきます。あと一息です。
ページ左上の Slack ドメイン名をクリックし、「Customize Slack」を押します。
「Configure Apps」で遷移後、ヘッダーの検索窓より「Outgoing WebHooks」をインストールします。
インストール後、次の設定を入力します。
項目 | 設定値 |
---|---|
Channel | 任意のチャンネル(今回は kintone) |
Trigger Word(s) | ToDo |
URL | API GateWay で作成したURL |
Token |
初期値のまま |
Descriptive Label | 任意 |
Customize Name | 初期値のまま |
Customize Icon | イカしたアイコン |
これで、設定は完了です!
試してみよう
それではさっそくためしてみましょう!
設定したトリガーワード「ToDo」に続けて、タイトルとなる文字を指定します。
また今回のサンプルでは「+」を区切り文字にすると詳細を設定できるので、以下のように呟いてみました。
しばらく待つと BOT さんからお返事がきました。
BOT さんからお返事がきました。最後に、kintone アプリを確認してみます。
無事 Slack からレコード登録ができました!
まとめ
今回は、Slack と kintone を連携させるために AWS をふんだんに使いました。
Slack 以外でも、Webhook が利用できるサービスなら同様の連携ができるかと思います。
いろいろなサービスと kintone を組み合わせてさらに便利な業務システムを作ってみましょう!
最後にここまでお読みいただき、kintone を触ってみたいけど触れる環境を持っていない方に朗報です。
本サイト cybozu developer network では、1 年間無償の kintone developer ライセンスを申し込みできます。
kintone 開発者ライセンス(開発環境)
この機会に、ぜひ開発者ライセンスを申し込みして、連携を始めてみてください。