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:
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
- Đăng nhập vào Firebase.
- 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
.
- 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.
- Đảm bảo bạn đã cài đặt npm, thường đi kèm với Node.js.
- 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
- 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.
- Uỷ quyền Giao diện dòng lệnh (CLI) của Firebase bằng cách chạy:
$ firebase login
- 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 Functions và SDK 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.
- Cài đặt SDK Hành động bằng cách chạy lệnh npm sau:
$ npm install @assistant/conversation
- 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.
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.
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
- Trong bảng điều khiển của Firebase, hãy chuyển đến mục Cloud Firestore.
- Nhấp vào + Bắt đầu thu thập.
- 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.
Tiếp theo, chúng ta sẽ tạo một tài liệu cho một từ: agreement
- Trong hộp văn bản ID tài liệu, nhập
agreement
. - Trong hộp văn bản Trường, hãy nhập
word
rồi nhậpagreement
trong hộp văn bản Giá trị. - Nhấp vào Lưu.
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:
- Truy cập trang Kiểm soát hoạt động.
- Đăng nhập bằng Tài khoản Google của bạn nếu bạn chưa đăng nhập.
- 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.
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:
- Mở Bảng điều khiển Actions.
- Nhấp vào New Project (Dự án mới).
- Chấp nhận điều khoản dịch vụ
- 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.)
- Nhấp vào Nhập dự án.
- 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.
- Nhấp vào Tiếp theo.
- Chọn thẻ Blank project (Dự án trống).
- Nhấp vào Bắt đầu xây dựng.
- 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ả là 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:
- Nhấp vào Webhook trong thanh điều hướng bên.
- Chọn Điểm cuối HTTP làm tuỳ chọn phương thức thực hiện:
- 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.
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:
- Nhấp vào Lệnh gọi chính trong bảng điều hướng.
- Đánh dấu
Call your webhook
và thêm tên trình xử lý sự kiệngetSpellingWordList
vào hộp văn bản. - 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.
- 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:
- 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.
- Để 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.
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:
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:
- 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.
- 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.
- 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ảnhStart
sau khi Hành động đưa ra lời nhắc chào mừng cho người dùng. - 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.
- Trong phần Scenes (Cảnh), hãy nhấp vào Start (Bắt đầu) để xem cảnh
Start
. - Nhấp vào dấu + trong phần Khi nhập của cảnh
Start
. - Chọn Gửi câu lệnh.
- 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:
- 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. - Trong trường
title
, hãy thay thếSuggested Response
bằng'Yes'
. - 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'
và'Help with Phonetics'
. Mã của bạn sẽ trông giống như đoạn mã sau: - Nhấp vào Lưu.
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:
- Trong thanh điều hướng, hãy nhấp vào Kiểm thử để chuyển đến trình mô phỏng.
- Để 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. - 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ảnhStart
đượ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:
- Nhấp vào khối đề xuất
Yes
,No
hoặcHelp 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ậpYes
hayNo
hoặcHelp 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:
- Nhấp vào Phát triển trong thanh điều hướng.
- Nhấp vào Ý định tuỳ chỉnh trong thanh điều hướng để mở danh sách các ý định.
- 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. - Nhấp vào no (không) để mở trang ý định
no
. - 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
- 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:
- Nhấp vào cảnh Start (Bắt đầu) trong bảng điều hướng.
- 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. - Trong phần Ý định, hãy chọn không trong trình đơn thả xuống.
- 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.
- Trong phần Chuyển đổi, chọn Kết thúc cuộc trò chuyện trong trình đơn thả xuống.
- 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:
- Trong thanh điều hướng, hãy nhấp vào Kiểm thử.
- Nhập
Talk to Spelling Practice
vào trường Nhập dữ liệu rồi nhấn phímEnter
. - 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.
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:
- Nhấp vào cảnh Start (Bắt đầu) trong bảng điều hướng.
- 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. - Trong phần Tất cả ý định của hệ thống, hãy chọn CÓ trong trình đơn ý định thả xuống.
- 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
- 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.
- 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:
- Trong thanh điều hướng, hãy nhấp vào Kiểm thử.
- Để 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. - 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ấtYes
.
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:
- Nhấp vào Phát triển trong thanh điều hướng.
- Nhấp vào Ý định tuỳ chỉnh trong thanh điều hướng để mở danh sách các ý định.
- 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àoEnter
. - Nhấp vào ý định
phonetics
để mở trang ý địnhphonetics
. - 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
- 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:
- Nhấp vào cảnh Start (Bắt đầu) trong bảng điều hướng.
- 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. - Chọn ngữ âm trong trình đơn ý định thả xuống.
- 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.
- 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:
- 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.
- 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ậpSpelling
vào trường văn bản. - 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ảnhSpelling
sau khi so khớp với ý định YES. - 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.
- Trong phần Scenes (Cảnh), hãy nhấp vào Kiểm tra chính tả để xem cảnh
Spelling
. - Nhấp vào dấu + trong phần Khi nhập của cảnh
Spelling
. - 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.
- Chọn Gửi câu lệnh.
- 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:
- 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. - Trong trường
title
, hãy thay thếSuggested Response
bằng'Repeat'
. - 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. - 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: - Nhấp vào Lưu.
suggestions: - title: 'Repeat' - title: 'Skip' - title: 'Quit'
Tạo ý định Repeat
Để tạo ý định repeat
, hãy làm theo các bước sau:
- Nhấp vào Phát triển trong thanh điều hướng.
- Nhấp vào Ý định tuỳ chỉnh trong thanh điều hướng để mở danh sách các ý định.
- 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àoEnter
. - Nhấp vào ý định
repeat
để mở trang ý địnhdefinition
. - 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
- 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:
- Nhấp vào cảnh Chính tả trong thanh điều hướng.
- 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. - Chọn Lặp lại trong trình đơn ý định thả xuống.
- Đá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ừ.
- Đánh dấu vào mục Gửi lời nhắc.
- 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"
- 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.
- Trong trường
title
, hãy thay thếSuggested Response
bằng'Skip'
. - 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'
- Nhấp vào Lưu.
Tạo ý định definition
Để tạo ý định definition
, hãy làm theo các bước sau:
- Nhấp vào Phát triển trong thanh điều hướng.
- Nhấp vào Ý định tuỳ chỉnh trong thanh điều hướng để mở danh sách các ý định.
- 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àoEnter
. - Nhấp vào ý định
definition
để mở trang ý địnhdefinition
. - 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?
- 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:
- Nhấp vào cảnh Chính tả trong thanh điều hướng.
- 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. - Chọn định nghĩa trong trình đơn ý định thả xuống.
- 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ừ.
- Đánh dấu vào mục Gửi lời nhắc.
- 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
- 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. - Trong trường
title
, hãy thay thếSuggested Response
bằng'Skip'
. - 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'
- Nhấp vào Lưu.
Tạo ý định skip
Để tạo ý định skip
, hãy làm theo các bước sau:
- Nhấp vào Phát triển trong thanh điều hướng.
- Nhấp vào Ý định trong thanh điều hướng để mở danh sách ý định.
- 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àoEnter
. - Nhấp vào ý định
skip
để mở trang ý địnhskip
. - 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
- 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:
- Nhấp vào cảnh Chính tả trong thanh điều hướng.
- 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. - Chọn bỏ qua trong trình đơn ý định thả xuống.
- 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
.
- Nhấp vào Lưu.
Tạo ý định quit
Để tạo ý định Quit
, hãy làm theo các bước sau:
- Nhấp vào Phát triển trong thanh điều hướng.
- Nhấp vào Ý định trong thanh điều hướng để mở danh sách ý định.
- 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àoEnter
. - Nhấp vào ý định
Quit
để mở trang ý định định nghĩa. - 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
- 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:
- Nhấp vào cảnh Chính tả trong thanh điều hướng.
- 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. - Chọn thoát trong trình đơn ý định thả xuống.
- 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
. - 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:
- Nhấp vào Phát triển trong thanh điều hướng.
- Nhấp vào + (dấu cộng) trong phần Loại.
- Nhập
phonetic_alphabet
rồi nhấn phímEnter
. - Nhấp vào biểu tượng
phonetic_alphabet
để mở các lựa chọn. - 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
- 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 |
có | yankee, vàng, yorker |
z | zulu, zebra, zurich |
Bảng khoá-giá trị của bạn sẽ có dạng như sau:
- 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:
- Nhấp vào cảnh Chính tả trong thanh điều hướng.
- Nhấp vào + (dấu cộng) trong cảnh
Spelling
cho Lấp đầy vùng. - Trong trường Nhập tên vùng, hãy thêm
userresponse
làm tên vùng. - 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.
- Đánh dấu vào mục Vùng này chấp nhận một danh sách giá trị
- Đánh dấu vào mục Khe lưu trữ này được yêu cầu.
- 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.
- 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:
- Nhấp vào cảnh Chính tả trong thanh điều hướng.
- Nhấp vào dấu + (dấu cộng) trong cảnh
Spelling
bên cạnh Điều kiện. - Nhập
scene.slots.status == "FINAL"
làm điều kiện - 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.
- Đánh dấu vào mục Gửi lời nhắc.
- 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
- 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. - Trong trường
title
, hãy thay thếSuggested Response
bằng'Next'
. - 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'
- 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:
- Trong thanh điều hướng, hãy nhấp vào Kiểm thử để chuyển đến trình mô phỏng.
- Để 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. - 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ảnhStart
đượ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?". - Nói Có để tiếp tục
- Trình mô phỏng sẽ phát một âm từ để đánh vần
- 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"
- 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.
- 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:
- Tài liệu về cách phát triển Actions dành cho Trợ lý Google
- Trang Actions on Google GitHub để xem mã mẫu và thư viện
- Cộng đồng Reddit chính thức dành cho các nhà phát triển tích hợp Trợ lý Google
- Nguyên tắc thiết kế cuộc trò chuyện để biết các phương pháp hay nhất và nguyên tắc về Hành động trò chuyện
- Giới thiệu về Cloud Firestore
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:
- Để 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.
- 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 và @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!