Trò chơi luyện đánh vần thông qua Trợ lý Google và Cloud Firestore

1. Tổng quan

Nền tảng dành cho nhà phát triển Trợ lý Google cho phép bạn tạo phần mềm để mở rộng chức năng của Trợ lý Google (một trợ lý cá nhân ảo) trên hơn 1 tỷ thiết bị, bao gồm cả loa thông minh, điện thoại, ô tô, TV, tai nghe và nhiều thiết bị khác. Người dùng tương tác với Trợ lý trong cuộc trò chuyện để hoàn thành công việc, chẳng hạn như mua hàng tạp hoá hoặc đặt xe. Là nhà phát triển, bạn có thể sử dụng nền tảng Trợ lý dành cho nhà phát triển để dễ dàng tạo và quản lý trải nghiệm trò chuyện thú vị và hiệu quả giữa người dùng và dịch vụ thực hiện đơn hàng của riêng bạn.

Lớp học lập trình này đề cập đến các khái niệm ở cấp trung cấp để phát triển bằng Trợ lý Google, Cloud Functions và Cloud Firestore. Trong lớp học lập trình này, bạn sẽ xây dựng một trò chơi có tên là "Thực hành chính tả" sử dụng Trợ lý Google để yêu cầu người dùng đánh vần các từ.

Sản phẩm bạn sẽ tạo ra

Trong lớp học lập trình này, bạn sẽ xây dựng một trò chơi tinh vi có chức năng sau:

  • Nhận câu trả lời chính tả từ người dùng và sửa đổi các câu lệnh trò chuyện tuỳ thuộc vào giá trị
  • Trả lời kèm theo gợi ý liên quan đến cách đánh vần từ, chẳng hạn như định nghĩa hoặc lặp lại từ
  • Tạo vòng lặp trò chơi để người dùng có thể tương tác lại với Trợ lý sau khi đánh vần từ đó

Trước khi bắt đầu tạo bản dựng, bạn có thể tương tác với Hành động trực tiếp trên thiết bị có Trợ lý Google bằng cách nói "Ok Google, trò chuyện với chương trình Luyện đọc chính tả". Đường dẫn mặc định qua Hành động này dành cho người dùng cũ sẽ có dạng tương tác sau:

Khi bạn kết thúc lớp học lập trình này, Hành động đã hoàn thành của bạn sẽ có luồng trò chuyện như sau:

2e9f94dc0ceffffff96.png

Kiến thức bạn sẽ học được

  • Cách tương tác với Cloud Firestore
  • Cách sử dụng ô để thu thập dữ liệu của người dùng
  • Cách xử lý dữ liệu đầu vào của người dùng và trả về phản hồi
  • Cách sử dụng các điều kiện để thêm logic vào một cảnh
  • Cách thêm vòng lặp trò chơi

Bạn cần có

Sau đây là các điều kiện tiên quyết để tham gia lớp học lập trình này:

  • Một trình duyệt web, chẳng hạn như Google Chrome
  • IDE để viết Cloud Functions.
  • Phương thức thanh toán. Lớp học lập trình này sử dụng Cloud Functions cho Firebase. Do đó, dự án của bạn phải sử dụng gói giá linh hoạt của Firebase ( Tìm hiểu thêm).
  • Một thiết bị đầu cuối để chạy các lệnh shell
  • Node.js 10 trở lên

2. Lấy mã hàm

Sao chép kho lưu trữ GitHub từ dòng lệnh:

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

3. Tạo dự án Firebase và thiết lập ứng dụng

Tạo một dự án Firebase

  1. Đăng nhập vào Firebase.
  2. Trong bảng điều khiển của Firebase, hãy nhấp vào Thêm dự án (hoặc Tạo dự án), sau đó đặt tên cho dự án Firebase của bạn là Spelling-Practice.

66ae8d1894f4477.pngS

  1. Nhấp vào các lựa chọn tạo dự án. Chấp nhận các điều khoản của Firebase nếu được nhắc. Bỏ qua bước thiết lập Google Analytics vì bạn sẽ không sử dụng Analytics cho ứng dụng này.

Để tìm hiểu thêm về các dự án Firebase, hãy xem bài viết Tìm hiểu về các dự án Firebase.

Nâng cấp lên Gói giá linh hoạt

Để sử dụng Cloud Functions cho Firebase, bạn cần phải nâng cấp dự án Firebase của mình lên Gói giá linh hoạt, tức là bạn sẽ đính kèm một tài khoản thanh toán trên Google Cloud vào dự án. Để bật tính năng này, bạn phải cung cấp thẻ tín dụng hoặc phương thức thanh toán khác.

Tất cả dự án Firebase, bao gồm cả những dự án trong Gói linh hoạt, vẫn có quyền truy cập vào hạn mức sử dụng miễn phí của Cloud Functions. Các bước được nêu trong lớp học lập trình này sẽ nằm trong hạn mức sử dụng miễn phí. Tuy nhiên, bạn sẽ thấy một khoản phí nhỏ ( khoảng 0,03 USD) tính từ Cloud Storage, được dùng để lưu trữ hình ảnh bản dựng Cloud Functions của bạn.

4. Cài đặt Firebase CLI

Firebase CLI (giao diện dòng lệnh) cho phép bạn triển khai Cloud Functions.

Có một số tuỳ chọn cài đặt Giao diện dòng lệnh (CLI) của Firebase tuỳ thuộc vào hệ điều hành và trường hợp sử dụng của bạn. Các bước sau đây mô tả lựa chọn phổ biến nhất nếu bạn cũng đang sử dụng Cloud Functions.

  1. Đảm bảo bạn đã cài đặt npm, thường đi kèm với Node.js.
  2. Cài đặt hoặc nâng cấp CLI bằng cách chạy lệnh npm sau:
$ npm -g install firebase-tools
  1. Xác minh rằng CLI đã được cài đặt đúng cách bằng cách chạy:
$ firebase --version

Đảm bảo phiên bản CLI của Firebase là 9.0.0 trở lên để có tất cả các tính năng mới nhất cần thiết cho Cloud Functions. Nếu không, hãy chạy npm install -g firebase-tools để nâng cấp như minh hoạ ở trên.

  1. Uỷ quyền Giao diện dòng lệnh (CLI) của Firebase bằng cách chạy:
$ firebase login
  1. Trong thư mụcChính tả-functions-start, hãy thiết lập Giao diện dòng lệnh (CLI) của Firebase để sử dụng dự án Firebase của bạn. Chạy lệnh sau, chọn Mã dự án của bạn rồi làm theo hướng dẫn. Khi được nhắc, bạn có thể chọn bất kỳ Bí danh nào, chẳng hạn như codelab.
$ firebase use --add

5. Thư mục hàm

Bây giờ, bạn sẽ thêm chức năng bằng cách sử dụng Firebase SDK cho Cloud Functions để tạo phần phụ trợ cho trò chơi, Thực hành chính tả.

Chức năng đám mây cho phép bạn có mã chạy trên đám mây mà không phải thiết lập máy chủ. Lớp học lập trình này sẽ hướng dẫn bạn cách tạo các hàm phản ứng với các sự kiện Xác thực Firebase, Cloud Storage và Cơ sở dữ liệu theo thời gian thực của Firebase. Hãy bắt đầu với phần Xác thực.

