เกมฝึกสะกดคำโดยใช้ Google Assistant และ Cloud Firestore

1. ภาพรวม

แพลตฟอร์มนักพัฒนาซอฟต์แวร์ Google Assistant ช่วยให้คุณสร้างซอฟต์แวร์เพื่อขยายฟังก์ชันการทำงานของ Google Assistant ซึ่งเป็นผู้ช่วยส่วนตัวเสมือนในอุปกรณ์มากกว่า 1 พันล้านเครื่อง รวมถึงลำโพงอัจฉริยะ โทรศัพท์ รถยนต์ ทีวี หูฟัง และอื่นๆ ผู้ใช้ให้ Assistant สนทนาเพื่อทำสิ่งต่างๆ ให้เสร็จสิ้น เช่น ซื้อของชำหรือจองรถ ในฐานะนักพัฒนา คุณสามารถใช้แพลตฟอร์ม Assistant Developer เพื่อสร้างและจัดการประสบการณ์การสนทนาที่น่าพึงพอใจและมีประสิทธิภาพระหว่างผู้ใช้กับบริการเติมเต็มคำสั่งซื้อจากบุคคลที่สามของคุณได้อย่างง่ายดาย

Codelab นี้ครอบคลุมแนวคิดระดับกลางสำหรับการพัฒนาด้วย Google Assistant, Cloud Functions และ Cloud Firestore ใน Codelab นี้ คุณจะสร้างเกมชื่อ "ฝึกสะกดคำ" ที่ใช้ Google Assistant เพื่อขอให้ผู้ใช้สะกดคำ

สิ่งที่คุณจะสร้าง

ใน Codelab นี้ คุณจะสร้างเกมที่ซับซ้อนพร้อมฟังก์ชันการทำงานต่อไปนี้:

  • รับการตอบกลับการสะกดจากผู้ใช้ และปรับเปลี่ยนพร้อมต์การสนทนา ขึ้นอยู่กับค่า
  • ตอบสนองด้วยคำใบ้ที่เกี่ยวข้องกับการสะกดคำ เช่น คำจำกัดความหรือการท่องคำซ้ำ
  • สร้าง Game Loop เพื่อให้ผู้ใช้สามารถโต้ตอบกับ Assistant ได้อีกครั้งหลังจากสะกดคำแล้ว

ก่อนที่คุณจะเริ่มสร้าง คุณสามารถโต้ตอบกับ แอ็กชัน สดบนอุปกรณ์ที่เปิดใช้งาน Google Assistant ได้โดยพูดว่า "เฮ้ Google คุยกับการฝึกสะกดคำ" เส้นทางเริ่มต้นผ่านการดำเนินการนี้สำหรับผู้ใช้ที่กลับมามีลักษณะเหมือนการโต้ตอบต่อไปนี้:

เมื่อคุณทำ Codelab นี้เสร็จแล้ว การดำเนินการที่เสร็จสมบูรณ์จะมีขั้นตอนการสนทนาดังต่อไปนี้

2e9f94dc0ceafc96.png

สิ่งที่คุณจะได้เรียนรู้

  • วิธีโต้ตอบกับ Cloud Firestore
  • วิธีใช้ slot เพื่อรวบรวมข้อมูลจากผู้ใช้
  • วิธีประมวลผลอินพุตของผู้ใช้และตอบกลับ
  • วิธีใช้เงื่อนไขเพื่อเพิ่มตรรกะให้กับฉาก
  • วิธีเพิ่ม Game Loop

สิ่งที่คุณต้องการ

ข้อกำหนดเบื้องต้นสำหรับ Codelab นี้มีดังนี้:

  • เว็บเบราว์เซอร์ เช่น Google Chrome
  • IDE สำหรับเขียนฟังก์ชันคลาวด์
  • วิธีการชำระเงิน Codelab นี้ใช้ฟังก์ชันคลาวด์สำหรับ Firebase ซึ่งกำหนดให้โปรเจ็กต์ของคุณอยู่ในแผนการกำหนดราคา Firebase Blaze ( เรียนรู้เพิ่มเติม )
  • เทอร์มินัลสำหรับรันคำสั่งเชลล์
  • Node.js 10 หรือใหม่กว่า

2. รับโค้ดฟังก์ชัน

โคลน ที่เก็บ GitHub จากบรรทัดคำสั่ง:

$ git clone https://github.com/FirebaseExtended/codelab-actions-firestore

3. สร้างโปรเจ็กต์ Firebase และตั้งค่าแอปของคุณ

สร้างโปรเจ็กต์ Firebase

  1. ลงชื่อเข้าใช้ Firebase
  2. ในคอนโซล Firebase คลิก เพิ่มโครงการ (หรือ สร้างโครงการ ) จากนั้นตั้งชื่อโครงการ Firebase Spelling-Practice ของคุณ

66ae8d1894f4477.png

  1. คลิกผ่านตัวเลือกการสร้างโครงการ ยอมรับข้อกำหนดของ Firebase หากได้รับแจ้ง ข้ามการตั้งค่า Google Analytics เนื่องจากคุณจะไม่ใช้ Analytics สำหรับแอปนี้

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับโครงการ Firebase โปรดดู ทำความเข้าใจโครงการ Firebase

อัปเกรดเป็นแผนราคา Blaze

หากต้องการใช้ฟังก์ชันคลาวด์สำหรับ Firebase คุณจะต้องอัปเกรดโปรเจ็กต์ Firebase เป็น แผนการกำหนดราคา Blaze ซึ่งหมายความว่าคุณจะต้องแนบบัญชีสำหรับการเรียกเก็บเงินของ Google Cloud เข้ากับโปรเจ็กต์ของคุณ โดยคุณจะต้องระบุบัตรเครดิตหรือวิธีการชำระเงินอื่น ๆ

โปรเจ็กต์ Firebase ทั้งหมด รวมถึงโปรเจ็กต์ที่อยู่ในแผน Blaze ยังคงมีสิทธิ์เข้าถึงโควต้าการใช้งานที่ไม่มีค่าใช้จ่ายสำหรับฟังก์ชันคลาวด์ ขั้นตอนที่ระบุไว้ใน Codelab นี้จะอยู่ภายในขีดจำกัดการใช้งานที่ไม่มีค่าใช้จ่าย อย่างไรก็ตาม คุณจะเห็นค่าบริการเล็กน้อย ( ประมาณ 0.03 USD ) จาก Cloud Storage ซึ่งใช้เพื่อโฮสต์อิมเมจบิลด์ของ Cloud Functions

4. ติดตั้ง Firebase CLI

Firebase CLI (อินเทอร์เฟซบรรทัดคำสั่ง) ช่วยให้คุณสามารถปรับใช้ฟังก์ชันคลาวด์ของคุณได้

มีหลาย ตัวเลือกในการติดตั้ง Firebase CLI ขึ้นอยู่กับระบบปฏิบัติการและกรณีการใช้งานของคุณ ขั้นตอนต่อไปนี้จะอธิบายตัวเลือกที่พบบ่อยที่สุดหากคุณใช้ฟังก์ชันคลาวด์ด้วย

  1. ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง npm ซึ่งโดยทั่วไปจะมาพร้อมกับ Node.js
  2. ติดตั้งหรืออัพเกรด CLI โดยการรันคำสั่ง npm ต่อไปนี้:
$ npm -g install firebase-tools
  1. ตรวจสอบว่าติดตั้ง CLI อย่างถูกต้องโดยเรียกใช้:
$ firebase --version

ตรวจสอบให้แน่ใจว่าเวอร์ชันของ Firebase CLI เป็น 9.0.0 หรือใหม่กว่า เพื่อให้มีคุณสมบัติล่าสุดทั้งหมดที่จำเป็นสำหรับฟังก์ชันคลาวด์ ถ้าไม่เช่นนั้น ให้รัน npm install -g firebase-tools เพื่ออัปเกรดดังที่แสดงด้านบน

  1. อนุญาต Firebase CLI โดยเรียกใช้:
$ firebase login
  1. จากไดเร็กทอรี Spelling-functions-start ให้ตั้งค่า Firebase CLI เพื่อใช้โปรเจ็กต์ Firebase ของคุณ รันคำสั่งต่อไปนี้ เลือกรหัสโปรเจ็กต์ของคุณ จากนั้นทำตามคำแนะนำ เมื่อได้รับแจ้ง คุณสามารถเลือกนามแฝงใดก็ได้ เช่น codelab เป็นต้น
$ firebase use --add

5. ไดเร็กทอรีฟังก์ชัน

ตอนนี้ คุณจะเพิ่มฟังก์ชันการทำงานโดยใช้ Firebase SDK สำหรับฟังก์ชันระบบคลาวด์เพื่อสร้างแบ็กเอนด์สำหรับเกม Spelling Practice

Cloud Functions ช่วยให้คุณมีโค้ดที่ทำงานบนคลาวด์โดยไม่ต้องตั้งค่าเซิร์ฟเวอร์ Codelab นี้จะแสดงวิธีสร้างฟังก์ชันที่ตอบสนองต่อเหตุการณ์ Firebase Authentication, Cloud Storage และ Firebase Realtime Database เริ่มต้นด้วยการรับรองความถูกต้อง

