はじめに
ビジネス版の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する。
本記事はLINE WORKS API 2.0を使用しています。
kintoneの設定
kintoneアプリの作成
LINE WORKSのCallbackメッセージに含まれるトーク発言者とトーク内容をkintoneに登録したいと思います。
LINE WORKSのCallbackの詳細は以下のリンクのドキュメントを確認してください。
LINE WORKS Developers | Callback (メッセージの受信)
)
フィールド名 | フィールドタイプ | フィールドコード |
---|---|---|
トーク発言者 | 文字列(1行) | Name |
トーク内容 | 文字列(複数行) | Contents |
作成日時 | 作成日時 | 作成日時 |
フィールド追加後のアプリのフォーム画面は次のとおりです。
APIトークンの生成
今回はkintoneの認証にAPIトークンを利用したいと思います。
認証については以下のリンクのドキュメントを確認してください。
APIトークン認証
生成するAPIトークンはのちほどLambdaのプログラム内で必要になるのでメモしておいてください。
アプリの管理画面から設定タブをクリックし、APIトークンの画面を開きます。
今回はkintoneへレコードを登録したいので、生成ボタンをクリックしてレコード追加にチェックを付けます。
ここで生成されたAPIトークンをメモしておいてください。
その後、「保存」をクリックして「アプリを更新」をクリックします。
これでAPIトークンの生成は完了です。
アプリの更新は忘れがちなので注意してください!
AWSの設定
AWSマネジメントコンソール
からコンソールへログインします。
AWSサービスの検索窓から使用するサービスを検索してください。
Lambda関数の作成
先ほどのAWSサービスから「Lambda」を検索してLambdaの画面を開き、「関数の作成」を選びます。
関数名はわかりやすく「LINEWORKS_kintone」とします。
ここは実際に使用する状況によって適宜変更してください。
Lambda関数のひな型を先に作っておきます。
下の画面が表示されれば大丈夫です。
API Gatewayの設定
先ほどのAWSサービスから「API Gateway」を検索してAPI Gatewayの画面を開き、「APIを作成」をクリックします。
「REST API」の「構築」を選びます。
APIの詳細は「新しいAPI」を選択します。
API名はわかりやすく「LINEWORKS_kintone」とします。
入力後、「APIを作成」をクリックします。
ここは実際に使用する状況によって適宜変更してください。
APIが作成されるので、作成したAPIを選択して「メソッドを作成」をクリックします。
今回はLINE WORKSから受け取ったデータをkintoneへPOSTしたいので、メソッドは「POST」を選びます。
統合タイプには「Lambda関数」を選択します。
そして、Lambdaプロキシ統合の使用にチェックをつけ、関連付けるLambda関数名(LINEWORKS_kintone)を選択し、「メソッドを作成」をクリックします。
次に、作成したAPIのデプロイを行います。
「APIのデプロイ」をクリックします。
デプロイされるステージを選択する画面になるため、過去ステージを設定している場合は任意のステージを選び、新しいステージを作成する場合は「新しいステージ」を選択してステージ名を入力します。
今回は開発用としてdevというステージを作成しています。
Lambda関数プログラムの作成
実際にLambda上で動かすプログラムを作成します。
Lambdaはzipファイルでアップロードできるので、あらかじめローカルで作成しておきzip化したものをアップロードします。
今回はNode.jsでプログラムを書きたいと思います。
kintoneへのPOST部分はnode-fetchモジュールを使用するため、npmでnode-fetchモジュールをインストールしておいてください。
CommonJSで動作させるため、今回はnode-fetchのv2を利用しています。
|
|
次に、次の内容で「index.js」というファイルを作成します。
|
|
作成したindex.jsとnode_modulesを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追加」を選択します。
そして、追加した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に蓄積する」といった使い分けをすることで、お互いのいいとこ取りができますね!
設定は多いですが、しくみはシンプルなのでぜひトライしてみてください!
更新履歴
- 2024年1月4日
LINE WORKS API v1の廃止に伴い、v2の内容に更新しました。
このTipsは、2023年11月版kintoneで動作を確認しています。