Dialogflowだけでオリジナルの3択クイズを作ろう
1.はじめに
Dialogflowの使い方を理解する目的で簡単な3択クイズを作ってみました。
問題文と回答の部分だけ書き換えればオリジナルのクイズになります。
作ったクイズはGoogle Homeで実際に使うこともできますし、なくてもお手持ちのスマホでGoogle Assistantアプリから使うことができますよ!
2.用意するもの
Googleアカウントのみです
3.こうなります
4.作り方
まずDialogflowに入りましょう
こんな感じの画面が開きます
Agentを作りましょう
Intentを作りましょう(ファイルをアップロードします)
CREATE INTENTの右側にあるボタンをクリックしてUploadIntentをクリック
Choose Fileをクリック
配布しているjsonファイルをクリックするとアップロードされて・・・
こうなればOK!
Fulfillmentを設定しましょう
下のコードをコピー&ペーストします
// See https://github.com/dialogflow/dialogflow-fulfillment-nodejs
// for Dialogflow fulfillment library docs, samples, and to report issues
'use strict';
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');
const quiz = [
{ question : "一番高い建物は?", one : "東京タワー", two : "スカイツリー", three : "エッフェル塔", correct : 2},
{ question : "一番カロリーが高いのは?", one : "おにぎり", two : "サンドイッチ", three : "ラーメン", correct : 3},
{ question : "お茶に含まれる栄養素は?", one : "カテキン", two : "ヒカキン", three : "セイキン", correct : 1}
];
process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
const agent = new WebhookClient({ request, response });
console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
function defwelcome(agent) {
agent.add(`Welcome to my agent!`);
}
function fallback(agent) {
agent.add(`I didn't understand`);
agent.add(`I'm sorry, can you try again?`);
}
function welcome(agent) {
agent.add(`3択クイズを出してやる。スタートと言うのだ。`);
}
function start(agent) {
var random = Math.floor( Math.random() * 3 );
let myQuiz = quiz[random];
agent.add(`問題だ!番号で答えてね!` + myQuiz.question);
agent.add("1番、" + myQuiz.one + "。2番、" + myQuiz.two + "。3番、" + myQuiz.three);
//答えを格納
agent.setContext({ name: 'start', lifespan: 1, parameters: { correct: myQuiz.correct}});
}
function answer(agent){
// 回答を取得
var answer = request.body.queryResult.parameters.number;
console.log("answer : " + answer);
// 正解を取得
var context = agent.getContext('start');
console.log("context : " +JSON.stringify(context));
var correct = context.parameters.correct;
console.log("correct : " + correct);
if(answer === correct){
agent.add("正解です!!")
} else {
agent.add("残念!!正解は" + correct +"番でした")
}
}
let intentMap = new Map();
intentMap.set('Default Welcome Intent', defwelcome);
intentMap.set('Default Fallback Intent', fallback);
intentMap.set('WelcomeIntent', welcome);
intentMap.set('StartIntent', start);
intentMap.set('AnswerIntent', answer);
// intentMap.set('your intent name here', yourFunctionHandler);
// intentMap.set('your intent name here', googleAssistantHandler);
agent.handleRequest(intentMap);
});
Author And Source
この問題について(Dialogflowだけでオリジナルの3択クイズを作ろう), 我々は、より多くの情報をここで見つけました https://qiita.com/akikushi/items/e7de6bf7d47d12563488著者帰属:元の著者の情報は、元の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 .