เมื่อใช้ Firebase SDK สำหรับฟังก์ชันคลาวด์ โค้ดฟังก์ชันของคุณจะอยู่ภายใต้ไดเร็กทอรี functions (โดยค่าเริ่มต้น) เพื่อให้ง่ายขึ้นสำหรับคุณ เราได้สร้างไฟล์ functions/index.js ที่จะใส่โค้ดของคุณไว้แล้ว อย่าลังเลที่จะตรวจสอบไดเร็กทอรี functions ชั่นก่อนดำเนินการต่อ

$ cd functions
$ ls

รหัสฟังก์ชันของคุณยังเป็นแอป Node.js ดังนั้นจึงจำเป็นต้องมี package.json ที่ให้ข้อมูลบางอย่างเกี่ยวกับแอปของคุณและแสดงรายการการขึ้นต่อกัน

หากคุณไม่คุ้นเคยกับ Node.js การเรียนรู้เพิ่มเติมเกี่ยวกับ Node.js ก่อนดำเนินการต่อใน Codelab จะช่วยได้

ไฟล์ package.json แสดงรายการการขึ้นต่อกันที่จำเป็นสองรายการแล้ว: Firebase SDK สำหรับฟังก์ชันคลาวด์ และ Firebase Admin SDK หากต้องการติดตั้งแบบโลคัล ให้รัน npm install จากไดเร็กทอรี functions :

$ npm install

ตอนนี้เรามาดูไฟล์ index.js กันดีกว่า:

ดัชนี js

/**
 * Copyright 2021 Google Inc. All Rights Reserved.
 * ...
 */
// TODO(DEVELOPER): Import the Cloud Functions for Firebase and Firebase Admin modules here. Also import the Actions SDK here.
// TODO(DEVELOPER): Write the getWordDetailsFromDictionaryAPI function here.
// TODO(DEVELOPER): Write the createSpellingPracticeWord function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle repeatSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle definitionOfSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle verifySpellingWord function here.

คุณจะต้องนำเข้าโมดูลที่จำเป็นก่อน จากนั้นจึงเขียนฟังก์ชันสี่ฟังก์ชันแทนที่สิ่งที่ต้องทำ ดำเนินการต่อไปยังขั้นตอนถัดไปของ Codelab เพื่อนำเข้าโมดูล

6. นำเข้าโมดูลที่จำเป็น

Codelab นี้ต้องใช้สามโมดูล

  • โมดูล firebase-functions ช่วยให้เราสามารถเขียนทริกเกอร์สำหรับฟังก์ชันคลาวด์ของเราได้
  • โมดูล firebase-admin ช่วยให้เราใช้แพลตฟอร์ม Firebase บนเซิร์ฟเวอร์ที่มีสิทธิ์การเข้าถึงของผู้ดูแลระบบ เช่น เขียนไปยัง Cloud Firestore
  • Actions SDK Node.js Fulfillment Library ตอบสนองตัวจัดการ Actions SDK สำหรับ Google Assistant
  1. ติดตั้ง Actions SDK โดยการรันคำสั่ง npm ต่อไปนี้:
$ npm install @assistant/conversation
  1. ในไฟล์ index.js ให้แทนที่ TODO แรกด้วยข้อมูลต่อไปนี้

การเปลี่ยนแปลงเหล่านี้นำเข้าแต่ละโมดูลที่จำเป็น

นอกจากนี้ Firebase Admin SDK ยังกำหนดค่าได้โดยอัตโนมัติเมื่อใช้งานในสภาพแวดล้อม Cloud Functions หรือคอนเทนเนอร์ Google Cloud อื่นๆ นี่คือสิ่งที่เกิดขึ้นเมื่อเราเรียก admin.initializeApp(); ในการเปลี่ยนแปลงด้านล่าง

ดัชนี js

/**
 * Copyright 2021 Google Inc. All Rights Reserved.
 * ...
 */

// Import the Actions SDK
const {conversation} = require('@assistant/conversation');
const https = require('https');
const app = conversation();
const cors = require('cors')({origin: true});

// Import the Firebase SDK for Cloud Functions.
const functions = require('firebase-functions');
// Import and initialize the Firebase Admin SDK.
const admin = require('firebase-admin');
admin.initializeApp();
// To access Cloud Firestore
const db = admin.firestore();
// TODO(DEVELOPER): Write the getWordDetailsFromDictionaryAPI function here.
// TODO(DEVELOPER): Write the createSpellingPracticeWord function here.
// TODO(DEVELOPER): Write the shuffleWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle repeatSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle definitionOfSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle verifySpellingWord function here.

ตอนนี้เรามาเพิ่มตรรกะทางธุรกิจโดยใช้ฟังก์ชันเพื่อรองรับ Assistant Actions

7. สร้างฟังก์ชั่น

รับคำจำกัดความของคำแล้วเขียนไปที่ Cloud Firestore

คุณจะใช้ API สาธารณะ dictionaryapi.dev เพื่อรับคำจำกัดความของคำ

ในไฟล์ index.js ให้แทนที่ TODO สำหรับ getWordDetailsFromDictionaryAPI ด้วยค่าต่อไปนี้:

ดัชนี js

// Retrieves word definition and audio pronunciation from api.dictionaryapi.dev service
// Function uses service provided by https://dictionaryapi.dev/
async function getWordDetailsFromDictionaryAPI(word) {
  let responseData="";
  let req = https.request({
    host: 'api.dictionaryapi.dev',
    port: 443,
    path:'/api/v2/entries/en/' + word,
    method:'GET'
  }, (res) => {
    res.setEncoding('utf8');
    res.on('data', d => {
        responseData+=d;
    })
    res.on('end',function(){
        let object = JSON.parse(responseData)
        const wordListRef = db.collection('wordlist');
        wordListRef.doc(object[0].word).set(
          object[0]
        );
       return responseData;
     });
  });
  req.end();
}

เพิ่มทริกเกอร์ Cloud Firestore

ถัดไป คุณจะสร้าง Cloud Function ที่ทริกเกอร์ทุกครั้งที่มีการสร้างเอกสารใหม่ใน Cloud Firestore มันจะเรียก dictionaryapi.dev API เพื่อรับคำจำกัดความของคำผ่านฟังก์ชัน getWordDetailsFromDictionaryAPI ที่เราเขียนไว้ด้านบน

ในไฟล์ index.js ให้แทนที่ TODO สำหรับ createSpellingPracticeWord ด้วยค่าต่อไปนี้:

ดัชนี js

// ทริกเกอร์ Firestore ที่ดึงคำจำกัดความของคำผ่าน getWordDetailsFromDictionaryAPI สำหรับเอกสาร Firestore ใหม่ทุกฉบับ

exports.createSpellingPracticeWord = functions.firestore
  .document('wordlist/{word}')
  .onCreate((snap, context) => {
    const newValue = snap.data();
    const word = newValue.word;
    getWordDetailsFromDictionaryAPI(word);
});

รับรายการคำศัพท์สำหรับเกม

คุณสามารถเขียน Cloud Function ที่ดึงรายการคำฝึกสะกดคำจาก Cloud Firestore สำหรับ Assistant ได้ สำหรับสิ่งนี้ เราใช้ตัวจัดการแอป

ในไฟล์ index.js ให้แทนที่ TODO สำหรับ getSpellingWordList ด้วยข้อมูลต่อไปนี้

การเพิ่มฟังก์ชันนี้ลงใน app.handle พิเศษเป็นวิธีหนึ่งในการทำให้ฟังก์ชันนี้เข้าถึงได้จาก Assistant

ดัชนี js

// Store the list of spelling words in Assistant session
app.handle('getSpellingWordList', conv => {
  const wordListRef = db.collection('wordlist').limit(50);
  const snapshot = wordListRef;

  if (snapshot.empty) {
    console.log('No matching documents.');
    return;
  }
  VocabularyList = []

  return snapshot.get().then(snapshot => {
    snapshot.forEach(doc => {
      if (doc.data().word) {
          let definition = 'unknown';
          let audio = 'unknown';
          try {
            if(doc.data().hasOwnProperty('meanings')) {
              if(doc.data().meanings[0].hasOwnProperty('definitions')) {
                  definition = doc.data().meanings[0].definitions[0].definition;
              }
            }
            if(doc.data().hasOwnProperty('phonetics')) {
              if(doc.data().phonetics.length > 0)
                audio = doc.data().phonetics[0].audio;
            }
          } catch (error) {
            console.log(error);
          }

          let obj = {
            word: doc.data().word,
            answer: doc.data().word.split("").join(" "),
            definition: definition,
            audio: audio
          }
          VocabularyList.push(obj);
      }
      // Shuffle the array
      let currentIndex = VocabularyList.length, temporaryValue, randomIndex;
      while (0 !== currentIndex) {
        randomIndex = Math.floor(Math.random() * currentIndex);
        currentIndex -= 1;
        temporaryValue = VocabularyList[currentIndex];
        VocabularyList[currentIndex] = VocabularyList[randomIndex];
        VocabularyList[randomIndex] = temporaryValue;
      }
      conv.session.params.vocabWord = VocabularyList;
      conv.session.params.vocabWordIndex = 0;
    });
  });
})

รับคำพูดจากเซสชัน Assistant

คุณสามารถเขียนฟังก์ชันคลาวด์ที่ส่งคืนคำสะกดคำถัดไปจากรายการคำได้

ในไฟล์ index.js ให้แทนที่ TODO สำหรับ getSpellingWord ด้วยค่าต่อไปนี้:

ดัชนี js

