記事内で利用しているライブラリ「request」は、非推奨(deprecated)になりました。
HTTP リクエストができる他のライブラリ(axios など)や、https.requst に書き換えることをおすすめします。
(著者:サイボウズ 大竹 遼)
Index
はじめに
ビジネス版のLINE「LINE WORKS」とkintoneを連携させます。
今回、kintoneはLINE WORKSのトーク情報を保存するデータベースとして利用します。
一般的に フロー型 と呼ばれるLINE WORKSと、 ストック型 と呼ばれるkintoneのコラボレーションです!
概要
今回はLINE WORKSとkintoneの間にAWSを使います!
処理の流れは以下のようになります。
- LINE WORKSのBotのCallbackによって、Amazon API Gatewayを動かす
- AWS LambdaでLINE WORKSの情報を取得する
- LINE WORKSの情報をkintoneへPOSTする
kintoneの設定
kintoneアプリの作成
LINE WORKSのCallbackメッセージに含まれるトーク発言者とトーク内容をkintoneに登録したいと思います。
LINE WORKSのCallbackの詳細はこちら(外部サイト)をご確認ください。
フィールド名 | フィールドタイプ | フィールドコード |
---|---|---|
トーク発言者 |
文字列(1行) |
Name |
トーク内容 |
文字列(複数行) |
Contents |
作成日時 |
作成日時 |
作成日時 |
アプリのフォーム画面はこちらです。
APIトークンの生成
今回はkintoneの認証にAPIトークンを利用したいと思います。認証についてはこちらをご覧ください。
生成するAPIトークンは後ほどLambdaのプログラム内で必要になるのでメモしておいてください。
アプリの管理画面から設定タブをクリックし、APIトークンの画面を開きます。
今回はkintoneへのレコード新規登録を行いたいので、生成ボタンをクリックしてレコード追加にチェックを付けます。
(ここで生成されたAPIトークンをメモしておいてください)
その後、「保存」をクリックして「アプリを更新」をクリックします。これでAPIトークンの生成は完了です。
※アプリの更新は忘れがちなので注意してください!
AWSの設定
AWSマネジメントコンソール からコンソールへログインします。
AWSサービスの検索窓から使用するサービスを検索してください。
Lambda関数の作成
先ほどのAWSサービスから「Lambda」を検索してLambdaの画面を開き、「関数の作成」を選びます。
関数名はわかりやすく「LINEWORKS_kintone」とし、ロールは標準のbasic_executionにします。
(ここは実際に使用する状況によって適宜変更してください。)
Lambda関数の雛形を先に作っておきます。下の画面が表示されれば大丈夫です。
API Gatewayの設定
先ほどのAWSサービスから「API Gateway」を検索してAPI Gatewayの画面を開き、「APIの作成」を選びます。
API名はわかりやすく「LINEWORKS_kintone」とします。
(ここは実際に使用する状況によって適宜変更してください。)
APIが作成されるので、作成したAPIを選択して上部のアクションから「メソッドの作成」を選びます。
今回はLINE WORKSから受け取ったデータをkintoneへPOSTしたいので、メソッドはPOSTを選びます。
そして、Lambdaプロキシ統合の使用にチェックをつけ、関連付けるLambda関数名(LINEWORKS_kintone)を入力します。
次に、作成したAPIのデプロイを行います。
上部のアクションからAPIのデプロイを選択します。
デプロイされるステージを選択する画面になるため、過去ステージを設定している場合はそれを選んでいただき、
新しいステージを作成する場合は「新しいステージ」を選択してステージ名を入力します。
(今回は開発用としてdevというステージを作成しています。)
Lambda関数プログラムの作成
実際にLambda上で動かすプログラムを作成します。
Lambdaはzipファイルでアップロードすることができるので、あらかじめローカルで作成しておきzip化したものをアップロードします。
今回はNode.jsでプログラムを書きたいと思います。kintoneへのPOST部分はrequestモジュールを使用するため、
npmでrequestモジュールをインストールしておいてください。
・index.js
作成したindex.jsとnode_moduleをzip化してLambdaへアップロードします。
API GatewayのURL取得
Lambda上のAPI GatewayトリガーからURLを取得します。
このURLにアクセスするとLambda関数が実行される仕組みとなっています。
LINE WORKSのBotの設定
次にLINE WORKS側でBotの作成、および適用をします。
Botの作成
LINE WORKSの管理者アカウントでLINE WORKS Developer Consoleを開きます。
Developer ConsoleからBotを開いて、登録を選択します。
「Bot名」、「説明」を入力します。
「Callback URL」のOnにチェックをつけ、URLに先ほどAPI GatewayのURLを入力します。
また、Botポリシーの「複数人のトークルームに招待可」にチェックをつけることで、
複数人のメッセージのやりとりを全てkintoneへ登録できるようになります。
Botの適用
LINE WORKSの管理者アカウントでLINE WORKS Adminを開きます。
上部の「サービス」から「Bot」を開き、「追加」を選択します。
先ほど作成したBotが一覧に表示されるので、チェックを付けて「追加」を選択します。
そして、追加したBotを選択し、公開にチェックを付けて保存します。
これでBotの適用は完了です。
動作確認
LINE WORKSのトークルームに作成したBotを招待します。
あとはBotを気にせずトークをするだけです。
トーク発言日時(レコード登録日)、トーク発言者、トーク内容がkintoneに登録されています!
ちなみに、
kintoneの文字列(複数行)フィールドを利用することで、きちんと改行もされています。
発展
今回はLINE WORKS → kintoneの一方通行の連携でしたが、
「トークの内容をもとにkintone上のデータをGETして、LINE WORKSにPOSTする」といういわゆるチャットBotの連携も可能となります。
LINE WORKSにトークを送信するためにはサーバーAPIの設定が必要です。
サーバーAPIを利用するためには、
- サーバーの固定IPアドレスを利用したトークン認証
- OAuth認証を利用したトークン認証
のどちらかをサーバー上で設定する必要があります。
詳しくはLINE WORKSのドキュメント(外部サイト)をご覧ください。
おわりに
LINE WORKSからCallbackで受け取ったデータをAWS Lambdaで整形してkintoneに登録する仕組みの紹介でした。
やりとりはLINE WORKS、履歴はkintoneと使い分けることでお互いのいいとこ取りができますね!
設定は多いですが、仕組みはシンプルなのでぜひトライしてみてください!
このTipsは、2018年5月版 kintoneで確認したものになります。
記事に関するフィードバック
記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。