Khi sử dụng Firebase SDK cho Cloud Functions, mã hàm của bạn sẽ nằm trong thư mục functions (theo mặc định). Để giúp bạn dễ dàng hơn, chúng tôi đã tạo tệp functions/index.js để chứa mã của bạn. Vui lòng kiểm tra thư mục functions trước khi tiếp tục.

$ cd functions
$ ls

Mã hàm của bạn cũng là ứng dụng Node.js, do đó cần có package.json cung cấp một số thông tin về ứng dụng và liệt kê các phần phụ thuộc.

Nếu chưa hiểu rõ về Node.js, bạn có thể tìm hiểu thêm về nút này trước khi tiếp tục lớp học lập trình này.

Tệp package.json đã liệt kê hai phần phụ thuộc bắt buộc: SDK Firebase cho Cloud FunctionsSDK dành cho quản trị viên của Firebase. Để cài đặt tiện ích trên thiết bị, hãy chạy npm install từ thư mục functions:

$ npm install

Bây giờ, hãy xem tệp index.js:

chỉ mục.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.

Trước tiên, bạn sẽ nhập các mô-đun cần thiết, sau đó viết 4 hàm thay cho TODO (VIỆC CẦN LÀM). Tiếp tục chuyển sang bước tiếp theo của lớp học lập trình để nhập mô-đun.

6. Nhập các mô-đun bắt buộc

Lớp học lập trình này yêu cầu 3 mô-đun.

  • Mô-đun firebase-functions cho phép chúng ta viết các yếu tố kích hoạt cho Chức năng đám mây của mình
  • Mô-đun firebase-admin cho phép chúng ta sử dụng nền tảng Firebase trên một máy chủ có quyền quản trị, chẳng hạn như để ghi vào Cloud Firestore.
  • Thư viện thực hiện hành động Node.js của SDK hành động sẽ hoàn thành các trình xử lý SDK hành động cho Trợ lý Google.
  1. Cài đặt SDK Hành động bằng cách chạy lệnh npm sau:
$ npm install @assistant/conversation
  1. Trong tệp index.js, hãy thay thế TODO đầu tiên bằng nội dung sau.

Những thay đổi này sẽ nhập từng mô-đun bắt buộc.

Ngoài ra, bạn có thể tự động định cấu hình SDK quản trị của Firebase khi triển khai trên môi trường Cloud Functions hoặc vùng chứa khác của Google Cloud. Đây là những gì sẽ xảy ra khi chúng ta gọi admin.initializeApp(); trong các thay đổi bên dưới.

chỉ mục.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.

Bây giờ, hãy thêm logic nghiệp vụ bằng các hàm hỗ trợ Hành động của Trợ lý.

7. Tạo hàm

Tìm hiểu các định nghĩa của từ và viết các từ này vào Cloud Firestore

Bạn sẽ dùng API công khai dictionaryapi.dev để tìm các định nghĩa về từ.

Trong tệp index.js, hãy thay thế TODO cho getWordDetailsFromDictionaryAPI bằng đoạn mã sau:

chỉ mục.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();
}

Thêm điều kiện kích hoạt Cloud Firestore

Tiếp theo, bạn sẽ tạo một Hàm đám mây. Hàm này sẽ kích hoạt bất cứ khi nào một tài liệu mới được tạo trong Cloud Firestore. API này sẽ gọi API dictionaryapi.dev để nhận định nghĩa từ thông qua hàm getWordDetailsFromDictionaryAPI mà chúng ta đã viết ở trên.

Trong tệp index.js, hãy thay thế TODO cho createSpellingPracticeWord bằng đoạn mã sau:

chỉ mục.js

// Điều kiện kích hoạt Firestore tìm nạp các định nghĩa từ thông qua getWordDetailsFromTừAPIAPI cho mọi tài liệu mới trên Firestore

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

Nhận danh sách các từ của trò chơi

Bạn có thể viết một Hàm đám mây để truy xuất danh sách các từ luyện viết chính tả trong Cloud Firestore cho Trợ lý. Để làm được điều này, chúng ta sẽ sử dụng trình xử lý ứng dụng.

Trong tệp index.js, hãy thay thế TODO cho getSpellingWordList bằng nội dung sau.

Thêm hàm này vào app.handle đặc biệt là một cách để cho phép truy cập hàm này thông qua Trợ lý.

chỉ mục.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;
    });
  });
})

Nhận một từ từ phiên Trợ lý

Bạn có thể viết một Hàm đám mây trả về từ chính tả tiếp theo trong danh sách từ.

Trong tệp index.js, hãy thay thế TODO cho getSpellingWord bằng đoạn mã sau:

chỉ mục.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');
});

Cho phép trò chơi lặp lại từ

Bạn có thể viết một Hàm đám mây để lặp lại từ hiện tại cho trò chơi đó.

Trong tệp index.js, hãy thay thế TODO cho repeatSpellingWord bằng đoạn mã sau:

chỉ mục.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');
});

Xem định nghĩa của từ này

Bạn có thể viết Hàm đám mây để cung cấp định nghĩa của từ hiện tại của trò chơi.

Trong tệp index.js, hãy thay thế TODO cho definitionOfSpellingWord bằng đoạn mã sau:

chỉ mục.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);
});

Kiểm tra câu trả lời về lỗi chính tả của người dùng

Bạn có thể viết một Hàm đám mây để xác minh câu trả lời của người dùng về cách đánh vần từ hiện tại của trò chơi.

Trong tệp index.js, hãy thay thế TODO cho verifySpellingWord bằng đoạn mã sau:

chỉ mục.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);

Triển khai tất cả các chức năng

Chức năng đám mây của bạn sẽ chỉ hoạt động sau khi bạn triển khai các chức năng đó lên Firebase.

Từ gốc của thư mục spelling-functions-start, hãy chạy lệnh sau:

$ firebase deploy --only functions

Đây là kết quả trên bảng điều khiển mà bạn sẽ thấy:

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

Ghi lại URL điểm cuối HTTP của hàm ActionsOnGoogleFulfillment để sử dụng sau này. Để lấy điểm cuối, hãy mở Bảng điều khiển của Firebase, sau đó nhấp vào dự án chính tả. Mở trang tổng quan của hàm để xem điểm cuối của hàm.

332cb0437411a242.pngS

Bạn đã thêm xong tất cả hàm cần thiết. Giờ hãy chuyển sang cách thiết lập Cloud Firestore.

8. Bật Cloud Firestore

Bạn sẽ cần bật Cloud Firestore.

Trong phần Build (Tạo) trên bảng điều khiển của Firebase, hãy nhấp vào Firestore. Sau đó, nhấp vào Tạo cơ sở dữ liệu.

5c0b4abf4410ffcf.png.

Quyền truy cập vào dữ liệu trong Cloud Firestore chịu sự kiểm soát của các Quy tắc bảo mật. Trước tiên, bạn cần đặt một số quy tắc cơ bản về dữ liệu để bắt đầu. Nhấp vào Firestore, rồi nhấp vào thẻ Quy tắc của bảng điều khiển của Firebase, hãy thêm các quy tắc sau, rồi nhấp vào Xuất bản.