// Returns a spelling practice word to Google Assistant and uses Speech Synthesis Markup Language (SSML) to format the response
app.handle('getSpellingWord',  conv => {
  if (!conv.session.params.vocabWord.empty) {
    conv.session.params.vocabWordIndex+=1;
    const ssml = '<speak>' +
    '<audio src="'+ conv.session.params.vocabWord[conv.session.params.vocabWordIndex].audio +'">Use phonetics to spell the word.</audio> ' +
    '</speak>';
    conv.add(ssml);
  }
  else
    conv.add('Great job! You completed the Spelling practice');
});

เปิดใช้งานเกมเพื่อทำซ้ำคำ

คุณสามารถเขียน Cloud Function ที่ทำซ้ำคำปัจจุบันของเกมได้

ในไฟล์ index.js ให้แทนที่ TODO สำหรับ repeatSpellingWord ด้วยค่าต่อไปนี้:

ดัชนี js

// Returns current spelling word
app.handle('repeatSpellingWord',  conv => {
  if (!conv.session.params.vocabWord.empty) {
    const ssml = '<speak>' +
    '<audio src="'+ conv.session.params.vocabWord[conv.session.params.vocabWordIndex].audio +'">Use phonetics to spell the word. </audio> ' +
    '</speak>';
    conv.add(ssml);
  }
  else
    conv.add('Great job! You completed the Spelling practice');
});

ได้รับคำจำกัดความของคำว่า

คุณสามารถเขียน Cloud Function ที่ให้คำจำกัดความของคำปัจจุบันสำหรับเกมได้

ในไฟล์ index.js ให้แทนที่ TODO สำหรับ definitionOfSpellingWord ด้วยค่าต่อไปนี้:

ดัชนี js

// Returns spelling word definition from Assistant session parameter
app.handle('definitionOfSpellingWord',  conv => {
  conv.add( 'It means ' + conv.session.params.vocabWord[conv.session.params.vocabWordIndex].definition);
});

ตรวจสอบการสะกดคำของผู้ใช้

คุณสามารถเขียนฟังก์ชันคลาวด์ที่ตรวจสอบการตอบสนองของผู้ใช้เกี่ยวกับวิธีการสะกดคำปัจจุบันสำหรับเกมได้

ในไฟล์ index.js ให้แทนที่ TODO สำหรับ verifySpellingWord ด้วยข้อมูลต่อไปนี้:

ดัชนี js

// Verifies user spelling response
app.handle('verifySpellingWord', conv => {
  try {
    userResponse = conv.intent.params.userresponse.resolved.join("");
    if (userResponse.toLowerCase() === conv.session.params.vocabWord[conv.session.params.vocabWordIndex].word.toLowerCase()) {
      conv.add('You are correct. Say next to continue.');
    }
    else {
      conv.add('Sorry, wrong answer. The correct answer is ' + conv.session.params.vocabWord[conv.session.params.vocabWordIndex].answer + ' . Say next to continue.');
    }
  } catch (error) {
    conv.add('Sorry. I did not understand your response' );
  }
});
exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);

ปรับใช้ฟังก์ชันทั้งหมดของคุณ

ฟังก์ชันคลาวด์ของคุณจะใช้งานได้หลังจากที่คุณปรับใช้กับ Firebase แล้วเท่านั้น

จากรูทของไดเร็กทอรี spelling-functions-start ให้รันคำสั่งต่อไปนี้:

$ firebase deploy --only functions

นี่คือเอาต์พุตคอนโซลที่คุณควรเห็น:

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
⚠  functions: missing necessary APIs. Enabling now...
i  env: ensuring necessary APIs are enabled...
⚠  env: missing necessary APIs. Enabling now...
i  functions: waiting for APIs to activate...
i  env: waiting for APIs to activate...
✔  env: all necessary APIs are enabled
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (X.XX KB) for uploading
✔  functions: functions folder uploaded successfully
i  starting release process (may take several minutes)...
i  functions: creating function createSpellingPracticeWord(us-central1)...
✔  functions[createSpellingPracticeWord(us-central1)]: Successful create operation.
i  functions: creating function ActionsOnGoogleFulfillment(us-central1)...
✔  functions[ActionsOnGoogleFulfillment(us-central1)]: Successful create operation.

✔  Deploy complete!
Project Console: https://console.firebase.google.com/project/spelling-practice-1234/overview

จดบันทึก URL ปลายทาง Http ของฟังก์ชัน ActionsOnGoogleFulfillment ไว้เพื่อใช้ในภายหลัง หากต้องการรับตำแหน่งข้อมูล ให้เปิด คอนโซล Firebase จากนั้นคลิกโครงการ ฝึกสะกดคำ เปิดแดชบอร์ดฟังก์ชันเพื่อดูจุดสิ้นสุดของฟังก์ชัน

332cb0437411a242.png

คุณได้เพิ่มฟังก์ชันที่จำเป็นทั้งหมดเรียบร้อยแล้ว ตอนนี้เรามาดูการตั้งค่า Cloud Firestore กันดีกว่า

8. เปิดใช้งาน Cloud Firestore

คุณจะต้องเปิดใช้งาน Cloud Firestore

ในส่วน Build ของคอนโซล Firebase ให้คลิก Firestore จากนั้นคลิก สร้างฐานข้อมูล

5c0b4abf4410ffcf.png

การเข้าถึงข้อมูลใน Cloud Firestore ถูกควบคุมโดยกฎความปลอดภัย ขั้นแรก คุณต้องตั้งกฎพื้นฐานบางประการเกี่ยวกับข้อมูลเพื่อเริ่มต้น คลิก Firestore จากนั้นใน แท็บกฎ ของคอนโซล Firebase ให้เพิ่มกฎต่อไปนี้ จากนั้นคลิก เผยแพร่

กฎต่อไปนี้จำกัดการเข้าถึงข้อมูลสำหรับผู้ใช้ที่ลงชื่อเข้าใช้ ซึ่งจะป้องกันไม่ให้ผู้ใช้ที่ไม่ได้รับการรับรองความถูกต้องอ่านหรือเขียน

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      //
      // WARNING: These rules are insecure! We will replace them with
      // more secure rules later in the codelab
      //
      allow read, write: if request.auth != null;
    }
  }
}

9. เพิ่มข้อมูลคำสะกดลงใน Cloud Firestore

ในขั้นตอนนี้ คุณจะต้องเขียนข้อมูลการสะกดคำลงใน Cloud Firestore เพื่อให้คุณสามารถสร้างรายการคำสำหรับ Assistant (และเกม)

ข้อมูล Cloud Firestore มีโครงสร้างเป็นคอลเลกชัน เอกสาร ช่อง และคอลเลกชันย่อย แต่ละคำสำหรับเกมจะถูกจัดเก็บเป็นเอกสารของตัวเองในคอลเลกชันระดับบนสุดที่เรียกว่า wordlist สำหรับเอกสารใหม่ทุกฉบับในคอลเลกชัน Firestore ฟังก์ชัน createSpellingPracticeWord จะถูกเรียกใช้เพื่อรับรายละเอียดคำจาก บริการ Dictionary API

สร้างคอลเลกชัน Cloud Firestore

  1. ในคอนโซล Firebase ให้ไปที่ส่วน Cloud Firestore
  2. คลิก + เริ่มการรวบรวม
  3. ในกล่องข้อความ รหัสคอลเลก ชัน ให้ป้อน wordlist จากนั้นคลิก ถัดไป

1b4ccadb90f52f02.png

ต่อไป เราจะสร้างเอกสารสำหรับคำ: ข้อตกลง

  1. ในกล่องข้อความ รหัสเอกสาร ให้ป้อน agreement
  2. ในกล่องข้อความ ฟิลด์ ให้ป้อน word และในกล่องข้อความ ค่า ให้ป้อน agreement
  3. คลิก บันทึก

379037e011e8511e.png

เมื่อคุณเพิ่มเอกสารนี้ลงใน Cloud Firestore เอกสารจะทริกเกอร์ฟังก์ชัน createSpellingPracticeWord เพื่อดึงรายละเอียดคำจำกัดความของคำนั้น เพิ่มคำอื่นๆ (เช่น ความกลัว รถยนต์ ความจริง บอก ดีกว่า การเดินทาง ...) โดยการสร้างเอกสารใหม่สำหรับแต่ละคำ

10. ตั้งค่า Google Assistant

ส่วนต่อไปนี้อธิบายวิธีตั้งค่าสภาพแวดล้อมการพัฒนา Google Assistant และสร้างโปรเจ็กต์ Actions

ตรวจสอบการตั้งค่าการอนุญาต Google ของคุณ

หากต้องการทดสอบการดำเนินการที่คุณสร้างใน Codelab นี้ คุณต้องเปิดใช้สิทธิ์ที่จำเป็นเพื่อให้เครื่องจำลองสามารถเข้าถึงการดำเนินการของคุณได้ หากต้องการเปิดใช้งานสิทธิ์ ให้ทำตามขั้นตอนเหล่านี้:

  1. ไปที่หน้า ส่วนควบคุมกิจกรรม
  2. ลงชื่อเข้าใช้ด้วยบัญชี Google ของคุณ หากคุณยังไม่ได้ดำเนินการ
  3. เปิดใช้งานการอนุญาตต่อไปนี้:
  • กิจกรรมบนเว็บและแอป
  • ใต้ กิจกรรมบนเว็บและแอป ให้เลือกช่องทำเครื่องหมายถัดจาก รวมประวัติ Chrome และกิจกรรมจากไซต์ แอป และอุปกรณ์ที่ใช้บริการของ Google

