LINE Clova Extensions Kitとenebularを連携して会話させてみよう

外部ライターの田中正吾です。今回はLINE Clova Extensions Kitとenebularを連携して会話させてみます。

LINE Clova Extensions Kit とは

【LINE Clova】「Clova」のスキルを開発・拡張できる「Clova Extensions Kit」を本日より一般公開 | LINE Corporation | ニュース

LINE Clova Extensions Kit とは、「Clova」のスキルを開発・拡張できるキットです。

image

LINE Clova Extensions Kit(以後、CEK)は、ユーザーとClovaの対話シナリオ(対話モデル)と、ClovaとExtension間のやりとりを担当しています。

CEKとCustom ExtensionはHTTPリクエストでやり取りしています。対話シナリオに合わせた応答をするのがCustom Extensionですが、enebularの場合はNode-REDベースのFlowという機能でデータのやり取りを手軽に調整することが出来るため相性が良いです。

また、Custom ExtensionのサーバーはHTTPSでやりとりできる必要がありますが、enebularでデプロイされた仕組みはHTTPSが可能なサーバーで、すぐにやり取りが可能です。

今回の仕組み

早速ですが、こちらをenebularとつなげてみます。

image

image

今回はこのように、対話を応答するExtensionサーバーにenebularを使って、起動時のセリフ「はい!私は「エネブラー」から応答しているLINEボットです。」という応答して起動します。

image

image

また、対話モデルを登録して「元気ですか?」という質問をキャッチしてenebularのExtensionサーバーから「はい、元気です!」と応答させる仕組みも作ります。

enebular Discover Flowからの取り込み

まず、対話を応答するExtensionサーバーを作ります。enebularからはDiscover Flowからの読み込みを行います。

flow-simple-clova-cek-enebular

image

こちらのDiscover Flowを自分のプロジェクトに取り込みましょう。

image

Forkボタンを押します。

image

Fork先を設定します。

image

取り込むプロジェクトを指定します。

image

Default Role for Assetはsuperdevを指定します。

image

Fork ボタンを押します。

image

Fork完了です。

image

プロジェクトページに戻り登録を確認できたらenebularの設定は完了です。


image

これでenebularの準備は完了です。

スキルチャネルを新規作成する

このドキュメントについて – Clova Developer Center β

2018/07/24時点でのドキュメントを参考にしています。

image

まず、LINE Developersでスキルチャネルを新規作成していきます。

呼び出し名を決める

簡単なExtensionを作成する – Clova Developer Center β

こちらを参考に設定を進めていきます。

image

気をつけるのは呼び出し名です。LINEが音声認識しやすいものを模索しましょう。今回は サンプルのツール と名付けています。

他の設定はドキュメントに従って進めていきます。

ExtensionサーバーのURLを決めます

つづいてサーバー設定ExtensionサーバーのURLを決めます。

image

ExtensionサーバーのURLを探します。

image

これは今回設定したenebularのFlowをEdit Flowで開きます。

image

フローの上部の i アイコンからURL確認します。

Session Remaining Timeはこのサーバーの使用できる残り時間です。こまめに見て、もし制限時間が近くなったら、Edit Flowから起動し直して再度変更されたURLを見に行きましょう。

image

今回はこのURLに /clova をくっつけたものを登録します。

他の設定はドキュメントに従って進めていきます。

対話モデルを作っていきます。

つづいて設定を進めていき、対話モデルの設定を行います。

image

スロットタイプを設定

image

カスタムスロットタイプを作成します。

image

スロット名はGenkiSlotで。

スロットファイルをアップロード

https://raw.githubusercontent.com/1ft-seabass/LINECEKGenkiModelSample/master/GenkiSlot.tsv

このURLの内容をローカルにUTF-8のテキストファイルでGenkiSlot.tsvとして保存します。

image

作成できたら辞書をアップロードします。

image

アップロードウィンドウが表示されます。

image

ファイル選択で、さきほどのGenkiSlot.tsvを指定します。

image

アップロード完了します。設定が反映されます。

image

今回は元気という文言を捉えるため、このようにスロットタイプを設定しました。

image

確認できたら保存ボタンを押します。

インテントを作成

image

続いて、インテントを作成します。先ほどのスロットをサンプル発話リストに関連付けていきます。

image

インテント名はGenkiIntentで。

インテントファイルをアップロード

https://raw.githubusercontent.com/1ft-seabass/LINECEKGenkiModelSample/master/GenkiIntent.tsv

このURLの内容をローカルにUTF-8のテキストファイルで GenkiIntent.tsv として保存します。

image

作成できたらインテントファイルをアップロードします。

image

アップロードウィンドウが表示されます。

image

ファイル選択で、さきほどの GenkiIntent.tsv を指定します。

image

アップロード完了します。設定が反映されます。

image

image

元気という言葉が引っかかるよう、このようにサンプル発話リストとスロットリストが設定されています。

image

確認できたら保存ボタンを押します。

ビルドする

image

ここまで設定できたらいよいよビルドです!

image

出来上がりを待ちます!

ビルドをしないと、発話の認識だけでなく、呼び出し名の認識もできないので、このあとのテストで呼び出しすらできず困るので、ビルドを見届けましょう!

テストしてみる

ビルドができたらテストしてみましょう。

image

メニューからテストを押します。

image

debug ノードで、すでに /clova から入ってくるデータを確認することができます。

image

debug タブを表示して待ちましょう。

image

「元気ですか」と入力してテストをクリックします。

image

うまく設定できていれば、このように、発話が解析されて返答されます!

image

enebularのdebug タブを見に行くと、送られてきたデータの内容が表示されています。

これで動作確認はできました!

動かしてみる

では、実際に、起動から動かしてみましょう!

注意点:実際に運用するときは

実際に運用されるときの注意点です。今回のフローエディターで表示されているURLは一時的なもので、すぐ動作を体験したいときは良いですが、実際に運用するときには向きません。

たとえば、URLが一定時間で変化したりインスタンスの制限があります。

ということで、もし運用をしたくなったら、enebularで作った動作を書き出すDeployを行いましょう。

私の場合は、HerokuにDeployするHeroku DeployがHerokuアカウントを持っているとすぐ使えるので、今回もHeroku Deployしています。

まとめ

LINE Clova Extensions Kitとenebularを連携して会話させることができました。インテントとスロットを駆使して普段の会話のキーワードをうまく釣り上げて、enebular側で操作していく実装はとても楽しかったです。

今回は元気というキーワードだけでしたが、enebularでは視覚的にデータの流れが調整できるので、新しくキーワードを加えて会話に合わせた細かな調整の試行錯誤ができることでしょう。

さらに、その先にあるデータ。たとえば、enebularが得意としているIoTデバイスのセンサー値を話させたり、はたまた、音声によってデバイスを動かすようなこともできる未来を感じました!

このように連携ができたので、引き続き、LINE Clova Extensions Kitとenebularを試していこうと思います。