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

目次

はじめに

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

フロー型の LINE WORKS と、ストック型の kintone とのコラボレーションです!

概要

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

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

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

本記事は LINE WORKS API 2.0 を使用しています。

kintone の設定

kintone アプリの作成

LINE WORKS の Callback メッセージに含まれるトーク発言者とトーク内容を kintone に登録したいと思います。
LINE WORKS の Callback の詳細は以下のリンクのドキュメントを確認してください。
LINE WORKS Developers | Callback (メッセージの受信) (External link)

フィールド名 フィールドタイプ フィールドコード
トーク発言者 文字列(1行) Name
トーク内容 文字列(複数行) Contents
作成日時 作成日時 作成日時

フィールド追加後のアプリのフォーム画面は次のとおりです。

API トークンの生成

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

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

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

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

AWS の設定

AWSマネジメントコンソール (External link) からコンソールへログインします。
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 を利用しています。

1
npm install node-fetch@2

次に、次の内容で「index.js」というファイルを作成します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/*
 * kintone_LINEWORKS sample program
 * Copyright (c) 2018 Cybozu
 *
 * Licensed under the MIT License
*/
const fetch = require('node-fetch');

// kintone用パラメータ
// ドメイン、アプリID、APIトークンを記述してください
const DOMAIN = '{subdomain}.cybozu.com';
const URL = 'https://' + DOMAIN + '/k/v1/record.json';
const APP_ID = '{APP ID}';
const API_TOKEN = '{API TOKEN}';
const headers = {
  'X-Cybozu-API-Token': API_TOKEN,
  'Content-Type': 'application/json',
};

exports.handler = (event, context) => {
  // eventにLINE WORKSのcallbackデータが入ってる
  const eventData = JSON.parse(event.body);

  // LINE WORKSの発言者とトーク内容をそれぞれ取得する
  const lineuser = eventData.source.userId;
  const linemessage = eventData.content.text;

  // kintoneのJSON形式に当てはめる
  const bodyPost = {
    app: APP_ID,
    record: {
      Name: {
        value: lineuser,
      },
      Contents: {
        value: linemessage,
      },
    },
  };

  const options = {
    method: 'POST',
    headers: headers,
    body: JSON.stringify(bodyPost),
  };
  // レコードをPOST
  fetch(URL, options).then((error, response, body) => {
    context.done(null, {text: 'kintone POST success!'});
  });
};

作成した 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 (External link) を開きます。
Developer Console から Bot を開いて、登録を選択します。

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

また、Bot ポリシーの「複数人のトークルームに招待可」を有効にすると、複数人のメッセージのやりとりをすべて kintone へ登録できます。

Bot の適用

LINE WORKS の管理者アカウントで LINE WORKS Admin (External link) を開きます。
左のメニューの「サービス」から「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 のドキュメント (External link) を確認してください。

おわりに

LINE WORKS から Callback で受け取ったデータを AWS Lambda で整形して kintone に登録するしくみの紹介でした。
「やりとりを LINE WORKS で行い、履歴を kintone に蓄積する」といった使い分けをすることで、お互いのいいとこ取りができますね!

設定は多いですが、しくみはシンプルなのでぜひトライしてみてください!

更新履歴

  • 2024 年 1 月 4 日
    LINE WORKS API v1 の廃止に伴い、v2 の内容に更新しました。
information

この Tips は、2023 年 11 月版 kintone で動作を確認しています。