c988e1e639e6d6e1.png

สร้างโครงการการดำเนินการ

โปรเจ็กต์ Actions ของคุณคือคอนเทนเนอร์สำหรับ Action ของคุณ หากต้องการสร้างโปรเจ็กต์ Actions สำหรับ Codelab นี้ ให้ทำตามขั้นตอนเหล่านี้

  1. เปิด คอนโซลการดำเนินการ
  2. คลิก โครงการใหม่
  3. ยอมรับข้อกำหนดในการให้บริการ

b174d45710b8086b.png

  1. พิมพ์หรือเลือก spelling-practice-codelab ที่คุณสร้างโดยใช้ Firebase Console (ชื่อนี้ใช้สำหรับการอ้างอิงภายในของคุณ หลังจากนั้น คุณสามารถตั้งชื่อภายนอกสำหรับโครงการของคุณได้)

a2951de5d2001fac.png

  1. คลิก นำเข้าโครงการ
  2. ใน Action ประเภทใดที่คุณต้องการสร้าง? หน้าจอ เลือกการ์ด แบบกำหนดเอง
  3. คลิก ถัดไป
  4. เลือกการ์ด โครงการเปล่า
  5. คลิก เริ่มสร้าง
  6. ป้อน การฝึกสะกดคำ สำหรับชื่อที่แสดงแล้วคลิกบันทึก

ผู้ใช้เริ่มต้นการสนทนาด้วยการดำเนินการของคุณผ่าน การร้องขอ ตัวอย่างเช่น ผู้ใช้สามารถเรียกใช้การดำเนินการของคุณโดยพูดวลีเช่น "Ok Google คุยกับการฝึกสะกดคำ" โดยที่ การฝึกสะกดคำ คือ ชื่อที่แสดง

การดำเนินการของคุณต้องมีชื่อที่แสดงหากคุณต้องการปรับใช้กับการใช้งานจริง อย่างไรก็ตาม เพื่อทดสอบการดำเนินการของคุณ คุณไม่จำเป็นต้องกำหนดชื่อที่แสดง แต่คุณสามารถใช้วลี "พูดคุยกับแอปทดสอบของฉัน" ในเครื่องจำลองเพื่อเรียกใช้การดำเนินการของคุณได้

กำหนดค่าการเติมสินค้า

คุณต้องเชื่อมต่อกับ Assistant ซึ่งเป็นตัวจัดการเหตุการณ์สำหรับ Cloud Functions ที่คุณเขียนและปรับใช้ก่อนหน้านี้ใน Codelab นี้

หากต้องการกำหนดค่าการจัดการคำสั่งซื้อของคุณ ให้ทำตามขั้นตอนเหล่านี้:

  1. คลิก Webhook ในการนำทางด้านข้าง
  2. เลือก จุดสิ้นสุด Https เป็นตัวเลือกการเติมเต็ม:

d523bf003e96e66f.png

  1. ป้อน URL ปลายทางของฟังก์ชันของคุณในกล่อง ข้อความปลายทาง HTTPs จากนั้นคลิก บันทึก

be53e2cd0d914d54.png

ในส่วนถัดไป คุณจะปรับแต่งพรอมต์สำหรับการเรียกใช้หลักของคุณในคอนโซล Actions

ตั้งค่าการร้องขอหลัก

คุณต้องแก้ไข การร้องขอหลัก เพื่อกำหนดสิ่งที่เกิดขึ้นหลังจากที่ผู้ใช้เรียกใช้การดำเนินการของคุณ

ตามค่าเริ่มต้น ตัวสร้างการดำเนินการ จะแจ้งพร้อม ต์ทั่วไปเมื่อมีการทริกเกอร์การเรียกใช้ของคุณ ( "เริ่มสร้างการดำเนินการของคุณโดยกำหนดการเรียกใช้หลัก")

หากต้องการแก้ไขพรอมต์ที่การดำเนินการของคุณส่งกลับไปยังผู้ใช้เมื่อพวกเขาเรียกใช้การดำเนินการของคุณ ให้ทำตามขั้นตอนเหล่านี้:

  1. คลิก คำขอหลัก ในการนำทาง

9ff088c04c995cde.png

  1. ทำเครื่องหมายที่ Call your webhook และเพิ่มชื่อตัวจัดการเหตุการณ์ getSpellingWordList ในกล่องข้อความ
  2. ในตัวแก้ไขโค้ด ให้แทนที่ข้อความในช่องคำ speech ด้วยข้อความต้อนรับต่อไปนี้: Welcome to Spelling Practice

หมายเหตุ: คุณสามารถใช้การจัดรูปแบบ YAML หรือ JSON เพื่อแก้ไขข้อความแจ้งของคุณได้

  1. คลิก บันทึก

ทดสอบการร้องขอหลักในเครื่องจำลอง

คอนโซลการดำเนินการมีเครื่องมือเว็บสำหรับทดสอบการดำเนินการของคุณที่เรียกว่า เครื่องจำลอง อินเทอร์เฟซจำลองอุปกรณ์ฮาร์ดแวร์และการตั้งค่าต่างๆ เพื่อให้คุณสามารถสนทนากับ Action ของคุณได้เหมือนกับว่ากำลังทำงานบน Smart Display, โทรศัพท์, ลำโพง หรือ KaiOS

หากต้องการทดสอบการเรียกใช้หลักของ Action ในเครื่องจำลอง ให้ทำตามขั้นตอนเหล่านี้:

  1. ในแถบนำทางด้านบน คลิก ทดสอบ เพื่อไปที่เครื่องจำลอง
  2. หากต้องการเรียกใช้การดำเนินการของคุณในเครื่องจำลอง ให้พิมพ์ Talk to Spelling Practice ในช่องป้อนข้อมูลด้านซ้ายบน จากนั้นกด Enter บนแป้นพิมพ์ของคุณ

651fc8da1ac9aa0a.png

เมื่อคุณเรียกใช้คำขอหลักของการดำเนินการ Assistant จะตอบกลับด้วยข้อความต้อนรับที่คุณกำหนดเอง ณ จุดนี้ การสนทนาจะสิ้นสุดลงหลังจากที่ Assistant ตอบกลับด้วยการทักทาย

ดูบันทึกเหตุการณ์

เมื่อคุณอยู่ในแท็บ ทดสอบ แผงทางด้านขวาจะแสดง บันทึกเหตุการณ์ ซึ่งแสดงประวัติการสนทนาเป็นบันทึกเหตุการณ์ บันทึกเหตุการณ์แต่ละรายการจะแสดงเหตุการณ์ที่เกิดขึ้นระหว่างการสนทนาครั้งนั้น หากต้องการดูบันทึกเหตุการณ์ ให้คลิกไอคอนสีเทาก่อนกิจกรรม

ขณะนี้การดำเนินการของคุณมีบันทึกเหตุการณ์หนึ่งรายการ ซึ่งแสดงทั้งอินพุตของผู้ใช้ ( "Talk to Spelling Practice" ) และการตอบกลับของการดำเนินการของคุณ ภาพหน้าจอต่อไปนี้แสดงบันทึกเหตุการณ์ของการดำเนินการของคุณ:

a6fb192f94426824.png

11. สร้างบทสนทนาเพื่อฝึกสะกดคำ

ตอนนี้ คุณได้กำหนดสิ่งที่เกิดขึ้นหลังจากที่ผู้ใช้เรียกใช้การดำเนินการของคุณแล้ว คุณสามารถสร้างบทสนทนาที่เหลือของการดำเนินการของคุณได้ การฝึกสะกดคำ มีสี่ฉาก และคุณต้องเปิดใช้งานแต่ละฉากก่อนจึงจะรันได้ วิธีทั่วไปที่สุดในการเปิดใช้งานฉากคือการกำหนดค่าการดำเนินการของคุณ เพื่อที่ว่าเมื่อผู้ใช้จับคู่จุดประสงค์ของผู้ใช้ภายในฉาก จุดประสงค์นั้นจะกระตุ้นให้เกิดการเปลี่ยนผ่านไปยังฉากอื่นและเปิดใช้งาน

การเปลี่ยนจากการวิงวอนหลักเป็นฉากเริ่มต้น

ในส่วนนี้ คุณจะสร้างฉากใหม่ที่เรียกว่า Start ซึ่งจะส่งข้อความแจ้งให้ผู้ใช้ถามว่าต้องการเริ่มเล่น Spelling Practice หรือไม่ คุณยังเพิ่มการเปลี่ยนจากการร้องขอหลักไปยังฉาก Start ใหม่

หากต้องการสร้างฉากนี้และเพิ่มการเปลี่ยน ให้ทำตามขั้นตอนเหล่านี้:

  1. คลิก พัฒนา ในการนำทางด้านบน จากนั้นคลิก คำขอหลัก ในการนำทางด้านซ้าย
  2. ในส่วน การเปลี่ยนภาพ ทางด้านขวา ให้คลิกเมนูแบบเลื่อนลง จากนั้นพิมพ์ Start ในช่องข้อความ

