LoginSignup
3
3

More than 5 years have passed since last update.

1回のOK,Google!で複数のコマンドを受け付け、kintoneへ連携(Dialogflow )

Last updated at Posted at 2018-02-25

1回の OK,Google! で複数のコマンドを受け付け、kintoneに記録する

Google Home で独自のコマンドを実行する場合、IFTTT が便利です。
しかし、1回の OK,Google! で1つの受付しかできません。
また受付時の文言は、3つまでしか設定できません。

本記事では、1回の OK,Google! で複数のコマンドを受け付けられる
ピカチュウ召喚のような仕組みを構築します。
(OK,Google! ピカチュウ と言ってみてください。)
また、データを kintone に蓄積します。

1.png

動作

「OK,Google 応援アプリ」で起動します。
「頑張れxx」「いけいけxx」「おーxx」などと話しかけると、
「xxですね」とアシスタントが返答します。
また同時に、kintoneに「xx」を記録します。
終了する場合は、「おわり」と話しかけます。
もしくは放置、定義されていない言葉を3回程度投げかけると終了します。

全体構成

1.Dialogflow での受付
本構成では、IFTTTではなく、Dialogflow を利用します。
Dialogflow でコマンドを受け付けます。
Dialogflow では、コマンドの受付と、受付時の返答を設定することができます。
また、Webhook を設定することができます。
今回は、IBM Cloud(Node-RED)へ Webhook します。

2.IBM Cloud(Node-RED)
Dialogflow からの Webhook を受け付けます。
受け付けたのちは、受付時の返答を Dialogflow へ返すとともに
kintoneへの書き込みを実施します。
コマンドの受付痔の返答は、Webhook 先にて設定されたものが採用されます。
Dialogflow が Webhook との通信にタイムアウトした場合は、
Dialogflow に設定された返答が採用されます。

3.kintone への書き込み
Node-RED から kintone へ REST API でデータを書き込みます。

Dialogflow での受付

Dialogflow にログインします。
Dialogflow

img_001223.JPG

Agent の作成

「Create Agent」から Agent を作成します。
今回は以下のように設定しました。

項目
name cheering
DEFAULT LANGUAGE Japanese-ja
DEFAULT TIME ZONE Asia/Tokyo

img_001224.JPG

Entities の作成

「頑張れxx」「いけいけxx」の「頑張れ」「いけいけ」の部分を定義します。
漢字、ひらがな、カタカナなど区別されます。

・応援の Entities
synonyum の設定が Dialogflow で受け付ける文言となります。

項目
name cheering
reference value 頑張れ
synonyum 頑張れ
がんばれ
がんばれー
ガンバ
おー
いけいけ
いけ
いけー
応援

img_001277.JPG

・終了の Entities
synonyum の文言を受け付けた場合、アプリを終了させます

項目
name end
reference value 終わり
synonyum 終わり
おわり
終り

img_001229.JPG

Intents の作成(応援)

IFTTTのアプレットのような設定です。
受付の設定と、受付時の返答を設定します。

・Training phrases
受け付ける文言を設定します。
「頑張れTarget」と入力します。
「頑張れ」を選択し、プルダウンから Entities で作成した「@cheering」を選択しますy。
「Target」を選択しプルダウンから「@sys.any」を選択します。

img_001241.JPG

img_001242.JPG

img_001244.JPG

・Action and parameters
変数を設定します。

PARAMETER NAME ENTITY VALUE
cheering @cheering $cheering
any @sys.any $any

img_001278.JPG

・Responses
Dialogflow からの応答を設定します。
「xxだー!」と応答するようにします。
「Text response」に「$any だー!」を入力します。

img_001266.JPG

入力が完了したら「SAVE」します。

Intents の作成(終了)

「Intents の作成(応援)」と同じ要領で、終了の Intent を作成します。
「Responses」にて「Set this intent as end of conversation」を有効化することによって、
本Intentが実行された際に、アプリを終了させることができます。

img_001237.JPG

img_001239.JPG

Intents の修正( Default Welcome Intent )

本アプリを起動する設定です。
標準では、「OK,Google!テスト用アプリ」などで起動します。
今回は、「OK,Google!応援アプリ」など、「@cheering アプリ」で起動するようにします。
Intents「Default Welcome Intent 」のTraining phrases を設定します。

img_001270.JPG

動作確認1

Google Assistant で動作確認します。
「Integrations」から「Google Assistant」の「TEST」を選択すると Simulator が起動します。
Simulator では、「テスト用アプリにつないで」と打ち込むと、アプリが起動します。

「頑張れ日本」と打ち込むと、「日本だー!」と応答があれば正しく動作しています。

img_001252.JPG

img_001253.JPG

img_001256.JPG

IBM Cloud(Node-RED)の設定

IBM Cloud の Node-RED を起動し、HTTP(POST)を受け付けるフローを作成します。
img_001257.JPG

Node-RED のフロー作成

・http in ノード
Dialogflow からのアクセス先となります。

項目
メソッド POST
URL /google

img_001258.JPG

・change ノード
受信したJSONから、「xx」の部分を抽出します。
「msg.payload.result.parameters.any」の内容を「msg.data」へ代入します。

img_001259.JPG

・template ノード
Dialogflow へ返信し、Dialogflowに応答させる内容を記述します。
今回は、「xxですね」と応答するようにします。

response.json
{ 
    "speech": "{{data}}ですね"  ,
    "displayText": "{{data}}ですね"

}

img_001260.JPG

・http response ノード
返答します。
標準設定のままで可能です。

img_001261.JPG

Dialogflow での Webhook 設定

Dialogflow から IBM Cloud(Node-RED)への Webhook を設定します。

・Webhookの設定
「Fulfillment」で「Webhook」を有効化します。
「URL」に IBM Cloud(Node-RED)で作成した http in のURLを指定します。
今回は、以下のようになります。

例:https://xxxxxxxxx.mybluemix.net/google

img_001264.JPG

・Entitie での Webhookの有効化
応援 の Entitie の 「Fulfillment」で「Enabele webhook call for this intent」を有効化します。

img_001267.JPG

動作確認2

「頑張れ日本」と問いかけ、「日本ですね」と応答があれば正しく動作しています。

img_001275.JPG

Node-RED では、JSONを受信し、msg.data には「日本」が代入されています。

img_001276.JPG

kintone への書き込み

以下の記事をご参照ください。

書き組むデータは、「msg.data 」に代入されています。
Raspberry Pi から kintone にデータを書き込む

かなり雑ですが、一通り動くと思います。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3