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で動作を確認しています。