Dialogflow(Googleのチャットボット)を試してみる(3)GoogleのSillyNameMakerチュートリアルを写経してみる
今回は、GoogleのMakeSillyNameのチュートリアルを写経してみたい。
https://developers.google.com/actions/dialogflow/first-app?hl=ja
(開発環境)
Windows 8.1 Pro (MacでもLinuxでも同じです。)
Chrome
Googleアカウント(無料)
(0)内容
AI 「好きな数字は?」
ユーザー 「23」
AI 「好きな色は?」
ユーザー 「黄色」
AI 「あなたのあだ名は、"黄色23″です!」
て感じのものを作る。
(1)Dialogflowにログインと、新規Agentの作成
以下のリンク先へ行き、Googleアカウントでログイン。
https://console.dialogflow.com/api-client/#/login
Create New Agent で、新しいAgentを作成。今回は、Helloという名前をつけた。
(2)メニュー > Fulfillment > Inline Editor をEnabled にする
(3)Intents > Default Welcome Intent をクリック
Response の Text response のところを、ごみ箱ボタンをクリックして、削除して、代わりに以下のように入力して、SAVE
(4)IntegrationsからWebDemoを選択
<iflame… の中身をコピーして置いて、Wordpressその他に貼りつける。
以下に張り付けてみた。
(5)make_name インテントの作成
メニュー > Intents の右横の + ボタンをクリック
一番上のIntent name のところに、make_name と入力
Training phrases のところの、ADD TRAINING PHRASES をクリックして、
Training phrasesフィールドに「私のラッキーナンバーは23です」と入力して Enter キーを押します。
23 のところが自動的に黄色になり、@sys.time と表示されるので、@sys.time をクリックして、ドロップダウンリストが出てくるので、その中で、@sys.number をクリック。
Training phrases のところに、以下のように2つくらい文章を追加する。
[Actions] セクションで、number
パラメータの [REQUIRED] チェックボックスをオンにします。
number の行の一番右の、[Define prompts] をクリックして、再確認のフレーズを入力します。このフレーズは、Dialogflow がユーザー入力から番号を検出するまで繰り返しユーザーに向けて発話されます。
make_name という名前を入力し、[SAVE] をクリックします。
Fulfillment > ENABLE FULFILLMENT
SAVE
Responses で、 Set this intent as end of conversation をONにして、SAVE
(6)Fulfillmentの、Inline Editorを修正
以下のように修正
'use strict'; process.env.DEBUG = 'actions-on-google:*'; const App = require('actions-on-google').DialogflowApp; const functions = require('firebase-functions'); // a. the action name from the make_name Dialogflow intent const NAME_ACTION = 'make_name'; // b. the parameters that are parsed from the make_name intent const COLOR_ARGUMENT = 'color'; const NUMBER_ARGUMENT = 'number'; exports.sillyNameMaker = functions.https.onRequest((request, response) => { const app = new App({request, response}); console.log('Request headers: ' + JSON.stringify(request.headers)); console.log('Request body: ' + JSON.stringify(request.body)); // c. The function that generates the silly name function makeName (app) { let number = app.getArgument(NUMBER_ARGUMENT); let color = app.getArgument(COLOR_ARGUMENT); app.tell('Alright, your silly name is ' + color + ' ' + number + '! I hope you like it. See you next time.'); } // d. build an action map, which maps intent names to functions let actionMap = new Map(); actionMap.set(NAME_ACTION, makeName); app.handleRequest(actionMap); });
DEPLOY をクリック
なんだかエラーが出ている。
The deployment of your Cloud Function failed: Function load error: Node.js module defined by file index.js is expected to export function named dialogflowFirebaseFulfillment
ググってみると、以下のようなページが出てきた。
https://stackoverflow.com/questions/49493654/silly-name-maker-tutorial?rq=1
上記に言われた通り、1行だけ、訂正してから、DEPLOY
結果は以下の通り
うまくいかず。。。。
2018/9/12 追記
https://yutakami.work/?p=447 によると、
conv.ask(`Alright, your silly name is ${color} ${number} ! Are there any other numbers and colors you like?`);
のところを、
conv.json( JSON.stringify({"fulfillmentText" : `Alright, your silly name is ${color} ${number} !`}) );
に変更すると、うまくいきそうだったので、そのように変更してみました。
なんとかうまくいきました!うれしい!
ディスカッション
コメント一覧
まだ、コメントがありません