Các quy tắc sau đây hạn chế quyền truy cập dữ liệu đối với người dùng đã đăng nhập, điều này ngăn người dùng chưa được xác thực đọc hoặc ghi.

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. Thêm dữ liệu từ kiểm tra chính tả vào Cloud Firestore

Ở bước này, bạn sẽ ghi dữ liệu về chính tả từ vào Cloud Firestore để có thể tạo danh sách từ cho Trợ lý (và trò chơi).

Dữ liệu trong Cloud Firestore được cấu trúc thành các bộ sưu tập, tài liệu, trường và tập hợp con. Mỗi từ của trò chơi sẽ được lưu trữ dưới dạng tài liệu riêng trong một tập hợp cấp cao nhất có tên là wordlist. Đối với mỗi tài liệu mới trong bộ sưu tập Firestore, hàm create |

Tạo bộ sưu tập trên Cloud Firestore

  1. Trong bảng điều khiển của Firebase, hãy chuyển đến mục Cloud Firestore.
  2. Nhấp vào + Bắt đầu thu thập.
  3. Trong hộp văn bản Mã bộ sưu tập, hãy nhập wordlist rồi nhấp vào Tiếp theo.

1b4ccadb90f52f02.pngS

Tiếp theo, chúng ta sẽ tạo một tài liệu cho một từ: agreement

  1. Trong hộp văn bản ID tài liệu, nhập agreement.
  2. Trong hộp văn bản Trường, hãy nhập word rồi nhập agreement trong hộp văn bản Giá trị.
  3. Nhấp vào Lưu.

379037e011e8511e.png.

Khi bạn thêm tài liệu này vào Cloud Firestore, thao tác này sẽ kích hoạt hàm createReleaseEditingErrorsWord để tìm nạp thông tin chi tiết về định nghĩa của từ đó. Thêm các từ khác (ví dụ: kinh ngạc, xe hơi, thật, kể, tốt hơn, đi làm, ...) bằng cách tạo một tài liệu mới cho mỗi từ.

10. Thiết lập Trợ lý Google

Các phần sau đây mô tả cách thiết lập môi trường phát triển Trợ lý Google và tạo dự án Actions.

Kiểm tra chế độ cài đặt quyền của Google

Để kiểm thử Hành động bạn tạo trong lớp học lập trình này, bạn cần cấp các quyền cần thiết để trình mô phỏng có thể truy cập vào Hành động của bạn. Để cấp quyền, hãy làm theo các bước sau:

  1. Truy cập trang Kiểm soát hoạt động.
  2. Đăng nhập bằng Tài khoản Google của bạn nếu bạn chưa đăng nhập.
  3. Cấp các quyền sau đây:
  • Web và Hoạt động trong ứng dụng
  • Trong Web & Hoạt động ứng dụng, chọn hộp kiểm bên cạnh Bao gồm cả nhật ký duyệt web trên Chrome cũng như hoạt động trên những trang web, ứng dụng và thiết bị sử dụng các dịch vụ của Google.

c988e1e639e6d6e1.png.

Tạo một dự án Actions (Hành động)

Dự án Actions là một vùng chứa cho Hành động của bạn. Để tạo dự án Actions cho lớp học lập trình này, hãy làm theo các bước sau:

  1. Mở Bảng điều khiển Actions.
  2. Nhấp vào New Project (Dự án mới).
  3. Chấp nhận điều khoản dịch vụ

b174d45710b8086b.png.

  1. Nhập hoặc chọn biểu tượng spelling-practice-codelab mà bạn đã tạo bằng Bảng điều khiển của Firebase. (Tên này để bạn tham khảo nội bộ. Sau này, bạn có thể đặt tên bên ngoài cho dự án của mình.)

a2951de5d2001fac.png.

  1. Nhấp vào Nhập dự án.
  2. Trong màn hình Bạn muốn tạo loại hành động nào?, hãy chọn thẻ Tuỳ chỉnh.
  3. Nhấp vào Tiếp theo.
  4. Chọn thẻ Blank project (Dự án trống).
  5. Nhấp vào Bắt đầu xây dựng.
  6. Nhập Kiểm tra chính tả cho tên hiển thị rồi nhấp vào Lưu.

Người dùng bắt đầu trò chuyện với Hành động của bạn thông qua lời gọi. Ví dụ: người dùng có thể gọi Hành động của bạn bằng cách nói một cụm từ như "Ok Google, hãy trò chuyện với chương trình Luyện tập chính tả", trong đó Thực hành chính tảtên hiển thị.

Hành động của bạn phải có tên hiển thị nếu bạn muốn triển khai hành động đó trên kênh phát hành công khai; tuy nhiên, để kiểm thử Hành động, bạn không cần xác định tên hiển thị. Thay vào đó, bạn có thể sử dụng cụm từ "Trò chuyện với ứng dụng thử nghiệm của tôi" trong trình mô phỏng để gọi Hành động của bạn.

Định cấu hình phương thức thực hiện

Bạn cần kết nối với Trợ lý (trình xử lý sự kiện) dành cho các Hàm đám mây mà bạn đã viết và triển khai trước đó trong lớp học lập trình này.

Để định cấu hình phương thức thực hiện, hãy làm theo các bước sau:

  1. Nhấp vào Webhook trong thanh điều hướng bên.
  2. Chọn Điểm cuối HTTP làm tuỳ chọn phương thức thực hiện:

d523bf003e96e66f.png.

  1. Nhập URL điểm cuối của hàm vào hộp văn bản điểm cuối HTTP, sau đó nhấp vào Lưu.

be53e2cd0d914d54.png.

Trong phần tiếp theo, bạn sẽ tuỳ chỉnh lời nhắc cho lệnh gọi chính trong Bảng điều khiển Actions.

Thiết lập lệnh gọi chính

Bạn phải chỉnh sửa lời gọi chính để xác định điều gì sẽ xảy ra sau khi người dùng gọi Hành động của bạn.

Theo mặc định, Trình tạo hành động sẽ đưa ra lời nhắc chung khi lệnh gọi được kích hoạt ("Bắt đầu tạo Hành động bằng cách xác định lệnh gọi chính").

Để sửa đổi lời nhắc mà Hành động của bạn gửi lại cho người dùng khi họ gọi Hành động của bạn, hãy làm theo các bước sau:

  1. Nhấp vào Lệnh gọi chính trong bảng điều hướng.

9ff088c04c995cde.pngS

  1. Đánh dấu Call your webhook và thêm tên trình xử lý sự kiện getSpellingWordList vào hộp văn bản.
  2. Trong trình soạn thảo mã, hãy thay thế văn bản trong trường speech bằng thông báo chào mừng sau: Welcome to Spelling Practice

Lưu ý: Bạn có thể sử dụng định dạng YAML hoặc JSON để chỉnh sửa câu lệnh của mình.

  1. Nhấp vào Lưu.

Kiểm thử lệnh gọi chính trong trình mô phỏng