dd4f1807a57f794d.png

  1. คลิก เพิ่ม ซึ่งจะสร้างฉากที่เรียกว่า Start และบอกให้ Action เปลี่ยนไปที่ฉาก Start หลังจากที่ Action แจ้งข้อความต้อนรับแก่ผู้ใช้
  2. คลิก ฉาก ในการนำทางด้านซ้ายเพื่อแสดงรายการฉาก
  3. ใต้ ฉาก คลิก เริ่ม เพื่อดูฉาก Start
  4. คลิก + ในส่วน On Enter ของฉาก Start
  5. เลือก ส่งข้อความแจ้ง
  6. แทนที่ประโยคในช่อง speech ( Enter the response that users will see or hear... ) ด้วยคำถามที่จะถามผู้ใช้: Use phonetic alphabet to spell the word. For example alpha for a, bravo for b, charlie for c etc. Do you want to continue?

ชิปคำแนะนำเสนอคำแนะนำที่คลิกได้สำหรับผู้ใช้ที่การดำเนินการของคุณประมวลผลเป็นอินพุตของผู้ใช้ ในส่วนนี้ คุณจะเพิ่มชิปคำแนะนำที่ปรากฏด้านล่างข้อความแจ้งที่คุณเพิ่งกำหนดค่า ( Do you want to play

Spelling Practice

? ) เพื่อรองรับผู้ใช้บนอุปกรณ์ที่มีหน้าจอ

หากต้องการเพิ่มชิปข้อเสนอแนะลงในพรอมต์ของฉาก Start ให้ทำตามขั้นตอนเหล่านี้:

  1. ในฉาก Start ให้คลิกคำแนะนำด้านล่างตัวแก้ไขโค้ด การดำเนินการนี้จะเพิ่มชิปคำแนะนำตัวเดียว
  2. ในฟิลด์ title ให้แทนที่ Suggested Response ด้วย 'Yes'
  3. ใช้การจัดรูปแบบเดียวกัน เพิ่มชิปคำแนะนำชื่อ 'No' และ 'Help with Phonetics' ด้วยตนเอง โค้ดของคุณควรมีลักษณะเหมือนกับตัวอย่างต่อไปนี้:
  4. คลิก บันทึก

5ff2ecdc56801b91.png

ทดสอบการกระทำของคุณในเครื่องจำลอง

ณ จุดนี้ การกระทำของคุณควรเปลี่ยนจากการร้องขอหลักเป็นฉาก เริ่มต้น และถามผู้ใช้ว่าต้องการดำเนินการต่อหรือไม่ ชิปคำแนะนำควรปรากฏในจอแสดงผลจำลองด้วย

หากต้องการทดสอบการกระทำของคุณในเครื่องจำลอง ให้ทำตามขั้นตอนเหล่านี้:

  1. ในแถบนำทาง คลิก ทดสอบ เพื่อนำคุณไปยังเครื่องจำลอง
  2. หากต้องการทดสอบการกระทำของคุณในเครื่องจำลอง ให้พิมพ์ Talk to Spelling Practice ในช่องป้อนข้อมูล
  3. กดปุ่ม ตกลง . การกระทำของคุณควรตอบสนองด้วยพรอมต์ Main invocation และพร้อมท์ฉาก Start ที่เพิ่มเข้ามา "ยินดีต้อนรับสู่การฝึกสะกดคำ ใช้สัทอักษรเพื่อสะกดคำ ตัวอย่างเช่น อัลฟ่าสำหรับ a, bravo สำหรับ b, charlie สำหรับ c ฯลฯ คุณต้องการ ดำเนินการต่อ?" .

ภาพหน้าจอต่อไปนี้แสดงการโต้ตอบนี้:

338c9570b02a618e.png

  1. คลิกชิปคำแนะนำ Yes หรือ No หรือ Help with Phonetics เพื่อตอบสนองต่อพร้อมท์ (คุณยังสามารถพูดว่า "ใช่" หรือ "ไม่ใช่" หรือ "ความช่วยเหลือเกี่ยวกับสัทศาสตร์" หรือป้อน Yes หรือ No หรือ Help with Phonetics ในช่อง ป้อนข้อมูล )

เมื่อคุณตอบสนองต่อข้อความแจ้ง การดำเนินการของคุณจะตอบกลับด้วยข้อความที่ระบุว่าไม่สามารถเข้าใจ สิ่งที่คุณป้อน: "ขออภัย ฉันไม่เข้าใจ คุณลองอีกครั้งได้ไหม" เนื่องจากคุณยังไม่ได้กำหนดค่าการดำเนินการของคุณให้เข้าใจและตอบสนองต่ออินพุต "ใช่" หรือ "ไม่" การดำเนินการของคุณจึงจับคู่อินพุตของคุณกับความตั้งใจ NO_MATCH

ตามค่าเริ่มต้น จุดประสงค์ของระบบ NO_MATCH จะให้คำตอบทั่วไป แต่คุณสามารถปรับแต่งการตอบสนองเหล่านี้เพื่อแจ้งให้ผู้ใช้ทราบว่าคุณไม่เข้าใจข้อมูลที่ป้อนของพวกเขา Assistant จะสิ้นสุดการสนทนาของผู้ใช้กับการดำเนินการของคุณหลังจากที่ไม่สามารถจับคู่อินพุตของผู้ใช้ได้สามครั้ง

เพิ่มเจตนาไม่และสัทศาสตร์

ขณะนี้ผู้ใช้สามารถตอบคำถามที่การกระทำของคุณเกิดขึ้นได้แล้ว คุณสามารถกำหนดค่าการดำเนินการของคุณให้เข้าใจคำตอบของผู้ใช้ได้ ( "ใช่" หรือ "ไม่" หรือ "ความช่วยเหลือด้านสัทศาสตร์" ) ในส่วนต่อไปนี้ คุณสร้างความตั้งใจของผู้ใช้ที่ตรงกันเมื่อผู้ใช้พูดว่า "ใช่" หรือ "ไม่" หรือ "ช่วยเหลือเรื่องการออกเสียง" และเพิ่มความตั้งใจเหล่านี้ลงในฉาก Start เราจะใช้เจตนาของระบบ yes และจะสร้างเจตนาอื่น ๆ

สร้าง no เจตนา

ตอนนี้ คุณต้องสร้างการ no เจตนาที่จะเข้าใจและตอบสนองต่อผู้ใช้เมื่อพวกเขาไม่ต้องการเล่นเกม หากต้องการสร้างจุดประสงค์นี้ ให้ทำตามขั้นตอนเหล่านี้:

  1. คลิก พัฒนา ในการนำทาง
  2. คลิก Intent แบบกำหนดเอง ในการนำทางเพื่อเปิดรายการ Intent
  3. คลิก + (เครื่องหมายบวก) ที่ท้ายรายการความตั้งใจ ตั้งชื่อ Intent no ใหม่แล้วกด Enter
  4. คลิก ไม่ เพื่อเปิดหน้า no เจตนา
  5. ในส่วน เพิ่มวลีการฝึกอบรม คลิกในกล่องข้อความ ป้อนวลี และป้อนวลีต่อไปนี้:
  • No
  • N
  • I don't want
  • nope

98b0c9a7b67ea9b9.png

  1. คลิก บันทึก

เพิ่ม no เจตนาในฉาก Start

ตอนนี้ การดำเนินการสามารถเข้าใจได้เมื่อผู้ใช้แสดงคำ ว่า "ไม่" หรือบางสิ่งที่คล้ายกับ "ไม่" เช่น "ไม่" คุณต้องเพิ่มการ no เจตนาของผู้ใช้ในฉาก Start เนื่องจากผู้ใช้ตอบสนองต่อพรอมต์ Start (" ยินดีต้อนรับสู่การฝึกสะกดคำ ใช้อักษรสัทอักษรเพื่อสะกดคำ ตัวอย่างเช่น alpha สำหรับ a, bravo สำหรับ b, charlie สำหรับ c ฯลฯ คุณต้องการดำเนินการต่อหรือไม่?" )

เมื่อต้องการเพิ่มเจตนานี้สำหรับฉาก Start ให้ทำตามขั้นตอนเหล่านี้:

  1. คลิกฉาก เริ่ม ในการนำทาง
  2. คลิก + (เครื่องหมายบวก) ในฉาก Start ถัดจากการจัดการความตั้งใจของผู้ใช้
  3. ในส่วน เจตนา ให้เลือก ไม่ ในรายการแบบเลื่อนลง

51f752e78c8b4942.png

  1. คลิก ส่งข้อความแจ้ง และอัปเดตช่องคำ speech ด้วยข้อความต่อไปนี้: Good Bye

โค้ดในตัวแก้ไขของคุณควรมีลักษณะคล้ายกับตัวอย่างต่อไปนี้:

candidates:
  - first_simple:
      variants:
        - speech: >-
             Goodbye.
  1. ในส่วน การเปลี่ยน ให้เลือก สิ้นสุดการสนทนา จากดรอปดาวน์
  2. คลิก บันทึก

ทดสอบ no เจตนาในโปรแกรมจำลอง

ณ จุดนี้ การดำเนินการของคุณเข้าใจเมื่อผู้ใช้ไม่ต้องการเล่นเกมและตอบกลับอย่างเหมาะสม

เมื่อต้องการทดสอบเจตนานี้ในเครื่องจำลอง ให้ทำตามขั้นตอนเหล่านี้:

  1. ในแถบนำทาง คลิก ทดสอบ
  2. พิมพ์ Talk to Spelling Practice ในช่องป้อนข้อมูล แล้วกด Enter
  3. พิมพ์ No ในช่อง Input แล้วกด Enter หรือคลิกชิปไม่มีข้อเสนอแนะ

7727a456b522f31b.png

เพิ่มระบบ YES เจตนาในการ Start ฉาก

