Dialogflow만으로 오리지널 3택 퀴즈를 만들어 보자
18133 단어 GoogleHomedialogflowGoogleAssistant
1. 소개
Dialogflow의 사용법을 이해할 목적으로 간단한 3택 퀴즈를 만들어 보았습니다.
문제문과 답변 부분만 다시 쓰면 오리지널 퀴즈가 됩니다.
만든 퀴즈는 Google Home에서 실제로 사용할 수도 있고, 없어도 귀하의 스마트 폰으로 Google Assistant 앱에서 사용할 수 있어요!
2. 준비하는 것
Google 계정 전용
3. 이렇게 됩니다
4. 만드는 방법
먼저 Dialogflow에 들어가자
Dialogflow
Google 계정이 있으면 로그인할 수 있습니다.
이런 느낌의 화면이 열립니다
에이전트 만들기
에이전트를 만들고 그 안에서 설정을 추가합니다.
Intent 만들기(파일 업로드)
CREATE INTENT의 오른쪽에 있는 버튼을 클릭하고 UploadIntent를 클릭합니다.
Choose File을 클릭
배포 중 json 파일을 클릭하면 업로드됩니다.
이렇게 되면 OK!
Fulfillment를 설정합시다.
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);
});
마지막으로 Deploy를 누르면 완성입니다!
Reference
이 문제에 관하여(Dialogflow만으로 오리지널 3택 퀴즈를 만들어 보자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/akikushi/items/e7de6bf7d47d12563488
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Google 계정 전용
3. 이렇게 됩니다
4. 만드는 방법
먼저 Dialogflow에 들어가자
Dialogflow
Google 계정이 있으면 로그인할 수 있습니다.
이런 느낌의 화면이 열립니다
에이전트 만들기
에이전트를 만들고 그 안에서 설정을 추가합니다.
Intent 만들기(파일 업로드)
CREATE INTENT의 오른쪽에 있는 버튼을 클릭하고 UploadIntent를 클릭합니다.
Choose File을 클릭
배포 중 json 파일을 클릭하면 업로드됩니다.
이렇게 되면 OK!
Fulfillment를 설정합시다.
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);
});
마지막으로 Deploy를 누르면 완성입니다!
Reference
이 문제에 관하여(Dialogflow만으로 오리지널 3택 퀴즈를 만들어 보자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/akikushi/items/e7de6bf7d47d12563488
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
먼저 Dialogflow에 들어가자
Dialogflow
Google 계정이 있으면 로그인할 수 있습니다.
이런 느낌의 화면이 열립니다
에이전트 만들기
에이전트를 만들고 그 안에서 설정을 추가합니다.
Intent 만들기(파일 업로드)
CREATE INTENT의 오른쪽에 있는 버튼을 클릭하고 UploadIntent를 클릭합니다.
Choose File을 클릭
배포 중 json 파일을 클릭하면 업로드됩니다.
이렇게 되면 OK!
Fulfillment를 설정합시다.
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);
});
마지막으로 Deploy를 누르면 완성입니다!
Reference
이 문제에 관하여(Dialogflow만으로 오리지널 3택 퀴즈를 만들어 보자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/akikushi/items/e7de6bf7d47d12563488텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)