Bảng điều khiển Actions cung cấp một công cụ web để kiểm thử Hành động, gọi là trình mô phỏng. Giao diện này mô phỏng các thiết bị phần cứng và chế độ cài đặt của các thiết bị đó. Nhờ vậy, bạn có thể trò chuyện với Hành động của mình như thể hành động đang chạy trên Màn hình thông minh, điện thoại, loa hoặc KaiOS.

Để kiểm thử lệnh gọi chính của Hành động trong trình mô phỏng, hãy làm theo các bước sau:

  1. Trong thanh điều hướng trên cùng, hãy nhấp vào Kiểm thử để chuyển đến trình mô phỏng.
  2. Để gọi Hành động của bạn trong trình mô phỏng, hãy nhập Talk to Spelling Practice vào trường nhập dữ liệu ở trên cùng bên trái, sau đó nhấn phím Enter.

651fc8da1ac9aa0a.pngS

Khi bạn kích hoạt lệnh gọi chính của Hành động, Trợ lý sẽ phản hồi bằng tin nhắn chào mừng tùy chỉnh của bạn. Lúc này, cuộc trò chuyện kết thúc sau khi Trợ lý trả lời bằng lời chào.

Xem nhật ký sự kiện

Khi bạn đang ở thẻ Test (Kiểm thử), bảng ở bên phải sẽ hiện nhật ký sự kiện. Nhật ký sự kiện này cho thấy nhật ký trò chuyện dưới dạng nhật ký sự kiện. Mỗi nhật ký sự kiện hiển thị các sự kiện xảy ra trong lượt trò chuyện đó. Để xem nhật ký sự kiện, hãy nhấp vào biểu tượng màu xám trước sự kiện.

Hành động của bạn hiện có một nhật ký sự kiện cho thấy cả thông tin đầu vào của người dùng ("Trò chuyện để luyện tập chính tả") và phản hồi cho Hành động của bạn. Ảnh chụp màn hình sau đây cho thấy nhật ký sự kiện của Hành động:

a6fb192f94426824.png.

11. Xây dựng cuộc trò chuyện về chương trình Luyện đọc chính tả

Bây giờ, bạn đã xác định được những gì sẽ xảy ra sau khi người dùng gọi Hành động, bạn có thể tạo phần còn lại cho cuộc trò chuyện của Hành động. Thực hành chính tả có 4 cảnh và bạn phải kích hoạt từng cảnh trước khi cảnh đó có thể chạy. Cách phổ biến nhất để kích hoạt một cảnh là định cấu hình Hành động sao cho khi người dùng khớp với ý định của người dùng trong một cảnh, thì ý định đó sẽ kích hoạt quá trình chuyển đổi sang một cảnh khác và kích hoạt cảnh đó.

Chuyển đổi từ lệnh gọi chính sang cảnh bắt đầu

Trong phần này, bạn sẽ tạo một cảnh mới có tên là Start. Cảnh này sẽ gửi một lời nhắc cho người dùng để hỏi xem họ có muốn bắt đầu chơi Thực hành chính tả hay không. Bạn cũng thêm hiệu ứng chuyển đổi từ lệnh gọi chính sang cảnh Start mới.

Để tạo cảnh này và thêm hiệu ứng chuyển đổi, hãy làm theo các bước sau:

  1. Nhấp vào Phát triển trong thanh điều hướng trên cùng. Sau đó, nhấp vào Lệnh gọi chính trong bảng điều hướng bên trái.
  2. Trong mục Chuyển đổi ở bên phải, hãy nhấp vào trình đơn thả xuống rồi nhập Start vào trường văn bản.

dd4f1807a57f794d.png.

  1. Nhấp vào Thêm. Thao tác này sẽ tạo một cảnh có tên Start và yêu cầu Hành động chuyển sang cảnh Start sau khi Hành động đưa ra lời nhắc chào mừng cho người dùng.
  2. Nhấp vào Cảnh trong thanh điều hướng bên trái để hiển thị danh sách các cảnh.
  3. Trong phần Scenes (Cảnh), hãy nhấp vào Start (Bắt đầu) để xem cảnh Start.
  4. Nhấp vào dấu + trong phần Khi nhập của cảnh Start.
  5. Chọn Gửi câu lệnh.
  6. Thay thế câu trong trường speech (Enter the response that users will see or hear...) bằng câu hỏi để yêu cầu người dùng: Use phonetic alphabet to spell the word. For example alpha for a, bravo for b, charlie for c etc. Do you want to continue?

Khối đề xuất cung cấp các đề xuất có thể nhấp cho người dùng mà Hành động của bạn xử lý dưới dạng hoạt động đầu vào của người dùng. Trong phần này, bạn sẽ thêm các khối đề xuất xuất hiện bên dưới câu lệnh mà bạn vừa thiết lập (Do you want to play

Spelling Practice

?) để hỗ trợ người dùng trên các thiết bị có màn hình.

Để thêm các khối đề xuất vào câu lệnh của cảnh Start, hãy làm theo các bước sau:

  1. Trong cảnh Start, hãy nhấp vào các đề xuất bên dưới trình soạn thảo mã. Thao tác này sẽ thêm một khối đề xuất.
  2. Trong trường title, hãy thay thế Suggested Response bằng 'Yes'.
  3. Sử dụng cùng một định dạng, hãy thêm thủ công một khối đề xuất có tiêu đề 'No''Help with Phonetics'. Mã của bạn sẽ trông giống như đoạn mã sau:
  4. Nhấp vào Lưu.

5ff2ecdc56801b91.pngS

Kiểm thử Hành động trong trình mô phỏng

Tại thời điểm này, Hành động của bạn phải chuyển từ lời gọi chính sang cảnh Start (Bắt đầu) và hỏi người dùng xem họ có muốn tiếp tục hay không. Khối đề xuất cũng sẽ xuất hiện trên màn hình mô phỏng.

Để kiểm tra Hành động của bạn trong trình mô phỏng, hãy làm theo các bước sau:

  1. Trong thanh điều hướng, hãy nhấp vào Kiểm thử để chuyển đến trình mô phỏng.
  2. Để kiểm thử Hành động của bạn trong trình mô phỏng, hãy nhập Talk to Spelling Practice vào trường Nhập.
  3. Nhấn Enter. Hành động của bạn phải phản hồi bằng câu lệnh Main invocation và lời nhắc cảnh Start được thêm vào, "Chào mừng bạn đến với dịch vụ Thực hành chính tả. Sử dụng bảng chữ cái theo phiên âm để đánh vần từ đó. Ví dụ: alpha cho a, bravo cho b, charlie cho c, v.v. Bạn có muốn tiếp tục không?".

Ảnh chụp màn hình sau đây minh hoạ hoạt động tương tác này:

338c9570b02a618e.png.

  1. Nhấp vào khối đề xuất Yes, No hoặc Help with Phonetics để trả lời lời nhắc. (Bạn cũng có thể nói "Có" hoặc "Không" hoặc "Trợ giúp về phiên âm" hoặc nhập Yes hay No hoặc Help with Phonetics vào trường Nhập.)