ตอนนี้ เราจะเพิ่มเจตนาของ ระบบ "ใช่" ลงในฉาก Start เนื่องจากผู้ใช้ตอบว่าใช่ในพรอมต์ Start (" ยินดีต้อนรับสู่การฝึกสะกดคำ ใช้อักษรสัทอักษรเพื่อสะกดคำ ตัวอย่างเช่น อัลฟ่า สำหรับ a, bravo สำหรับ b, charlie สำหรับ c ฯลฯ คุณต้องการดำเนินการต่อหรือไม่?" )

เมื่อต้องการเพิ่มความตั้งใจของผู้ใช้รายนี้ลงในฉาก Start ให้ทำตามขั้นตอนเหล่านี้:

  1. คลิกฉาก เริ่ม ในการนำทาง
  2. คลิก + (เครื่องหมายบวก) ในฉาก Start ถัดจาก การจัดการความตั้งใจของผู้ใช้
  3. ภายใต้ All System Intents เลือก YES ในเมนูแบบเลื่อนลง Intent

f6cbe789cde49e8f.png

  1. คลิก โทรหา webhook ของคุณ และอัปเดตกล่องข้อความ event handler ด้วยฟังก์ชันที่คุณสร้างไว้ก่อนหน้านี้: getSpellingWordList
  2. ในส่วน การเปลี่ยน ให้ คลิกรายการแบบเลื่อนลงและเลือก สิ้นสุดการสนทนา
  3. คลิก บันทึก

ทดสอบเจตนา YES ในโปรแกรมจำลอง

ณ จุดนี้ การกระทำของคุณเข้าใจว่าเมื่อใดที่ผู้ใช้ต้องการเล่นเกมและส่งกลับการตอบสนองที่เหมาะสม

เมื่อต้องการทดสอบเจตนานี้ในเครื่องจำลอง ให้ทำตามขั้นตอนเหล่านี้:

  1. ในแถบนำทาง คลิก ทดสอบ
  2. หากต้องการทดสอบการกระทำของคุณในเครื่องจำลอง ให้พิมพ์ Talk to Spelling Practice ในช่อง ป้อนข้อมูล แล้วกด Enter
  3. พิมพ์ Yes ในช่อง ป้อนข้อมูล แล้วกด Enter หรือคลิกชิปข้อเสนอแนะ Yes

การดำเนินการของคุณจะดึงรายการคำศัพท์ฝึกสะกดคำทั้งหมดและจัดเก็บไว้ในเซสชัน การดำเนินการของคุณจะสิ้นสุดเซสชันเนื่องจากคุณเลือก End conversation สำหรับความตั้งใจ YES

สร้างเจตนา Phonetics

เมื่อต้องการสร้างความตั้งใจ Phonetics ให้ทำตามขั้นตอนเหล่านี้:

  1. คลิก พัฒนา ในการนำทาง
  2. คลิก Intent แบบกำหนดเอง ในการนำทางเพื่อเปิดรายการ Intent
  3. คลิก + (เครื่องหมายบวก) ที่ท้ายรายการความตั้งใจ ตั้งชื่อ phonetics เจตนาใหม่และกด Enter
  4. คลิกเจตนา phonetics เพื่อเปิดหน้าเจตนา phonetics
  5. ในส่วนเพิ่มวลีการฝึกอบรม คลิกกล่องข้อความ ป้อนวลี และป้อนวลีต่อไปนี้:
  • how do I spell words
  • phonetics
  • help me with phonetics
  • phonetic alphabet

1455bdfca8dae46.png

  1. คลิก บันทึก

เพิ่มเจตนา phonetics ลงในฉาก Start

ตอนนี้ การดำเนินการสามารถเข้าใจได้เมื่อผู้ใช้แสดงเจตนา "สัทศาสตร์" คุณสามารถเพิ่มความตั้งใจของผู้ใช้ phonetics ลงในฉาก Start ได้ เนื่องจากผู้ใช้ตอบสนองต่อพร้อมท์ Start (" ยินดีต้อนรับสู่การฝึกสะกดคำ ใช้อักษรสัทศาสตร์เพื่อสะกดคำ ตัวอย่างเช่น alpha สำหรับ a, bravo สำหรับ b, charlie สำหรับ c ฯลฯ คุณต้องการดำเนินการต่อหรือไม่?" )

เมื่อต้องการเพิ่มความตั้งใจของผู้ใช้รายนี้ลงในฉาก Start ให้ทำตามขั้นตอนเหล่านี้:

  1. คลิกฉาก เริ่ม ในการนำทาง
  2. คลิก + (เครื่องหมายบวก) ในฉาก Start ถัดจากการจัดการความตั้งใจของผู้ใช้
  3. เลือก สัทศาสตร์ ในเมนูแบบเลื่อนลง Intent

67ee2e08000b2aee.png

  1. ในส่วน การเปลี่ยน ให้ คลิกรายการแบบเลื่อนลงและเลือก สิ้นสุดการสนทนา
  2. คลิก บันทึก

การเปลี่ยนจากฉากเริ่มต้นเป็นฉากการสะกดคำ

ในส่วนนี้ คุณจะสร้างฉากใหม่ที่เรียกว่า การสะกด ซึ่งจะส่งข้อความแจ้งให้ผู้ใช้สะกดคำโดยใช้สัทอักษร

หากต้องการสร้างฉากนี้และเพิ่มการเปลี่ยน ให้ทำตามขั้นตอนเหล่านี้:

  1. คลิก พัฒนา ในการนำทางด้านบน จากนั้นคลิก เริ่ม ฉากในการนำทางด้านซ้าย
  2. ในส่วน การจัดการความตั้งใจของผู้ใช้ ให้ คลิก when actions.intent.YES is matched และทางด้านขวาในส่วน การเปลี่ยน ให้คลิกเมนูแบบเลื่อนลงแล้วพิมพ์ Spelling ในช่องข้อความ
  3. คลิก เพิ่ม ซึ่งจะสร้างฉากที่เรียกว่า Spelling และบอกให้การดำเนินการเปลี่ยนไปเป็นฉาก Spelling หลังจากการจับคู่ด้วยเจตนา YES
  4. ขยาย ฉาก ในการนำทางด้านซ้ายเพื่อแสดงรายการฉาก
  5. ใต้ ฉาก คลิกการสะกดคำเพื่อดูฉาก Spelling
  6. คลิก + ในส่วน On Enter ของฉาก Spelling
  7. คลิก โทรหา webhook ของคุณ แล้วป้อน getSpellingWord ในกล่องข้อความตัวจัดการเหตุการณ์
  8. เลือก ส่งข้อความแจ้ง
  9. แทนที่ประโยคในช่อง speech ( Enter the response that users will see or hear... ) ด้วย {} ข้อความแจ้งจริงจะถูกเติมโดย webhook

ชิปคำแนะนำเสนอคำแนะนำที่คลิกได้สำหรับผู้ใช้ที่การดำเนินการของคุณประมวลผลเป็นอินพุตของผู้ใช้

เมื่อต้องการเพิ่มชิปข้อเสนอแนะลงในพร้อมท์ของฉาก Spelling ให้ทำตามขั้นตอนเหล่านี้:

  1. ในฉาก Spelling ให้คลิกคำแนะนำด้านล่างตัวแก้ไขโค้ด การดำเนินการนี้จะเพิ่มชิปคำแนะนำสามชิป
  2. ในฟิลด์ title ให้แทนที่ Suggested Response ด้วย 'Repeat'
  3. ใช้การจัดรูปแบบเดียวกัน เพิ่มชิปคำแนะนำชื่อ 'Skip' ด้วยตนเอง
  4. ใช้การจัดรูปแบบเดียวกัน เพิ่มชิปคำแนะนำชื่อ 'Quit' ด้วยตนเอง โค้ดของคุณควรมีลักษณะเหมือนกับตัวอย่างต่อไปนี้:
  5. คลิก บันทึก
suggestions:
      - title: 'Repeat'
      - title: 'Skip'
      - title: 'Quit'

e1d437f714ea1539.png

สร้างเจตนาทำ Repeat

เมื่อต้องการสร้างเจตนา repeat ตามขั้นตอนเหล่านี้:

  1. คลิก พัฒนา ในการนำทาง
  2. คลิก Intent แบบกำหนดเอง ในการนำทางเพื่อเปิดรายการ Intent
  3. คลิก + (เครื่องหมายบวก) ที่ท้ายรายการความตั้งใจ ตั้งชื่อเจตนาการ repeat ใหม่ แล้วกด Enter
  4. คลิกเจตนาทำ repeat เพื่อเปิดหน้าเจตนา definition
  5. ในส่วน เพิ่มวลีการฝึกอบรม คลิกกล่องข้อความ ป้อนวลี และป้อนวลีต่อไปนี้:
  • one more time please
  • say the word again
  • repeat the word
  • tell me again
  • repeat

e61f0b9f80510bc9.png

  1. คลิก บันทึก

เพิ่มเจตนา repeat ในฉาก Spelling

ตอนนี้ การดำเนินการสามารถเข้าใจได้เมื่อผู้ใช้แสดงเจตนา "ซ้ำ" คุณสามารถเพิ่มความตั้งใจของผู้ใช้ repeat ในฉาก Spelling ได้ เนื่องจากผู้ใช้ตอบสนองต่อพร้อมท์ Spelling คำ (" สะกดคำโดยใช้สัทอักษร ")

