記事内で利用しているライブラリ「request」は、非推奨(deprecated)になりました。
HTTP リクエストができる他のライブラリ(axios など)や、https.requst に書き換えることをおすすめします。
それでは、前編に引き続きSlackとkintoneを連携させるためのAWSの設定をおこなっていきたいと思います。
Amazon Lambda
まずは、お馴染みAWS Lambdaです。
アップロード用Zipファイルの作成
今回、Lambdaでは、Javascipt(Node.js)で作成したプログラム一式をZip化してLambdaにアップロードしていきます。
方法は以下の記事とほぼ同様なので、以下の記事を参考にしましょう。
今回は以下のコードを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 の Integration RequestのMapping Templates に Content-Type を指定しておく必要がありますので、その設定をします。
Integration Requestの設定から、「Mapping Templates」を開きapplication/x-www-form-urlencoded
に対して、Mapping Templateで以下を指定します。
$input.json('$')
参考: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さんからお返事がきました。最後に、kintoneアプリを確認してみます。
無事Slackからレコード登録ができました!
まとめ
今回は、Slackとkintoneを連携させるためにAWSをふんだんに使いました。Slack以外でも、Webhookが利用できるサービスであれば同様の連携ができるかと思います。
色々なサービスとkintoneを組み合わせて更に便利な業務システムを作ってみましょう!
最後にここまでお読みいただき、kintoneを触ってみたいけど触れる環境を持っていない方に朗報です。
本サイトdeveloper networkでは、1年間無償のkintone developerライセンスをはじめとして以下の特典を用意しています。
★developer network 登録者特典★
- 5ユーザー、1年間無償のkintone開発者ライセンス(申込アカウントごとに1つの環境)を申し込むことができます。
- コミュニティに投稿やコメントしたり、Tips に質問できます。
- API のアップデート情報の通知を受け取ることができます。
- Tipsやサンプルの動きを確認できるデモサイトを利用することができます。
- HTTP Client Tool for kintoneを利用することができます。
まだ登録されてない方はこちらよりご登録ください!
<<Slackからkintoneへレコード登録する方法 ~AWS Lambda でつなぐ~ 前編
記事に関するフィードバック
記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。