Khi bạn phản hồi lời nhắc, Hành động sẽ phản hồi bằng một thông báo cho biết rằng ứng dụng này không hiểu được thông tin bạn nhập: "Rất tiếc, tôi không hiểu ý bạn. Bạn có thể thử lại không?" Vì bạn chưa định cấu hình Hành động của mình để hiểu và phản hồi thông tin đầu vào "Có" hoặc "Không", nên Hành động đó sẽ so khớp hành động mà bạn nhập với một ý định NO_MATCH.

Theo mặc định, ý định của hệ thống NO_MATCH sẽ đưa ra phản hồi chung chung, nhưng bạn có thể tuỳ chỉnh các phản hồi này để cho người dùng biết rằng bạn không hiểu ý định của họ. Trợ lý sẽ kết thúc cuộc trò chuyện của người dùng với Hành động của bạn sau khi không khớp được hoạt động đầu vào của người dùng 3 lần.

Thêm ý định không và ý định theo phiên âm

Giờ đây, khi người dùng có thể trả lời câu hỏi mà Hành động của bạn đặt ra, bạn có thể định cấu hình Hành động để hiểu rõ hành động của người dùng câu trả lời ("Có" hoặc "Không" hoặc "Trợ giúp về phiên âm"). Trong các phần sau, bạn tạo các ý định của người dùng phù hợp khi người dùng nói "Có" hoặc "Không" hoặc "Trợ giúp về ngữ âm" rồi thêm các ý định này vào cảnh Start. Chúng ta sẽ sử dụng ý định của hệ thống yes và tạo các ý định khác.

Tạo ý định no

Bây giờ, bạn cần tạo ý định no để hiểu và phản hồi người dùng khi họ không muốn chơi trò chơi. Để tạo ý định này, hãy làm theo các bước sau:

  1. Nhấp vào Phát triển trong thanh điều hướng.
  2. Nhấp vào Ý định tuỳ chỉnh trong thanh điều hướng để mở danh sách các ý định.
  3. Nhấp vào + (dấu cộng) ở cuối danh sách ý định. Đặt tên cho ý định mới no rồi nhấn phím Enter.
  4. Nhấp vào no (không) để mở trang ý định no.
  5. Trong phần Thêm cụm từ huấn luyện, hãy nhấp vào hộp văn bản Nhập cụm từ rồi nhập các cụm từ sau:
  • No
  • N
  • I don't want
  • nope

98b0c9a7b67ea9b9.png.

  1. Nhấp vào Lưu.

Thêm ý định no vào cảnh Start

Giờ đây, Hành động có thể hiểu được khi nào người dùng đang thể hiện "no" hoặc nội dung nào đó tương tự như "no", chẳng hạn như "nope". Bạn cần thêm ý định của người dùng no vào cảnh Start vì người dùng đang phản hồi lời nhắc Start ("Chào mừng bạn đến với chương trình Luyện tập chính tả. Sử dụng bảng chữ cái theo phiên âm để đánh vần từ đó. Ví dụ: alpha cho a, bravo cho b, charlie cho c, v.v. Bạn có muốn tiếp tục không?").

Để thêm ý định này cho cảnh Start, hãy làm theo các bước sau:

  1. Nhấp vào cảnh Start (Bắt đầu) trong bảng điều hướng.
  2. Nhấp vào dấu + (dấu cộng) trong cảnh Start bên cạnh phần Xử lý ý định của người dùng.
  3. Trong phần Ý định, hãy chọn không trong trình đơn thả xuống.

51f752e78c8b4942.pngS

  1. Nhấp vào Gửi lời nhắc rồi cập nhật trường speech với nội dung sau: Good Bye.

Mã trong trình soạn thảo của bạn sẽ trông giống như đoạn mã sau:

candidates:
  - first_simple:
      variants:
        - speech: >-
             Goodbye.
  1. Trong phần Chuyển đổi, chọn Kết thúc cuộc trò chuyện trong trình đơn thả xuống.
  2. Nhấp vào Lưu.

Kiểm thử ý định no trong trình mô phỏng

Ở thời điểm này, Hành động của bạn hiểu được khi nào người dùng không muốn chơi trò chơi và trả về phản hồi thích hợp.

Để kiểm thử ý định này trong trình mô phỏng, hãy làm theo các bước sau:

  1. Trong thanh điều hướng, hãy nhấp vào Kiểm thử.
  2. Nhập Talk to Spelling Practice vào trường Nhập dữ liệu rồi nhấn phím Enter.
  3. Nhập No vào trường Input (Đầu vào) rồi nhấn Enter. Ngoài ra, hãy nhấp vào khối Không có đề xuất.

7727a456b522f31b.png.

Thêm ý định YES của hệ thống vào cảnh Start

Bây giờ, chúng ta sẽ thêm ý định SYSTEM "YES" vào cảnh Start, vì người dùng trả lời "có" với câu lệnh Start ("Chào mừng bạn đến với chương trình Luyện tập chính tả. Sử dụng bảng chữ cái theo phiên âm để đánh vần từ đó. Ví dụ: alpha cho a, bravo cho b, charlie cho c, v.v. Bạn có muốn tiếp tục không?").

Để thêm ý định của người dùng này vào cảnh Start, hãy làm theo các bước sau:

  1. Nhấp vào cảnh Start (Bắt đầu) trong bảng điều hướng.
  2. Nhấp vào + (dấu cộng) trong cảnh Start bên cạnh mục Xử lý ý định của người dùng.
  3. Trong phần Tất cả ý định của hệ thống, hãy chọn trong trình đơn ý định thả xuống.

f6cbe789cde49e8f.png.

  1. Nhấp vào Gọi webhook của bạn và cập nhật hộp văn bản event handler bằng hàm mà bạn đã tạo trước đó: getSpellingWordList
  2. Trong mục Chuyển đổi, hãy nhấp vào trình đơn thả xuống rồi chọn Kết thúc cuộc trò chuyện.
  3. Nhấp vào Lưu.

Kiểm thử ý định YES trong trình mô phỏng

Ở thời điểm này, Hành động của bạn nắm được thời điểm người dùng muốn chơi trò chơi và trả về phản hồi thích hợp.

Để kiểm thử ý định này trong trình mô phỏng, hãy làm theo các bước sau:

  1. Trong thanh điều hướng, hãy nhấp vào Kiểm thử.
  2. Để kiểm thử Hành động của bạn trong trình mô phỏng, hãy nhập Talk to Spelling Practice vào trường Input (Đầu vào) rồi nhấn phím Enter.
  3. Nhập Yes vào trường Input (Đầu vào) rồi nhấn phím Enter. Ngoài ra, bạn có thể nhấp vào khối đề xuất Yes.

Hành động của bạn tìm nạp danh sách tất cả các từ luyện viết chính tả và lưu trữ chúng trong phiên. Sau đó, Hành động của bạn kết thúc phiên vì bạn đã chọn hiệu ứng chuyển đổi End conversation cho ý định YES.

Tạo ý định Phonetics

Để tạo ý định Phonetics, hãy làm theo các bước sau:

  1. Nhấp vào Phát triển trong thanh điều hướng.
  2. Nhấp vào Ý định tuỳ chỉnh trong thanh điều hướng để mở danh sách các ý định.
  3. Nhấp vào + (dấu cộng) ở cuối danh sách ý định. Đặt tên cho ý định mới phonetics rồi nhấn vào Enter.
  4. Nhấp vào ý định phonetics để mở trang ý định phonetics.
  5. Trong phần Thêm cụm từ huấn luyện, hãy nhấp vào hộp văn bản Nhập cụm từ rồi nhập các cụm từ sau:
  • how do I spell words
  • phonetics
  • help me with phonetics
  • phonetic alphabet