หากต้องการเพิ่มความตั้งใจของผู้ใช้รายนี้ลงในฉาก Spelling ให้ทำตามขั้นตอนเหล่านี้:

  1. คลิกฉาก การสะกดคำ ในการนำทาง
  2. คลิก + (เครื่องหมายบวก) ในฉาก Spelling ถัดจาก การจัดการความตั้งใจของผู้ใช้
  3. เลือก ทำซ้ำ ในเมนูแบบเลื่อนลง Intent

5cfd623b25bedbed.png

  1. ทำเครื่องหมายที่ Call webhook ของคุณ แล้วป้อน RepeatSpellingWord ในกล่องข้อความตัวจัดการเหตุการณ์เพื่อรับคำจำกัดความของคำ
  2. ตรวจสอบ ส่งข้อความแจ้ง
  3. แทนที่ประโยคในช่อง speech ( Enter the response that users will see or hear... ) ด้วย '' ข้อความแจ้งจริงจะถูกเติมโดย webhook

เพิ่มชิปคำแนะนำไปที่ "เมื่อจับคู่การทำซ้ำ"

  1. ใน " เมื่อจับคู่การทำซ้ำ " ใต้การจัดการเจตนาของผู้ใช้ ให้คลิก คำแนะนำ ด้านล่างโปรแกรมแก้ไขโค้ด การดำเนินการนี้จะเพิ่มชิปคำแนะนำสามชิป
  2. ในฟิลด์ title ให้แทนที่ Suggested Response ด้วย 'Skip'
  3. ใช้การจัดรูปแบบเดียวกัน เพิ่มชิปคำแนะนำชื่อ 'Quit' ด้วยตนเอง โค้ดของคุณควรมีลักษณะคล้ายกับตัวอย่างต่อไปนี้:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

ab40e4b0c432b97c.png

  1. คลิก บันทึก

สร้างเจตนารมณ์ definition

เมื่อต้องการสร้างเจตนาของ definition ทำตามขั้นตอนเหล่านี้:

  1. คลิก พัฒนา ในการนำทาง
  2. คลิก Intent แบบกำหนดเอง ในการนำทางเพื่อเปิดรายการ Intent
  3. คลิก + (เครื่องหมายบวก) ที่ท้ายรายการความตั้งใจ ตั้งชื่อ definition ความตั้งใจใหม่ แล้วกด Enter
  4. คลิกเจตนาคำ definition เพื่อเปิดหน้า definition คำจำกัดความ
  5. ในส่วน เพิ่มวลีการฝึกอบรม คลิกกล่องข้อความ ป้อนวลี และป้อนวลีต่อไปนี้:
  • I would like to know the definition
  • tell me the definition
  • what does it mean
  • meaning
  • definition
  • what is the definition?

c1b88a9c0b1ac082.png

  1. คลิก บันทึก

เพิ่มเจตนาคำ definition ให้กับฉากการ Spelling

ตอนนี้ การดำเนินการสามารถเข้าใจได้เมื่อผู้ใช้แสดงเจตนา "คำจำกัดความ" คุณสามารถเพิ่มคำ definition ความตั้งใจของผู้ใช้ลงในฉาก Spelling ได้ เนื่องจากผู้ใช้ตอบสนองต่อพร้อมท์ Spelling คำ (" สะกดคำโดยใช้สัทอักษร ")

หากต้องการเพิ่มความตั้งใจของผู้ใช้รายนี้ลงในฉาก Spelling ให้ทำตามขั้นตอนเหล่านี้:

  1. คลิกฉาก การสะกดคำ ในการนำทาง
  2. คลิก + (เครื่องหมายบวก) ในฉาก Spelling ถัดจาก การจัดการความตั้งใจของผู้ใช้
  3. เลือก คำจำกัดความ ในรายการแบบเลื่อนลง Intent

