Dialogflow만으로 오리지널 3택 퀴즈를 만들어 보자

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를 누르면 완성입니다!

좋은 웹페이지 즐겨찾기