1455bdfca8dae46.pngS

  1. Nhấp vào Lưu.

Thêm ý định phonetics vào cảnh Start

Giờ đây, Hành động có thể hiểu được khi nào người dùng đang thể hiện ý định "phát âm". Bạn có thể thêm ý định của người dùng phonetics vào cảnh Start, vì người dùng đang phản hồi lời nhắc Start ("Chào mừng bạn đến với chương trình Luyện tập chính tả. Sử dụng bảng chữ cái theo phiên âm để đánh vần từ đó. Ví dụ: alpha cho a, bravo cho b, charlie cho c, v.v. Bạn có muốn tiếp tục không?").

Để thêm ý định của người dùng này vào cảnh Start, hãy làm theo các bước sau:

  1. Nhấp vào cảnh Start (Bắt đầu) trong bảng điều hướng.
  2. Nhấp vào dấu + (dấu cộng) trong cảnh Start bên cạnh phần Xử lý ý định của người dùng.
  3. Chọn ngữ âm trong trình đơn ý định thả xuống.

67ee2e08000b2aee.png.

  1. Trong mục Chuyển đổi, hãy nhấp vào trình đơn thả xuống rồi chọn Kết thúc cuộc trò chuyện.
  2. Nhấp vào Lưu.

Chuyển từ cảnh Bắt đầu sang cảnh Chính tả

Trong phần này, bạn sẽ tạo một cảnh mới có tên là Chính tả. Cảnh này sẽ gửi lời nhắc người dùng đánh vần từ bằng bảng chữ cái phiên âm.

Để tạo cảnh này và thêm hiệu ứng chuyển đổi, hãy làm theo các bước sau:

  1. Nhấp vào Phát triển trong thanh điều hướng trên cùng. Sau đó, hãy nhấp vào Bắt đầu cảnh trong bảng điều hướng bên trái.
  2. Trong mục Xử lý ý định của người dùng, hãy nhấp vào biểu tượng when actions.intent.YES is matched. Sau đó, ở bên phải mục chuyển đổi, hãy nhấp vào trình đơn thả xuống rồi nhập Spelling vào trường văn bản.
  3. Nhấp vào Thêm. Thao tác này sẽ tạo một cảnh có tên Spelling và yêu cầu Hành động chuyển sang cảnh Spelling sau khi so khớp với ý định YES.
  4. Mở rộng Scenes (Cảnh) trong thanh điều hướng bên trái để hiển thị danh sách các cảnh.
  5. Trong phần Scenes (Cảnh), hãy nhấp vào Kiểm tra chính tả để xem cảnh Spelling.
  6. Nhấp vào dấu + trong phần Khi nhập của cảnh Spelling.
  7. Nhấp vào Gọi webhook của bạn rồi nhập getdictingWord vào hộp văn bản của trình xử lý sự kiện.
  8. Chọn Gửi câu lệnh.
  9. Thay thế câu trong trường speech (Enter the response that users will see or hear...) bằng {}. Lời nhắc thực tế sẽ được webhook điền sẵn.

Khối đề xuất cung cấp các đề xuất có thể nhấp cho người dùng mà Hành động của bạn xử lý dưới dạng hoạt động đầu vào của người dùng.

Để thêm các khối đề xuất vào câu lệnh của cảnh Spelling, hãy làm theo các bước sau:

  1. Trong cảnh Spelling, hãy nhấp vào các đề xuất bên dưới trình soạn thảo mã. Thao tác này sẽ thêm 3 khối đề xuất.
  2. Trong trường title, hãy thay thế Suggested Response bằng 'Repeat'.
  3. Sử dụng cùng một định dạng, thêm một khối đề xuất có tiêu đề 'Skip' theo cách thủ công.
  4. Sử dụng cùng một định dạng, thêm một khối đề xuất có tiêu đề 'Quit' theo cách thủ công. Mã của bạn sẽ trông giống như đoạn mã sau:
  5. Nhấp vào Lưu.
suggestions:
      - title: 'Repeat'
      - title: 'Skip'
      - title: 'Quit'

e1d437f714ea1539.pngS

Tạo ý định Repeat

Để tạo ý định repeat, hãy làm theo các bước sau:

  1. Nhấp vào Phát triển trong thanh điều hướng.
  2. Nhấp vào Ý định tuỳ chỉnh trong thanh điều hướng để mở danh sách các ý định.
  3. Nhấp vào + (dấu cộng) ở cuối danh sách ý định. Đặt tên cho ý định mới repeat rồi nhấn vào Enter.
  4. Nhấp vào ý định repeat để mở trang ý định definition.
  5. Trong phần Thêm cụm từ huấn luyện, hãy nhấp vào hộp văn bản Nhập cụm từ rồi nhập các cụm từ sau:
  • one more time please
  • say the word again
  • repeat the word
  • tell me again
  • repeat

e61f0b9f80510bc9.pngS

  1. Nhấp vào Lưu.

Thêm ý định repeat vào cảnh Spelling

Giờ đây, Hành động có thể biết được khi nào người dùng đang thể hiện ý định "lặp lại". Bạn có thể thêm ý định của người dùng repeat vào cảnh Spelling, vì người dùng đang phản hồi lời nhắc Spelling ("Đánh vần từ bằng bảng chữ cái phiên âm").

Để thêm ý định của người dùng này vào cảnh Spelling, hãy làm theo các bước sau:

  1. Nhấp vào cảnh Chính tả trong thanh điều hướng.
  2. Nhấp vào + (dấu cộng) trong cảnh Spelling bên cạnh mục Xử lý ý định của người dùng.
  3. Chọn Lặp lại trong trình đơn ý định thả xuống.

5cfd623b25bed.png.

  1. Đánh dấu vào mục Gọi webhook của bạn rồi nhập repeatPrimaryingWord vào hộp văn bản của trình xử lý sự kiện để nhận định nghĩa từ.
  2. Đánh dấu vào mục Gửi lời nhắc.
  3. Thay thế câu trong trường speech (Enter the response that users will see or hear...) bằng "". Lời nhắc thực tế sẽ được webhook điền sẵn.

Thêm các khối đề xuất vào phần "Khi nội dung trùng khớp lặp lại"

  1. Trong "Khi nào trùng khớp lặp lại" trong phần Xử lý ý định của người dùng, hãy nhấp vào đề xuất ở bên dưới trình soạn thảo mã. Thao tác này sẽ thêm 3 khối đề xuất.
  2. Trong trường title, hãy thay thế Suggested Response bằng 'Skip'.
  3. Sử dụng cùng định dạng, hãy thêm thủ công một khối đề xuất có tiêu đề 'Quit'.Mã của bạn sẽ trông giống như đoạn mã sau:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

ab40e4b0c432b97c.png.

  1. Nhấp vào Lưu.

Tạo ý định definition