646bdcac3ad3eb0c.png

  1. ทำเครื่องหมายที่ Call webhook ของคุณ และป้อน คำจำกัดความของการสะกดคำ ในกล่องข้อความตัวจัดการเหตุการณ์เพื่อรับคำจำกัดความ
  2. ตรวจสอบ ส่งข้อความแจ้ง
  3. แทนที่ประโยคในช่อง speech ( Enter the response that users will see or hear... ) ด้วย ''` ข้อความแจ้งจริงจะถูกเติมโดย webhook

เพิ่มชิปข้อเสนอแนะในการตอบกลับเว็บฮุค

  1. ในฉาก Start ให้คลิก คำแนะนำ ด้านล่างตัวแก้ไขรหัส การกระทำนี้เพิ่มชิปข้อเสนอแนะสามชิป
  2. ในฟิลด์ title ให้แทนที่ Suggested Response ด้วย 'Skip'
  3. การใช้การจัดรูปแบบเดียวกันเพิ่มชิปข้อเสนอแนะด้วยตนเองชื่อ 'Quit' รหัสของคุณควรดูเหมือนตัวอย่างต่อไปนี้:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

25227545839D933F.PNG

  1. คลิก บันทึก

สร้างเจตนา skip

หากต้องการสร้างเจตนา skip ให้ทำตามขั้นตอนเหล่านี้:

  1. คลิก พัฒนา ในการนำทาง
  2. คลิก เจตนา ในการนำทางเพื่อเปิดรายการเจตนา
  3. คลิก + (เครื่องหมายบวก) ที่ส่วนท้ายของรายการเจตนา ตั้งชื่อเจตนาใหม่ skip และกด Enter
  4. คลิกเจตนา skip เพื่อเปิดหน้า Intent skip
  5. ในส่วน การฝึกอบรมวลี คลิกที่กล่องข้อความ วลี และป้อนวลีต่อไปนี้:
  • next word
  • go next
  • next
  • skip
  • skip word

d1c4908a3d7882f8.png

  1. คลิก บันทึก

เพิ่มความตั้งใจ Skip ไปยังฉาก Spelling

ตอนนี้การกระทำสามารถเข้าใจได้เมื่อผู้ใช้แสดงเจตนา "ข้าม" คุณสามารถเพิ่มความตั้งใจของผู้ใช้ skip ข้ามไปยังฉาก Spelling เนื่องจากผู้ใช้ตอบสนองต่อพรอมต์ Spelling คำ (" สะกดคำโดยใช้ตัวอักษรสัทศาสตร์ ")

หากต้องการเพิ่มความตั้งใจของผู้ใช้นี้ในฉาก Spelling ให้ทำตามขั้นตอนเหล่านี้:

  1. คลิกฉาก การสะกดคำ ในการนำทาง
  2. คลิกที่ เครื่องหมาย + (บวก) ในฉาก Spelling ถัดจาก ความตั้งใจของผู้ใช้ Handlin g
  3. เลือก ข้าม ในแบบเลื่อนลงโดยเจตนา

5465F97542217964.png

  1. ในส่วน การเปลี่ยนแปลง ทางด้านขวาคลิกเมนูแบบหล่นลงและเลือก Spelling

C8072485CA82BD3F.PNG

  1. คลิก บันทึก

สร้าง quit เลิก

หากต้องการสร้าง Quit ทำตามขั้นตอนเหล่านี้:

  1. คลิก พัฒนา ในการนำทาง
  2. คลิก เจตนา ในการนำทางเพื่อเปิดรายการเจตนา
  3. คลิก + (เครื่องหมายบวก) ที่ส่วนท้ายของรายการเจตนา ตั้งชื่อเจตนาใหม่ Quit แล้วกด Enter
  4. คลิก Quit เลิกเพื่อเปิดหน้าความตั้งใจ นิยาม
  5. ในส่วน การฝึกอบรมวลี คลิกที่กล่องข้อความ วลี และป้อนวลีต่อไปนี้:
  • I quit
  • Goodbye
  • Cancel
  • Exit
  • Quit

9916F77B8766541E.png

  1. คลิก บันทึก

เพิ่มความ Quit ที่จะออกไปในฉาก Spelling

ตอนนี้การกระทำสามารถเข้าใจได้เมื่อผู้ใช้แสดงความตั้งใจ "เลิก" คุณสามารถเพิ่มความตั้งใจของผู้ใช้ quit ใช้ในฉาก Spelling เนื่องจากผู้ใช้ตอบสนองต่อพรอมต์ Spelling คำ (" สะกดคำโดยใช้ตัวอักษรสัทศาสตร์ ")

หากต้องการเพิ่มความตั้งใจของผู้ใช้นี้ในฉาก Spelling ให้ทำตามขั้นตอนเหล่านี้:

  1. คลิกฉาก การสะกดคำ ในการนำทาง
  2. คลิกที่ เครื่องหมาย + (บวก) ในฉาก Spelling ถัดจาก การจัดการความตั้งใจของผู้ใช้
  3. เลือก ออก จากการดรอปดาวน์เจตนา

5f62fb18a3653d66.png

  1. ในส่วน การเปลี่ยนแปลง ทางด้านขวาคลิกเมนูแบบหล่นลงและเลือก End conversation 1ffbe35a7bbbb4b0.png
  2. คลิก บันทึก

สร้างประเภท phonetic_alphabet

ในส่วนนี้คุณสร้างประเภทใหม่ที่เรียกว่า phonetic_alphabet ซึ่งระบุตัวเลือกตัวอักษรสัทศาสตร์ที่ผู้ใช้สามารถเลือกที่จะสะกดคำ นอกจากนี้คุณยังสามารถกำหนดคำพ้องความหมายบางอย่างสำหรับตัวเลือกเหล่านี้ในกรณีที่ผู้ใช้พูดสิ่งที่คล้ายกัน ในส่วนต่อมาคุณเพิ่มประเภท phonetic_alphabet ลงในสล็อตเพื่อระบุว่าคุณต้องการได้รับการตอบกลับของผู้ใช้

ในการสร้างประเภท phonetic_alphabet ให้ทำตามขั้นตอนเหล่านี้:

  1. คลิก พัฒนา ในการนำทาง
  2. คลิกที่ + (บวกเครื่องหมาย) ภายใต้ ประเภท
  3. พิมพ์ phonetic_alphabet แล้วกด Enter
  4. คลิก phonetic_alphabet เพื่อเปิดตัวเลือก
  5. ใน ประเภทนี้จะรองรับค่าประเภทใด ส่วนเลือกตัวเลือก คำและคำพ้องความหมาย
  6. ป้อนรายการต่อไปนี้และค่าที่เกี่ยวข้องในส่วน เพิ่มรายการ :

Alpha, Apple, Amsterdam

Bravo, Butter, Baltimore

Charlie, Cat, Casablanca

เดลต้าสุนัขเดนมาร์ก

Echo, Edward, Edison

Foxtrot, Fox, Florida

กอล์ฟ, จอร์จ, Gallipoli

ชม.

โรงแรมแฮร์รี่ฮาวานา

ฉัน

อินเดียหมึกอิตาลี

เจ

Juliette, Johnny, เยรูซาเล็ม

เค

กิโลกรัมกษัตริย์กิโลกรัม

ลิมาความรักลอนดอน

ไมค์เงินมาดากัสการ์

n

พฤศจิกายน, นิวยอร์ก, แนนซี่

โอ

ออสการ์, ส้ม, ออสโล

พี

พ่อปารีสปีเตอร์

ถาม

ควิเบกราชินี

Romeo, Roma, Robert

เซียร่า, น้ำตาล, ซันติอาโก

ที

Tango, Tommy, Tripoli

ยู

เครื่องแบบร่มลุง

โวลต์

Victor, น้ำส้มสายชู, วาเลนเซีย

วิสกี้วิลเลียมวอชิงตัน

x

เอ็กซ์เรย์

Yankee, Yellow, Yorker

z

Zulu, Zebra, Zurich

ตารางค่าคีย์ของคุณควรมีลักษณะดังต่อไปนี้:

5B5A5CD9FA557E1B.PNG

  1. คลิก บันทึก

กำหนดค่าการเติมสล็อต

ถัดไปคุณจะต้องกำหนดค่าการเติมช่องในฉากการสะกดคำ ในการกำหนดค่าตรรกะการเติมสล็อตให้ทำตามขั้นตอนเหล่านี้:

  1. คลิกฉาก การสะกดคำ ในการนำทาง
  2. คลิกที่ เครื่องหมาย + (บวก) ในฉาก Spelling เพื่อ เติมช่อง
  3. ในฟิลด์ Enter Slot Name ให้เพิ่ม userresponse เป็นชื่อสล็อต
  4. ใน แบบเลื่อนลงประเภทเลือก เลือก Phonetic_alphabet เป็นประเภทสล็อต
  5. ตรวจสอบ สล็อตนี้ยอมรับรายการค่า
  6. ต้องตรวจสอบสล็อตนี้
  7. เลือกตัว เลือกการเขียนค่าสล็อตของสล็อต และป้อน userResponse ในกล่องข้อความพารามิเตอร์เซสชัน

BA57A419877A07F3.PNG

  1. คลิก บันทึก

เพิ่มเงื่อนไขในหน้าจอ Spelling

หากต้องการเพิ่มเงื่อนไขในฉาก Spelling ให้ทำตามขั้นตอนเหล่านี้:

  1. คลิกฉาก การสะกดคำ ในการนำทาง
  2. คลิกที่ เครื่องหมาย + (บวก) ในฉาก Spelling ถัดจากเงื่อนไข
  3. ป้อน scene.slots.status == "FINAL" เป็นเงื่อนไข
  4. ตรวจสอบ การโทรของคุณ webhook และป้อน คำ Verifyspellingword ในกล่องข้อความตัวจัดการเหตุการณ์เพื่อตรวจสอบการตอบสนองของผู้ใช้
  5. ตรวจสอบ ส่งพรอมต์
  6. แทนที่ประโยคในฟิลด์ speech ( Enter the response that users will see or hear... ) ด้วย {} พรอมต์จริงจะถูกเติมโดย WebHook

เพิ่มชิปข้อเสนอแนะในการตอบกลับ webhook

  1. ในฉาก Start ให้คลิก คำแนะนำ ด้านล่างตัวแก้ไขรหัส การกระทำนี้เพิ่มชิปข้อเสนอแนะสามชิป
  2. ในฟิลด์ title ให้แทนที่ Suggested Response ด้วย 'Next'
  3. การใช้การจัดรูปแบบเดียวกันเพิ่มชิปข้อเสนอแนะด้วยตนเองชื่อ 'Quit' รหัสของคุณควรดูเหมือนตัวอย่างต่อไปนี้:
suggestions:
      - title: 'Next'
      - title: 'Quit'

AC3D7A9366EBC1B1.PNG

  1. คลิก บันทึก

12. ทดสอบการสะกดคำในตัวจำลอง

เพื่อทดสอบการกระทำของคุณในตัวจำลองให้ทำตามขั้นตอนเหล่านี้:

  1. ในแถบการนำทางคลิก ทดสอบ เพื่อนำคุณไปยังตัวจำลอง
  2. ในการทดสอบการกระทำของคุณในเครื่องจำลองให้พิมพ์ Talk to Spelling Practice ในฟิลด์อินพุต
  3. กดปุ่ม ตกลง . การกระทำของคุณควรตอบสนองด้วยพรอมต์ Main invocation และพรอมต์ Start ที่เพิ่มขึ้น "ยินดีต้อนรับสู่การฝึกสะกดคำใช้ตัวอักษรสัทศาสตร์เพื่อสะกดคำเช่นอัลฟ่าสำหรับ A, Bravo สำหรับ B, Charlie สำหรับ C ฯลฯ คุณต้องการ ดำเนินการต่อ?" .
  4. บอกว่า ใช่ จะดำเนินการต่อ
  5. ตัวจำลองจะเล่นคำว่าสะกดคำ
  6. คุณสามารถสะกดคำโดยใช้ตัวอักษรสัทศาสตร์ ตัวอย่างเช่นเพื่อพูด ดีกว่า หรือพิมพ์ "Bravo echo tango tango echo romeo"
  7. ตัวจำลองจะตอบสนองด้วยการตอบกลับที่ถูกต้องหรือไม่ถูกต้อง
  8. พูด ถัดไป เพื่อดำเนินการต่อไปในคำต่อไปหรือพูด ออกไป เพื่อออกจากวงเกม

13. ขอแสดงความยินดี

ขอแสดงความยินดีคุณได้สร้างเกมของคุณสำเร็จ การฝึกฝนการสะกดคำ !

ตอนนี้คุณรู้ขั้นตอนสำคัญที่จำเป็นในการสร้างเกมโดยใช้ Cloud Firestore, ฟังก์ชั่นคลาวด์และผู้ช่วย Google Action Action Builder

สิ่งที่คุณครอบคลุม

  • วิธีการโต้ตอบกับ Cloud Firestore
  • วิธีใช้สล็อตเพื่อรวบรวมข้อมูลจากผู้ใช้
  • วิธีประมวลผลอินพุตของผู้ใช้และส่งคืนการตอบกลับ
  • วิธีใช้เงื่อนไขเพื่อเพิ่มตรรกะในฉาก
  • วิธีเพิ่มวงเกม

แหล่งข้อมูลการเรียนรู้เพิ่มเติม

คุณสามารถสำรวจทรัพยากรเหล่านี้เพื่อเรียนรู้เกี่ยวกับการสร้างการกระทำสำหรับผู้ช่วย Google:

ทำความสะอาดโครงการของคุณ [แนะนำ]

เพื่อหลีกเลี่ยงการเรียกเก็บเงินที่เป็นไปได้ขอแนะนำให้ลบโครงการที่คุณไม่ได้ตั้งใจจะใช้ ในการลบโครงการที่คุณสร้างใน codelab นี้ให้ทำตามขั้นตอนเหล่านี้:

  1. ในการลบโครงการและทรัพยากร Firebase ของคุณให้ทำตามขั้นตอนที่ระบุไว้ในส่วน โครงการปิด (ลบ)

ข้อควรระวัง: ตรวจสอบให้แน่ใจว่าคุณเลือกโครงการที่ถูกต้องสำหรับการลบในหน้า การตั้งค่า ของ Google Cloud Console

  1. ตัวเลือก: หากต้องการลบโครงการของคุณออกจากคอนโซลการกระทำทันทีให้ทำตามขั้นตอนที่แสดงในส่วน การลบโครงการ หากคุณไม่ทำขั้นตอนนี้เสร็จสิ้นโครงการของคุณจะถูกลบออกโดยอัตโนมัติหลังจากประมาณ 30 วัน

ติดตาม @ActionSongoogle & @FireBase บน Twitter เพื่อติดตามความคืบหน้าของประกาศล่าสุดและทวีตไปที่ #GoogLeio เพื่อแบ่งปันสิ่งที่คุณสร้างขึ้น!