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開発者ライセンス(開発環境)
この機会に、ぜひ開発者ライセンスを申し込みして、連携を始めてみてください。