Để tạo ý định definition, hãy làm theo các bước sau:

  1. Nhấp vào Phát triển trong thanh điều hướng.
  2. Nhấp vào Ý định tuỳ chỉnh trong thanh điều hướng để mở danh sách các ý định.
  3. Nhấp vào + (dấu cộng) ở cuối danh sách ý định. Đặt tên cho ý định mới definition rồi nhấn vào Enter.
  4. Nhấp vào ý định definition để mở trang ý định definition.
  5. Trong phần Thêm cụm từ huấn luyện, hãy nhấp vào hộp văn bản Nhập cụm từ rồi nhập các cụm từ sau:
  • I would like to know the definition
  • tell me the definition
  • what does it mean
  • meaning
  • definition
  • what is the definition?

c1b88a9c0b1ac082.pngS

  1. Nhấp vào Lưu.

Thêm ý định definition vào cảnh Spelling

Giờ đây, Hành động có thể biết được khi nào người dùng đang thể hiện ý định "định nghĩa". Bạn có thể thêm ý định của người dùng definition vào cảnh Spelling, vì người dùng đang phản hồi lời nhắc Spelling ("Đánh vần từ bằng bảng chữ cái phiên âm").

Để thêm ý định của người dùng này vào cảnh Spelling, hãy làm theo các bước sau:

  1. Nhấp vào cảnh Chính tả trong thanh điều hướng.
  2. Nhấp vào + (dấu cộng) trong cảnh Spelling bên cạnh mục Xử lý ý định của người dùng.
  3. Chọn định nghĩa trong trình đơn ý định thả xuống.

646bdcac3ad3eb0c.png.

  1. Hãy đánh dấu vào mục Gọi webhook của bạn rồi nhập definitionOfPolicyingWord vào hộp văn bản của trình xử lý sự kiện để nhận định nghĩa của từ.
  2. Đánh dấu vào mục Gửi lời nhắc.
  3. Thay thế câu trong trường speech (Enter the response that users will see or hear...) bằng "". Lời nhắc thực tế sẽ được webhook điền sẵn.

Thêm khối đề xuất vào phản hồi webhook

  1. Trong cảnh Start, hãy nhấp vào các đề xuất bên dưới trình soạn thảo mã. Thao tác này sẽ thêm 3 khối đề xuất.
  2. Trong trường title, hãy thay thế Suggested Response bằng 'Skip'.
  3. Sử dụng cùng định dạng, hãy thêm thủ công một khối đề xuất có tiêu đề 'Quit'.Mã của bạn sẽ trông giống như đoạn mã sau:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

25227545839d933f.png.

  1. Nhấp vào Lưu.

Tạo ý định skip

Để tạo ý định skip, hãy làm theo các bước sau:

  1. Nhấp vào Phát triển trong thanh điều hướng.
  2. Nhấp vào Ý định trong thanh điều hướng để mở danh sách ý định.
  3. Nhấp vào + (dấu cộng) ở cuối danh sách ý định. Đặt tên cho ý định mới skip rồi nhấn vào Enter.
  4. Nhấp vào ý định skip để mở trang ý định skip.
  5. Trong phần Thêm cụm từ huấn luyện, hãy nhấp vào hộp văn bản Nhập cụm từ rồi nhập các cụm từ sau:
  • next word
  • go next
  • next
  • skip
  • skip word

d1c4908a3d7882f8.pngS

  1. Nhấp vào Lưu.

Thêm ý định Skip vào cảnh Spelling

Giờ đây, Hành động có thể biết được khi nào người dùng đang thể hiện ý định "bỏ qua". Bạn có thể thêm ý định của người dùng skip vào cảnh Spelling, vì người dùng đang phản hồi lời nhắc Spelling ("Đánh vần từ bằng bảng chữ cái phiên âm").

Để thêm ý định của người dùng này vào cảnh Spelling, hãy làm theo các bước sau:

  1. Nhấp vào cảnh Chính tả trong thanh điều hướng.
  2. Nhấp vào dấu + (dấu cộng) trong cảnh Spelling bên cạnh Khởi động ý định của người dùng.
  3. Chọn bỏ qua trong trình đơn ý định thả xuống.

5465f97542217964.pngs

  1. Trong mục Chuyển đổi ở bên phải, hãy nhấp vào trình đơn thả xuống rồi chọn Spelling .

c8072485ca82bd3f.png.

  1. Nhấp vào Lưu.

Tạo ý định quit

Để tạo ý định Quit, hãy làm theo các bước sau:

  1. Nhấp vào Phát triển trong thanh điều hướng.
  2. Nhấp vào Ý định trong thanh điều hướng để mở danh sách ý định.
  3. Nhấp vào + (dấu cộng) ở cuối danh sách ý định. Đặt tên cho ý định mới Quit rồi nhấn vào Enter.
  4. Nhấp vào ý định Quit để mở trang ý định định nghĩa.
  5. Trong phần Thêm cụm từ huấn luyện, hãy nhấp vào hộp văn bản Nhập cụm từ rồi nhập các cụm từ sau:
  • I quit
  • Goodbye
  • Cancel
  • Exit
  • Quit

9916f77b8766541e.pngS

  1. Nhấp vào Lưu.

Thêm ý định Quit vào cảnh Spelling

Giờ đây, Hành động có thể biết được khi nào người dùng đang thể hiện ý định "thoát". Bạn có thể thêm ý định của người dùng quit vào cảnh Spelling, vì người dùng đang phản hồi lời nhắc Spelling ("Đánh vần từ bằng bảng chữ cái phiên âm").

Để thêm ý định của người dùng này vào cảnh Spelling, hãy làm theo các bước sau:

  1. Nhấp vào cảnh Chính tả trong thanh điều hướng.
  2. Nhấp vào + (dấu cộng) trong cảnh Spelling bên cạnh mục Xử lý ý định của người dùng.
  3. Chọn thoát trong trình đơn ý định thả xuống.

5f62fb18a3653d66.pngS

  1. Trong mục Chuyển đổi ở bên phải, hãy nhấp vào trình đơn thả xuống rồi chọn End conversation . 1ffbe35a7bbbb4b0.pngS
  2. Nhấp vào Lưu.

Tạo loại phonetic_alphabet

Trong phần này, bạn sẽ tạo một loại mới có tên là phonetic_alphabet. Kiểu này chỉ định các chế độ bảng chữ cái theo phiên âm mà người dùng có thể chọn để đánh vần từ đó. Bạn cũng có thể xác định một vài từ đồng nghĩa cho các tuỳ chọn này trong trường hợp người dùng nói điều gì đó tương tự. Trong phần sau, bạn sẽ thêm loại phonetic_alphabet vào một ô để chỉ định rằng bạn muốn nhận phản hồi của người dùng.

Để tạo loại phonetic_alphabet, hãy làm theo các bước sau:

  1. Nhấp vào Phát triển trong thanh điều hướng.
  2. Nhấp vào + (dấu cộng) trong phần Loại.
  3. Nhập phonetic_alphabet rồi nhấn phím Enter.
  4. Nhấp vào biểu tượng phonetic_alphabet để mở các lựa chọn.
  5. Trong phần Loại này sẽ hỗ trợ loại giá trị nào?, hãy chọn tùy chọn Từ và từ đồng nghĩa
  6. Nhập các mục nhập sau và giá trị tương ứng vào phần Thêm mục nhập:

