1回のOK,Google!で複数のコマンドを受け付け、kintoneへ連携(Dialogflow )
1回の OK,Google! で複数のコマンドを受け付け、kintoneに記録する
Google Home で独自のコマンドを実行する場合、IFTTT が便利です。
しかし、1回の OK,Google! で1つの受付しかできません。
また受付時の文言は、3つまでしか設定できません。
本記事では、1回の OK,Google! で複数のコマンドを受け付けられる
ピカチュウ召喚のような仕組みを構築します。
(OK,Google! ピカチュウ と言ってみてください。)
また、データを kintone に蓄積します。
動作
「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
Agent の作成
「Create Agent」から Agent を作成します。
今回は以下のように設定しました。
項目 | 値 |
---|---|
name | cheering |
DEFAULT LANGUAGE | Japanese-ja |
DEFAULT TIME ZONE | Asia/Tokyo |
Entities の作成
「頑張れxx」「いけいけxx」の「頑張れ」「いけいけ」の部分を定義します。
漢字、ひらがな、カタカナなど区別されます。
・応援の Entities
synonyum の設定が Dialogflow で受け付ける文言となります。
項目 | 値 |
---|---|
name | cheering |
reference value | 頑張れ |
synonyum | 頑張れ がんばれ がんばれー ガンバ おー いけいけ いけ いけー 応援 |
・終了の Entities
synonyum の文言を受け付けた場合、アプリを終了させます
項目 | 値 |
---|---|
name | end |
reference value | 終わり |
synonyum | 終わり おわり 終り |
Intents の作成(応援)
IFTTTのアプレットのような設定です。
受付の設定と、受付時の返答を設定します。
・Training phrases
受け付ける文言を設定します。
「頑張れTarget」と入力します。
「頑張れ」を選択し、プルダウンから Entities で作成した「@cheering」を選択しますy。
「Target」を選択しプルダウンから「@sys.any」を選択します。
・Action and parameters
変数を設定します。
PARAMETER NAME | ENTITY | VALUE |
---|---|---|
cheering | @cheering | $cheering |
any | @sys.any | $any |
・Responses
Dialogflow からの応答を設定します。
「xxだー!」と応答するようにします。
「Text response」に「$any だー!」を入力します。
入力が完了したら「SAVE」します。
Intents の作成(終了)
「Intents の作成(応援)」と同じ要領で、終了の Intent を作成します。
「Responses」にて「Set this intent as end of conversation」を有効化することによって、
本Intentが実行された際に、アプリを終了させることができます。
Intents の修正( Default Welcome Intent )
本アプリを起動する設定です。
標準では、「OK,Google!テスト用アプリ」などで起動します。
今回は、「OK,Google!応援アプリ」など、「@cheering アプリ」で起動するようにします。
Intents「Default Welcome Intent 」のTraining phrases を設定します。
動作確認1
Google Assistant で動作確認します。
「Integrations」から「Google Assistant」の「TEST」を選択すると Simulator が起動します。
Simulator では、「テスト用アプリにつないで」と打ち込むと、アプリが起動します。
「頑張れ日本」と打ち込むと、「日本だー!」と応答があれば正しく動作しています。
IBM Cloud(Node-RED)の設定
IBM Cloud の Node-RED を起動し、HTTP(POST)を受け付けるフローを作成します。
Node-RED のフロー作成
・http in ノード
Dialogflow からのアクセス先となります。
項目 | 値 |
---|---|
メソッド | POST |
URL |
・change ノード
受信したJSONから、「xx」の部分を抽出します。
「msg.payload.result.parameters.any」の内容を「msg.data」へ代入します。
・template ノード
Dialogflow へ返信し、Dialogflowに応答させる内容を記述します。
今回は、「xxですね」と応答するようにします。
{
"speech": "{{data}}ですね" ,
"displayText": "{{data}}ですね"
}
・http response ノード
返答します。
標準設定のままで可能です。
Dialogflow での Webhook 設定
Dialogflow から IBM Cloud(Node-RED)への Webhook を設定します。
・Webhookの設定
「Fulfillment」で「Webhook」を有効化します。
「URL」に IBM Cloud(Node-RED)で作成した http in のURLを指定します。
今回は、以下のようになります。
例:https://xxxxxxxxx.mybluemix.net/google
・Entitie での Webhookの有効化
応援 の Entitie の 「Fulfillment」で「Enabele webhook call for this intent」を有効化します。
動作確認2
「頑張れ日本」と問いかけ、「日本ですね」と応答があれば正しく動作しています。
Node-RED では、JSONを受信し、msg.data には「日本」が代入されています。
kintone への書き込み
以下の記事をご参照ください。
書き組むデータは、「msg.data 」に代入されています。
Raspberry Pi から kintone にデータを書き込む
かなり雑ですが、一通り動くと思います。
Author And Source
この問題について(1回のOK,Google!で複数のコマンドを受け付け、kintoneへ連携(Dialogflow )), 我々は、より多くの情報をここで見つけました https://qiita.com/minatomirai21/items/065d54d04ef72b9ceca8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .