カテゴリー内の他の記事

LINE Clovaとkintoneを使って在庫管理をしよう!

フォローする

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

[kintone環境をお持ちでない方へ]
developer network(当サイト) のメンバー登録をした後、1年間無料の開発者向けライセンスを使えます。

[LINE Developersアカウントをお持ちでない方へ]
LINE Developersサイトよりアカウント登録してください。

Index

概要

LINEが開発したAIアシスタント Clova とkintoneを使って在庫管理を行います。
Clovaを使って対話形式に備品の在庫状況のやりとりを行い、kintoneへ在庫状況のレコードを登録します。

また、LINEのMessaging API を利用して LINE Bot からメッセージを送信する機能も合わせて作成しています。

flow2.png

LINE Clova とは

Clova WAVEやClova Friendsなどに搭載されたAIアシスタントです。
「スキル」と呼ばれる機能を開発することで、オリジナルの機能を追加させることができます。詳しくは Clova Developer Centerサイト をご覧ください。

完成イメージ

demo1.png

 

kintoneの設定

kintoneアプリの作成

kintoneへ登録する「備品名」と「場所」のフィールドを用意します。

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

備品名

文字列(1行)

Name

場所

文字列(1行)

Area

作成日時

作成日時

作成日時

作成したアプリのフォーム画面がこちらです。

app.png

APIトークンの生成

kintoneの認証にAPIトークンを利用します。認証についてはこちらをご覧ください。 

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

image3.png

今回はkintoneへのレコード新規登録を行いたいので、生成ボタンをクリックしてレコード追加にチェックを付けます。
(生成したAPIトークンはのちほど作成するLambda関数内で利用するため、メモしておいてください)
image4.png

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

AWSの設定

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

Lambda関数の作成

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

また、ランタイムの部分で Node.js 8.10 を選択してください。
(コード内で利用している async/await はNode.jsのバージョンが7.6以上でないと動きません)
lambda1.png

関数の作成をクリックすると、Lambda関数の雛形が作成されます。

API Gatewayの設定

次に、API Gatewayの設定をします。左側のトリガーの追加から「API Gateway」を選択してください。

API Gatewayの設定にて、

  • API:「新規のAPIの作成」
  • セキュリティ:「オープン」

を選択してください。(この部分はご自身の環境に合わせて変更してください。今回は簡単な設定にしています)

lambda2.png

追加をクリックしたあと右上の保存をクリックすると APIエンドポイント というURLが生成されます。
こちらはのちほどClovaの設定で利用するため、メモをしておいてください。

lambda3.png

Clova/Botの設定

LINE側の開発にはいくつか準備が必要になります。

  • LINE Developersアカウントの取得
  • プロバイダーの作成
  • 開発したいプロダクトのチャネル作成
  • (Bot) スキルチャネルの作成
  • (Bot) アクセストークンの生成
  • (Clova) 基本設定
  • (Clova) 対話モデルの設定

※ プロバイダー:チャネルにアプリを提供する個人または組織
※ チャネル:LINE Developersコンソールで作成するアカウント

LINE Developers アカウントの用意

Clovaスキルの開発、及びLINE Bot の作成にはLINE Developers サイトでLINE Developersアカウントを取得する必要があります。
DevelopersアカウントはLINEアカウントで登録ができます。

ログイン後、上記サイトより開発するプロダクトを選び、開発をしていきます。
今回はClovaとMessaging API を開発します。

LINEBot.png

LINE Botの作成

LINEへメッセージを送信する場合、送信元となるBotを作成する必要があります。
Botも連携させる場合、Clovaスキルの作成より先にこちらの設定を行う方が、Clovaスキル側の設定がスムーズに進められます。

プロダクト一覧から Messaging API を選択し、手順に従って、

  • プロバイダー (すでに作成してあればそちらでも大丈夫です)
  • Botの基本情報を設定

を行ってください。

「チャネル基本設定」でアクセストークンを発行し、アクセストークン と User ID のメモをしておいてください。
(のちほど作成するLambda関数内で利用します)

LINEBot2.png

その後、 LINEアプリへのQRコード から作成したBotを自身のLINEに友だち追加してください。

qr.png

これにより、Botからメッセージを受け取ることができます。
※ 友だち追加をしないと、実行時にサーバーエラーとなります。

Clovaスキルの作成 (基本設定)

Clovaスキルの作成を行います。プロダクト一覧からClovaを選択し、

  • プロバイダーの選択 (Botを利用する場合、Botと同じプロバイダーを選択してください)
  • チャネル名 (Clovaスキルのチャネル名)

を設定後、Clova Developer Center へ移動して手順に沿って設定をします。

ここで設定する Extension ID はのちほど作成するLambda関数内で利用するためメモをしておいてください。
※ 呼び出し名を「キントーン」と設定した場合、「ねぇ Clova, キントーンを開いて」という呼び出しでスキルを利用することができます。

config.png

また、Botを利用する場合、「Extensionと連携するLINEのアカウント」で先ほど作成したBotを選択します。