a

alpha, apple, amsterdam

b

bravo, bơ, baltimore

c

charlie, mèo, casablanca

ngày

delta, chó, Đan Mạch

đ

echo, edward, edison

c

foxtrot, cáo, florida

g

gôn, george, gallipoli

giờ

khách sạn, harry, havana

tôi

Ấn Độ, mực, ý

j

juliette, johnny, jerusalem

n

kilo, king, kilogam

l

lima, tình yêu, London

phút

mike, tiền, madagascar

n

november, new york, nancy

o

giảioscar, cam, oslo

c

papa, paris, peter

quý

Québec, nữ hoàng,

r

robert, roma, robert

giây

GSI, sugar, santiago

t

tango, tommy, Tripoli

u

đồng phục, chú, ô, chú

phiên bản

victor, dấm, Valencia

t

whisky, william, washington

x

chụp X-quang

yankee, vàng, yorker

z

zulu, zebra, zurich

Bảng khoá-giá trị của bạn sẽ có dạng như sau:

5b5a5cd9fa557e1b.png.

  1. Nhấp vào Lưu.

Định cấu hình lấp đầy vùng

Tiếp theo, bạn cần định cấu hình lấp đầy ô trong cảnh Chính tả. Để định cấu hình logic lấp đầy vị trí, hãy làm theo các bước sau:

  1. Nhấp vào cảnh Chính tả trong thanh điều hướng.
  2. Nhấp vào + (dấu cộng) trong cảnh Spelling cho Lấp đầy vùng.
  3. Trong trường Nhập tên vùng, hãy thêm userresponse làm tên vùng.
  4. Trong trình đơn thả xuống Chọn loại, hãy chọn bảng chữ cái phiên âm làm loại vùng.
  5. Đánh dấu vào mục Vùng này chấp nhận một danh sách giá trị
  6. Đánh dấu vào mục Khe lưu trữ này được yêu cầu.
  7. Chọn lựa chọn Tuỳ chỉnh giá trị vị trí ghi lại rồi nhập userresponse vào hộp văn bản thông số phiên.

ba57a419877a07f3.png.

  1. Nhấp vào Lưu.

Thêm điều kiện vào màn hình Spelling

Để thêm Tình trạng vào cảnh Spelling, hãy làm theo các bước sau:

  1. Nhấp vào cảnh Chính tả trong thanh điều hướng.
  2. Nhấp vào dấu + (dấu cộng) trong cảnh Spelling bên cạnh Điều kiện.
  3. Nhập scene.slots.status == "FINAL" làm điều kiện
  4. Kiểm tra mục Gọi webhook của bạn rồi nhập verifyVerifyEditingWord vào hộp văn bản của trình xử lý sự kiện để xác minh phản hồi của người dùng.
  5. Đánh dấu vào mục Gửi lời nhắc.
  6. Thay thế câu trong trường speech (Enter the response that users will see or hear...) bằng {}. Lời nhắc thực tế sẽ được webhook điền sẵn.

Thêm khối đề xuất vào phản hồi webhook

  1. Trong cảnh Start, hãy nhấp vào các đề xuất bên dưới trình soạn thảo mã. Thao tác này sẽ thêm 3 khối đề xuất.
  2. Trong trường title, hãy thay thế Suggested Response bằng 'Next'.
  3. Sử dụng cùng định dạng, hãy thêm thủ công một khối đề xuất có tiêu đề 'Quit'.Mã của bạn sẽ trông giống như đoạn mã sau:
suggestions:
      - title: 'Next'
      - title: 'Quit'

ac3d7a9366ebc1b1.pngs

  1. Nhấp vào Lưu.

12. Kiểm tra chính tả trong trình mô phỏng

Để kiểm tra Hành động của bạn trong trình mô phỏng, hãy làm theo các bước sau:

  1. Trong thanh điều hướng, hãy nhấp vào Kiểm thử để chuyển đến trình mô phỏng.
  2. Để kiểm thử Hành động của bạn trong trình mô phỏng, hãy nhập Talk to Spelling Practice vào trường Nhập.
  3. Nhấn Enter. Hành động của bạn phải phản hồi bằng câu lệnh Main invocation và lời nhắc cảnh Start được thêm vào, "Chào mừng bạn đến với dịch vụ Thực hành chính tả. Sử dụng bảng chữ cái theo phiên âm để đánh vần từ đó. Ví dụ: alpha cho a, bravo cho b, charlie cho c, v.v. Bạn có muốn tiếp tục không?".
  4. Nói để tiếp tục
  5. Trình mô phỏng sẽ phát một âm từ để đánh vần
  6. Bạn có thể đánh vần từ bằng bảng chữ cái theo phiên âm. Ví dụ: để tốt hơn, hãy nói hoặc nhập "bravo repeat tango tango ten omo"
  7. Trình mô phỏng sẽ phản hồi kèm theo câu trả lời chính xác hoặc không chính xác.
  8. Nói tiếp theo để tiếp tục nói từ tiếp theo hoặc nói thoát để thoát khỏi vòng lặp trò chơi.

13. Xin chúc mừng

Xin chúc mừng, bạn đã tạo thành công trò chơi Thực hành chính tả!

Giờ đây, bạn đã biết các bước chính cần thiết để xây dựng một trò chơi bằng cách sử dụng Cloud Firestore, Cloud Functions và Trình tạo hành động của Trợ lý Google.

Nội dung bạn đã đề cập

  • Cách tương tác với Cloud Firestore
  • Cách sử dụng ô để thu thập dữ liệu của người dùng
  • Cách xử lý dữ liệu đầu vào của người dùng và trả về phản hồi
  • Cách sử dụng các điều kiện để thêm logic vào một cảnh
  • Cách thêm vòng lặp trò chơi

Tài nguyên học tập khác

Bạn có thể khám phá những tài nguyên sau đây để tìm hiểu về cách xây dựng Hành động cho Trợ lý Google:

Dọn dẹp dự án [nên dùng]

Để tránh phát sinh các khoản phí có thể phát sinh, bạn nên xóa các dự án bạn không có ý định sử dụng. Để xoá các dự án mà bạn đã tạo trong lớp học lập trình này, hãy làm theo các bước sau:

  1. Để xoá dự án và các tài nguyên Firebase, hãy hoàn tất các bước được liệt kê trong mục Tắt (xoá) dự án.

Thận trọng: Hãy nhớ chọn đúng dự án để xoá trên trang Cài đặt của Google Cloud Console.

  1. Không bắt buộc: Để xoá dự án ngay lập tức khỏi Bảng điều khiển Actions, hãy hoàn tất các bước được nêu trong phần Xoá dự án. Nếu bạn không hoàn tất bước này, dự án của bạn sẽ tự động bị xoá sau khoảng 30 ngày.

Theo dõi @ActionsOnGoogle@Firebase trên Twitter để theo dõi các thông báo mới nhất của chúng tôi và tweet để #GoogleIO để chia sẻ những gì bạn đã xây dựng!