Slackからkintoneへレコード登録する方法 ~AWS Lambda でつなぐ~ 後編

フォローする

それでは、前編に引き続き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 でつなぐ~ 前編

 

 

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

ログインしてコメントを残してください。
Powered by Zendesk