clova_bot.png

サーバー設定タブにある ExtensionサーバーのURL 部分には、先ほどAWS API Gatewayの設定で生成したAPIエンドポイントのURLを記述します。

config.png

そして、「個人情報の保護および規約同意」タブまで進めると、対話モデル を作成できるようになります。
「配布情報」と「個人情報の保護および規約同意」設定タブの各項目は、スキルを対外的に配布したいときに設定する部分なので、今回は未記入のままで大丈夫です。

対話モデルの作成

ユーザーの発話をどのように認識するのかをここで設定します。

スロットタイプの追加

まずスロットタイプを追加します。ここではユーザーが発言した発話の中のキーワード(単語)と、それを格納するための変数(スロット)を定義します。
今回は 「item」「area」というカスタムスロットタイプを用意し、「スロットタイプの辞書」にてそれぞれにキーワードとなる単語を設定します。

  • item: 水、マジック、ノート
  • area: 会議室1、会議室2、会議室3

※ 下側の「使用中のスロットおよびインテント情報 」はまだ設定しなくて大丈夫です。

slot.png

同様に「area」の方も設定します。

 area.png

インテントの追加

次にインテントを追加します。ここではユーザーが実際に発言する発話のサンプルリストを作成します。

「item」「area」というカスタムインテントを用意し、ユーザーが発言しそうなリストを作成します。
(.tsvファイルによる一括アップロードも可能となっています)

2018-09-12_16h17_03.png

キーワード部分をドラッグすることでスロットを作成することができます。

intent3.png

そして、カスタムスロットタイプと関連づけることで、発話のキーワードが特定のスロットタイプ(変数)に格納されるようになります。

intent2.png

備品をいくつか登録すると以下のようになります。

intent.png

同様に以下のように、場所(area)についても設定します。
item インテントと同じく会議室名部分はスロットと紐付け設定をします。

area_customIntent.png

ビルド・テスト

設定が終わったらビルドを選択して適用します。テストを選択することで実機なしでの動作確認が可能となっています。

 

Lambda関数の作成

実際にLambda上で動かすプログラムを作成します。

今回のプログラムではSDKなどいくつかモジュールを利用するため、npm等で下記モジュールをインストールしておいてください。

  • @line/clova-cek-sdk-nodejs
    • Clova用のSDK
  • express
    • REST API作成のフレームワーク
  • kintone-nodejs-sdk
    • kintone用のSDK
  • @line/bot-sdk
    • LINE Bot用のSDK
  • aws-serverless-express
    • expressで作ったREST APIをサーバレス化するツール

サンプルコード

それぞれご自身の設定に変更したプログラムを「index.js」として保存します。
変更箇所については下の解説で説明します。

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

npmコマンド、package.json等の使い方については
別記事 「Amazon Echoでスマートに予定の管理をしよう!」の AWS Lambda関数の設定 をご覧ください。

解説

kintoneへのレコード登録する部分

kintone-nodejs-sdkを用いたkintone REST APIのプログラムです。

L5~L7の部分をご自身のkintone環境に合わせて変更してください。

LINE Botへメッセージを送信する部分

@line/bot-sdkを用いたメッセージ送信プログラムです。

L5, L8の部分をLINE Botの作成で取得したものに変更してください。

Clovaのハンドラー部分

Clovaの応答のハンドラー部分となります。詳しい書き方は Githubの「line/clova-cek-sdk-nodejs」リポジトリをご覧ください。

Lambda関数の実行部分

イベントハンドラーの実行部分となります。

L6にはClovaスキルの作成 (基本設定)で生成したExtensionIDを、 
L7には Lambda関数名 (例: /Clova_kintone)を記述してください。

動作確認

Clova Friends等の実機がある方は、LINE DevelopersへログインしたLINEアカウントに紐付いたスマホ等で
Clovaアプリをインストールし、作成したスキルをアクティブにします。

実機がない方はClova Developer Centerの対話モデルからスキルのテストをすることができます。
(テストを行う前に必ずビルドを行って変更を反映させてください。ビルドには少し時間がかかります)

demo1.png

まず何がなくなったかを入力します。テストを実行すると「サービスの応答」にClovaからの返答が表示されます。

demo2.png

「どこで水がなくなりそうですか?」と聞かれたので「会議室1」と答えると、

「会議室1の水がなくなりそうなのですね!キントーンに登録しました」と返答され、kintoneへレコード登録がされます。

kintone.png

また、LINEにもBotからメッセージが送信されていることが確認できます。

line_screen.png

おわりに

LINE Clovaとkintone、LINE Botを使ってスマートな在庫管理を行いました!
各会議室に1台置いておくと、すぐに備品の状況がkintoneへ登録できるので便利ですね!

それぞれサービスごとにSDKが用意されているので、それを駆使することで処理ごとにコードが分けられて非常に便利です!
設定は多いですが、仕組み自体はシンプルなのでぜひトライしてみてください!

このTipsは、2018年9月版 kintoneで確認したものになります。

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

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

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