(著者:サイボウズ 大竹 遼)
[kintone環境をお持ちでない方へ]
developer network(当サイト) のメンバー登録をした後、1年間無料の開発者向けライセンスを使えます。
[LINE Developersアカウントをお持ちでない方へ]
LINE Developersサイトよりアカウント登録してください。
概要
LINEが開発したAIアシスタント Clova とkintoneを使って在庫管理を行います。
Clovaを使って対話形式に備品の在庫状況のやりとりを行い、kintoneへ在庫状況のレコードを登録します。
また、LINEのMessaging API を利用して LINE Bot からメッセージを送信する機能も合わせて作成しています。
LINE Clova とは
Clova WAVEやClova Friendsなどに搭載されたAIアシスタントです。
「スキル」と呼ばれる機能を開発することで、オリジナルの機能を追加させることができます。詳しくは Clova Developer Centerサイト をご覧ください。
完成イメージ
kintoneの設定
kintoneアプリの作成
kintoneへ登録する「備品名」と「場所」のフィールドを用意します。
フィールド名 | フィールドタイプ | フィールドコード |
---|---|---|
備品名 |
文字列(1行) |
Name |
場所 |
文字列(1行) |
Area |
作成日時 |
作成日時 |
作成日時 |
作成したアプリのフォーム画面がこちらです。
APIトークンの生成
kintoneの認証にAPIトークンを利用します。認証についてはこちらをご覧ください。
アプリの管理画面から設定タブをクリックし、APIトークンの画面を開きます。
今回はkintoneへのレコード新規登録を行いたいので、生成ボタンをクリックしてレコード追加にチェックを付けます。
(生成したAPIトークンはのちほど作成するLambda関数内で利用するため、メモしておいてください)
その後、「保存」をクリックして「アプリを更新」をクリックします。これでAPIトークンの生成は完了です。
※アプリの更新は忘れがちなので注意してください!
AWSの設定
AWSマネジメントコンソール からコンソールへログインします。
AWSサービスの検索窓から使用するサービスを検索してください。
Lambda関数の作成
AWSサービスから「Lambda」を検索してLambdaの画面を開き、「関数の作成」を選びます。
関数名はわかりやすく「Clova_kintone」とし、ロールは標準のbasic_executionにします。
(ここは実際に使用する状況によって適宜変更してください)
また、ランタイムの部分で Node.js 8.10 を選択してください。
(コード内で利用している async/await はNode.jsのバージョンが7.6以上でないと動きません)
関数の作成をクリックすると、Lambda関数の雛形が作成されます。
API Gatewayの設定
次に、API Gatewayの設定をします。左側のトリガーの追加から「API Gateway」を選択してください。
API Gatewayの設定にて、
- API:「新規のAPIの作成」
- セキュリティ:「オープン」
を選択してください。(この部分はご自身の環境に合わせて変更してください。今回は簡単な設定にしています)
追加をクリックしたあと右上の保存をクリックすると APIエンドポイント というURLが生成されます。
こちらはのちほどClovaの設定で利用するため、メモをしておいてください。
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 を開発します。
LINE Botの作成
LINEへメッセージを送信する場合、送信元となるBotを作成する必要があります。
Botも連携させる場合、Clovaスキルの作成より先にこちらの設定を行う方が、Clovaスキル側の設定がスムーズに進められます。
プロダクト一覧から Messaging API を選択し、手順に従って、
- プロバイダー (すでに作成してあればそちらでも大丈夫です)
- Botの基本情報を設定
を行ってください。
「チャネル基本設定」でアクセストークンを発行し、アクセストークン と User ID のメモをしておいてください。
(のちほど作成するLambda関数内で利用します)
その後、 LINEアプリへのQRコード から作成したBotを自身のLINEに友だち追加してください。
これにより、Botからメッセージを受け取ることができます。
※ 友だち追加をしないと、実行時にサーバーエラーとなります。
Clovaスキルの作成 (基本設定)
Clovaスキルの作成を行います。プロダクト一覧からClovaを選択し、
- プロバイダーの選択 (Botを利用する場合、Botと同じプロバイダーを選択してください)
- チャネル名 (Clovaスキルのチャネル名)
を設定後、Clova Developer Center へ移動して手順に沿って設定をします。
ここで設定する Extension ID はのちほど作成するLambda関数内で利用するためメモをしておいてください。
※ 呼び出し名を「キントーン」と設定した場合、「ねぇ Clova, キントーンを開いて」という呼び出しでスキルを利用することができます。
また、Botを利用する場合、「Extensionと連携するLINEのアカウント」で先ほど作成したBotを選択します。
サーバー設定タブにある ExtensionサーバーのURL 部分には、先ほどAWS API Gatewayの設定で生成したAPIエンドポイントのURLを記述します。
そして、「個人情報の保護および規約同意」タブまで進めると、対話モデル を作成できるようになります。
「配布情報」と「個人情報の保護および規約同意」設定タブの各項目は、スキルを対外的に配布したいときに設定する部分なので、今回は未記入のままで大丈夫です。
対話モデルの作成
ユーザーの発話をどのように認識するのかをここで設定します。
スロットタイプの追加
まずスロットタイプを追加します。ここではユーザーが発言した発話の中のキーワード(単語)と、それを格納するための変数(スロット)を定義します。
今回は 「item」「area」というカスタムスロットタイプを用意し、「スロットタイプの辞書」にてそれぞれにキーワードとなる単語を設定します。
- item: 水、マジック、ノート
- area: 会議室1、会議室2、会議室3
※ 下側の「使用中のスロットおよびインテント情報 」はまだ設定しなくて大丈夫です。
同様に「area」の方も設定します。
インテントの追加
次にインテントを追加します。ここではユーザーが実際に発言する発話のサンプルリストを作成します。
「item」「area」というカスタムインテントを用意し、ユーザーが発言しそうなリストを作成します。
(.tsvファイルによる一括アップロードも可能となっています)
キーワード部分をドラッグすることでスロットを作成することができます。
そして、カスタムスロットタイプと関連づけることで、発話のキーワードが特定のスロットタイプ(変数)に格納されるようになります。
備品をいくつか登録すると以下のようになります。
同様に以下のように、場所(area)についても設定します。
item インテントと同じく会議室名部分はスロットと紐付け設定をします。
ビルド・テスト
設定が終わったらビルドを選択して適用します。テストを選択することで実機なしでの動作確認が可能となっています。
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の対話モデルからスキルのテストをすることができます。
(テストを行う前に必ずビルドを行って変更を反映させてください。ビルドには少し時間がかかります)
まず何がなくなったかを入力します。テストを実行すると「サービスの応答」にClovaからの返答が表示されます。
「どこで水がなくなりそうですか?」と聞かれたので「会議室1」と答えると、
「会議室1の水がなくなりそうなのですね!キントーンに登録しました」と返答され、kintoneへレコード登録がされます。
また、LINEにもBotからメッセージが送信されていることが確認できます。
おわりに
LINE Clovaとkintone、LINE Botを使ってスマートな在庫管理を行いました!
各会議室に1台置いておくと、すぐに備品の状況がkintoneへ登録できるので便利ですね!
それぞれサービスごとにSDKが用意されているので、それを駆使することで処理ごとにコードが分けられて非常に便利です!
設定は多いですが、仕組み自体はシンプルなのでぜひトライしてみてください!
このTipsは、2018年9月版 kintoneで確認したものになります。
記事に関するフィードバック
記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。