カテゴリー内の他の記事

LINE WORKSのトークをkintoneに保存する方法

フォローする

(著者:サイボウズ 大竹 遼)

Index

はじめに

ビジネス版のLINE「LINE WORKS」とkintoneを連携させます。
今回、kintoneはLINE WORKSのトーク情報を保存するデータベースとして利用します。

image1.png

一般的にフロー型と呼ばれるLINE WORKSと、ストック型と呼ばれるkintoneのコラボレーションです!

概要

今回はLINE WORKSとkintoneの間にAWSを使います!

image2.png

処理の流れは以下のようになります。

  1. LINE WORKSのBotのCallbackによって、Amazon API Gatewayを動かす
  2. AWS LambdaでLINE WORKSの情報を取得する
  3. LINE WORKSの情報をkintoneへPOSTする

kintoneの設定

kintoneアプリの作成

LINE WORKSのCallbackメッセージに含まれるトーク発言者とトーク内容をkintoneに登録したいと思います。
LINE WORKSのCallbackの詳細はこちら(外部サイト)をご確認ください。

フィールド名 フィールドタイプ フィールドコード

トーク発言者

文字列(1行)

Name

トーク内容

文字列(複数行)

Contents

作成日時

作成日時

作成日時

アプリのフォーム画面はこちらです。

image14.png

APIトークンの生成

今回はkintoneの認証にAPIトークンを利用したいと思います。認証についてはこちらをご覧ください。 
生成するAPIトークンは後ほどLambdaのプログラム内で必要になるのでメモしておいてください。

アプリの管理画面から設定タブをクリックし、APIトークンの画面を開きます。

image3.png

今回はkintoneへのレコード新規登録を行いたいので、生成ボタンをクリックしてレコード追加にチェックを付けます。
(ここで生成されたAPIトークンをメモしておいてください)
image4.png

その後、「保存」をクリックして「アプリを更新」をクリックします。これでAPIトークンの生成は完了です。
※アプリの更新は忘れがちなので注意してください!

AWSの設定

AWSマネジメントコンソール からコンソールへログインします。
AWSサービスの検索窓から使用するサービスを検索してください。
image15.png

Lambda関数の作成

先ほどのAWSサービスから「Lambda」を検索してLambdaの画面を開き、「関数の作成」を選びます。
関数名はわかりやすく「LINEWORKS_kintone」とし、ロールは標準のbasic_executionにします。
(ここは実際に使用する状況によって適宜変更してください。)
image6.png

 

Lambda関数の雛形を先に作っておきます。下の画面が表示されれば大丈夫です。
image7.png

API Gatewayの設定

先ほどのAWSサービスから「API Gateway」を検索してAPI Gatewayの画面を開き、「APIの作成」を選びます。
API名はわかりやすく「LINEWORKS_kintone」とします。
(ここは実際に使用する状況によって適宜変更してください。)
image8.png


APIが作成されるので、作成したAPIを選択して上部のアクションから「メソッドの作成」を選びます。
image9.png

 

今回はLINE WORKSから受け取ったデータをkintoneへPOSTしたいので、メソッドはPOSTを選びます。
そして、Lambdaプロキシ統合の使用にチェックをつけ、関連付けるLambda関数名(LINEWORKS_kintone)を入力します。
image10.png

 

次に、作成したAPIのデプロイを行います。
上部のアクションからAPIのデプロイを選択します。
image11.png

 

デプロイされるステージを選択する画面になるため、過去ステージを設定している場合はそれを選んでいただき、
新しいステージを作成する場合は「新しいステージ」を選択してステージ名を入力します。
(今回は開発用としてdevというステージを作成しています。)
image12.png

Lambda関数プログラムの作成

実際にLambda上で動かすプログラムを作成します。
Lambdaはzipファイルでアップロードすることができるので、あらかじめローカルで作成しておきzip化したものをアップロードします。

今回はNode.jsでプログラムを書きたいと思います。kintoneへのPOST部分はrequestモジュールを使用するため、
npmでrequestモジュールをインストールしておいてください。

・index.js

作成したindex.jsとnode_moduleをzip化してLambdaへアップロードします。
image13.png

API GatewayのURL取得

Lambda上のAPI GatewayトリガーからURLを取得します。
このURLにアクセスするとLambda関数が実行される仕組みとなっています。
image16.png

LINE WORKSのBotの設定

次にLINE WORKS側でBotの作成、および適用をします。

Botの作成

LINE WORKSの管理者アカウントでLINE WORKS Developer Consoleを開きます。
Developer ConsoleからBotを開いて、登録を選択します。
image17.png

 

「Bot名」、「説明」を入力します。
「Callback URL」のOnにチェックをつけ、URLに先ほどAPI GatewayのURLを入力します。

また、Botポリシーの「複数人のトークルームに招待可」にチェックをつけることで、
複数人のメッセージのやりとりを全てkintoneへ登録できるようになります。
image18.png

Botの適用

LINE WORKSの管理者アカウントでLINE WORKS Adminを開きます。
上部の「サービス」から「Bot」を開き、「追加」を選択します。
image19.png

 

先ほど作成したBotが一覧に表示されるので、チェックを付けて「追加」を選択します。
image20.png

 

そして、追加したBotを選択し、公開にチェックを付けて保存します。
image21.png

これでBotの適用は完了です。

動作確認

LINE WORKSのトークルームに作成したBotを招待します。
あとはBotを気にせずトークをするだけです。
image26.png

 

トーク発言日時(レコード登録日)、トーク発言者、トーク内容がkintoneに登録されています!
image24.png

 

ちなみに、
kintoneの文字列(複数行)フィールドを利用することで、きちんと改行もされています。
image25.png

 

発展

今回は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で確認したものになります。

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

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

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