1. Genel Bakış
Google Asistan geliştirici platformu, Google Asistan'ın işlevselliğini akıllı hoparlörler, telefonlar, arabalar, TV'ler ve kulaklıklar dahil olmak üzere 1 milyardan fazla cihazda genişletmek için yazılım oluşturmanıza olanak tanır. Kullanıcılar, alışveriş yapma veya araç rezervasyonu yapma gibi işlemleri gerçekleştirmek için Asistan ile etkileşime girer. Geliştirici olarak, kullanıcılar ile kendi üçüncü taraf karşılama hizmetiniz arasında keyifli ve etkili sohbet deneyimleri oluşturup yönetmek için Asistan geliştirici platformunu kolayca kullanabilirsiniz.
Bu codelab'de Google Asistan, Cloud Functions ve Cloud Firestore ile geliştirme yapmaya yönelik orta düzey kavramlar ele alınmaktadır. Bu codelab'de, kullanıcılardan kelimelerin yazımını istemek için Google Asistan'ı kullanan "Yazım Alıştırması" adlı bir oyun oluşturacaksınız.
Ne oluşturacaksınız?
Bu codelab'de, aşağıdaki işlevlere sahip gelişmiş bir oyun oluşturacaksınız:
- Kullanıcıdan yazım yanıtları alır ve değere bağlı olarak sohbet istemlerini değiştirir.
- Kelimenin tanımını yaparak veya kelimeyi tekrarlayarak kelimenin yazımıyla ilgili ipuçları veriyor.
- Kullanıcının kelimeyi heceledikten sonra Asistan ile tekrar etkileşim kurabilmesi için oyun döngüsü oluşturur.
Geliştirmeye başlamadan önce "Ok Google, Spelling Practice ile konuş" diyerek Google Asistan özellikli cihazınızda canlı Action ile etkileşime geçebilirsiniz. Geri gelen bir kullanıcının bu işlemdeki varsayılan yolu aşağıdaki etkileşim gibi görünür:
Bu codelab'i tamamladığınızda, tamamlanan İşleminiz aşağıdaki sohbet akışına sahip olur:

Neler öğreneceksiniz?
- Cloud Firestore ile etkileşim kurma
- Kullanıcıdan veri toplamak için yuvaları kullanma
- Kullanıcı girişini işleme ve yanıt döndürme
- Bir sahneye mantık eklemek için koşulları kullanma
- Oyun döngüsü ekleme
Gerekenler
Bu codelab'in ön koşulları şunlardır:
- Google Chrome gibi bir web tarayıcısı
- Cloud Functions işlevleri yazmak için bir IDE.
- Bir ödeme yöntemi. Bu codelab'de, projenizin Firebase Blaze fiyatlandırma planında olmasını gerektiren Cloud Functions for Firebase kullanılmaktadır ( Daha fazla bilgi).
- Kabuk komutlarını çalıştırmak için bir terminal
- Node.js 10 veya sonraki sürümler
2. İşlev kodunu alma
GitHub deposunu komut satırından klonlayın:
$ git clone https://github.com/FirebaseExtended/codelab-actions-firestore
3. Firebase projesi oluşturma ve uygulamanızı ayarlama
Firebase projesi oluşturma
- Firebase'de oturum açın.
- Firebase konsolunda Proje ekle'yi (veya Proje oluştur'u) tıklayın, ardından Firebase projenizi adlandırın
Spelling-Practice.

- Proje oluşturma seçeneklerini tıklayın. İstenirse Firebase şartlarını kabul edin. Bu uygulama için Analytics'i kullanmayacağınızdan Google Analytics'i ayarlamayı atlayın.
Firebase projeleri hakkında daha fazla bilgi edinmek için Firebase projelerini anlama başlıklı makaleyi inceleyin.
Blaze fiyatlandırma planına yükseltme
Cloud Functions for Firebase'i kullanmak için Firebase projenizi Blaze fiyatlandırma planına yükseltmeniz gerekir. Bu durumda, projenize bir Google Cloud Faturalandırma hesabı bağlarsınız. Bu işlem için kredi kartı veya başka bir ödeme yöntemi sağlamanız gerekir.
Blaze planındaki projeler de dahil olmak üzere tüm Firebase projeleri, Cloud Functions'ın ücretsiz kullanım kotalarına erişmeye devam edebilir. Bu codelab'de belirtilen adımlar, ücretsiz kullanım sınırları içinde yer alır. Ancak Cloud Functions derleme görüntülerinizi barındırmak için kullanılan Cloud Storage'dan küçük ücretler ( yaklaşık 0,03 ABD doları) alınır.
4. Firebase CLI'yı yükleme
Firebase CLI (komut satırı arayüzü), Cloud Functions'ınızı dağıtmanıza olanak tanır.
İşletim sisteminize ve kullanım alanınıza bağlı olarak Firebase CLI'yı yüklemek için çeşitli seçenekler vardır. Aşağıdaki adımlarda, Cloud Functions'ı da kullanıyorsanız en yaygın seçenek açıklanmaktadır.
- Genellikle Node.js ile birlikte gelen npm'yi yüklediğinizden emin olun.
- Aşağıdaki npm komutunu çalıştırarak CLI'yı yükleyin veya yükseltin:
$ npm -g install firebase-tools
- Aşağıdaki komutu çalıştırarak CLI'nın doğru şekilde yüklendiğini doğrulayın:
$ firebase --version
Firebase CLI sürümünün 9.0.0 veya sonraki bir sürüm olduğundan emin olun. Böylece, Cloud Functions için gereken en yeni özelliklerin tümüne sahip olursunuz. Aksi takdirde, yukarıda gösterildiği gibi yükseltmek için npm install -g firebase-tools komutunu çalıştırın.
- Aşağıdaki komutu çalıştırarak Firebase CLI'yi yetkilendirin:
$ firebase login
- Spelling-functions-start dizininden Firebase projenizi kullanmak için Firebase CLI'yı ayarlayın. Aşağıdaki komutu çalıştırın, proje kimliğinizi seçin ve talimatları uygulayın. İstendiğinde, örneğin
codelabgibi bir takma ad seçebilirsiniz.
$ firebase use --add
5. İşlevler dizini
Şimdi, Spelling Practice oyununun arka ucunu oluşturmak için Cloud Functions için Firebase SDK'yı kullanarak işlevsellik ekleyeceksiniz.
Cloud Functions, sunucu kurmanıza gerek kalmadan bulutta çalışan kodlara sahip olmanızı sağlar. Bu codelab'de, Firebase Authentication, Cloud Storage ve Firebase Realtime Database etkinliklerine tepki veren işlevleri nasıl oluşturacağınız gösterilecektir. İşe kimlik doğrulama ile başlayalım.
Cloud Functions için Firebase SDK'yı kullanırken işlevler kodunuz (varsayılan olarak) functions dizininde yer alır. İşinizi kolaylaştırmak için kodunuzun yerleştirileceği functions/index.js dosyasını sizin için oluşturduk. Devam etmeden önce functions dizinini inceleyebilirsiniz.
$ cd functions $ ls
İşlev kodunuz da bir Node.js uygulamasıdır ve bu nedenle uygulamanız hakkında bazı bilgiler veren ve bağımlılıkları listeleyen bir package.json gerektirir.
Node.js hakkında bilginiz yoksa codelab'e devam etmeden önce bu konuda daha fazla bilgi edinmeniz faydalı olacaktır.
package.json dosyasında zaten iki zorunlu bağımlılık listeleniyor: Cloud Functions için Firebase SDK ve Firebase Admin SDK. Bunları yerel olarak yüklemek için functions dizininden npm install komutunu çalıştırın:
$ npm install
Şimdi index.js dosyasına göz atalım:
index.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.
Önce gerekli modülleri içe aktaracak, ardından TODO'ların yerine dört işlev yazacaksınız. Modülleri içe aktarmak için codelab'in sonraki adımına geçin.
6. Gerekli modülleri içe aktarın
Bu codelab için üç modül gerekir.
firebase-functionsmodülü, Cloud Functions'ımız için tetikleyiciler yazmamıza olanak tanır.firebase-adminmodülü, Firebase platformunu yönetici erişimi olan bir sunucuda kullanmamıza (ör. Cloud Firestore'a yazmak için) olanak tanır.- Actions SDK Node.js Fulfillment Library, Google Asistan için Actions SDK işleyicilerini karşılar.
- Aşağıdaki npm komutunu çalıştırarak Actions SDK'yı yükleyin:
$ npm install @assistant/conversation
index.jsdosyasında, ilk TODO'yu aşağıdakiyle değiştirin.
Bu değişiklikler, gerekli modüllerin her birini içe aktarır.
Ayrıca, Firebase Admin SDK, Cloud Functions ortamına veya başka bir Google Cloud kapsayıcısına dağıtıldığında otomatik olarak yapılandırılabilir. Aşağıdaki değişikliklerde admin.initializeApp(); olarak adlandırılan özellikler şunlardır:
index.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.
Şimdi de Asistan İşlemleri'ni desteklemek için işlevleri kullanarak iş mantığı ekleyelim.
7. İşlevler oluşturma
Kelime tanımlarını alıp Cloud Firestore'a yazma
Kelime tanımlarını almak için dictionaryapi.dev herkese açık API'yi kullanacaksınız.
index.js dosyasında, getWordDetailsFromDictionaryAPI için yapılacaklar listesini aşağıdakilerle değiştirin:
index.js
// Retrieves word definition and audio pronunciation from api.dictionaryapi.dev service
// Function uses service provided by https://dictionaryapi.dev/
async function getWordDetailsFromDictionaryAPI(word) {
let responseData="";
let req = https.request({
host: 'api.dictionaryapi.dev',
port: 443,
path:'/api/v2/entries/en/' + word,
method:'GET'
}, (res) => {
res.setEncoding('utf8');
res.on('data', d => {
responseData+=d;
})
res.on('end',function(){
let object = JSON.parse(responseData)
const wordListRef = db.collection('wordlist');
wordListRef.doc(object[0].word).set(
object[0]
);
return responseData;
});
});
req.end();
}
Cloud Firestore tetikleyicisi ekleme
Ardından, Cloud Firestore'da yeni bir doküman oluşturulduğunda tetiklenen bir Cloud Functions işlevi oluşturacaksınız. Hemen yukarıda yazdığımız getWordDetailsFromDictionaryAPI işlevi aracılığıyla kelime tanımlarını almak için dictionaryapi.dev API'sini çağırır.
index.js dosyasında, createSpellingPracticeWord için yapılacaklar listesini aşağıdakilerle değiştirin:
index.js
// Her yeni Firestore belgesi için getWordDetailsFromDictionaryAPI aracılığıyla kelime tanımlarını getiren Firestore tetikleyicisi
exports.createSpellingPracticeWord = functions.firestore
.document('wordlist/{word}')
.onCreate((snap, context) => {
const newValue = snap.data();
const word = newValue.word;
getWordDetailsFromDictionaryAPI(word);
});
Oyun için kelime listesi alma
Asistan için Cloud Firestore'dan yazım alıştırması kelimelerinin listesini alan bir Cloud Function yazabilirsiniz. Bunun için uygulama işleyiciyi kullanırız.
index.js dosyasında, getSpellingWordList için yapılacaklar listesini aşağıdakilerle değiştirin.
Bu işlevi özel app.handle'ye eklemek, işlevi Asistan'dan erişilebilir hale getirmenin bir yoludur.
index.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;
});
});
})
Asistan oturumundan kelime alma
Kelime listesindeki bir sonraki heceleme kelimesini döndüren bir Cloud Functions işlevi yazabilirsiniz.
index.js dosyasında, getSpellingWord için yapılacaklar listesini aşağıdakilerle değiştirin:
index.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');
});
Oyunun kelimeyi tekrar etmesini etkinleştirme
Oyun için mevcut kelimeyi tekrarlayan bir Cloud Functions işlevi yazabilirsiniz.
index.js dosyasında, repeatSpellingWord için yapılacaklar listesini aşağıdakilerle değiştirin:
index.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');
});
Kelimenin tanımını öğrenme
Oyun için mevcut kelimenin tanımını sağlayan bir Cloud Functions işlevi yazabilirsiniz.
index.js dosyasında, definitionOfSpellingWord için yapılacaklar listesini aşağıdakilerle değiştirin:
index.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);
});
Kullanıcının yazım yanıtını kontrol etme
Kullanıcının, oyundaki mevcut kelimenin nasıl yazılacağıyla ilgili yanıtını doğrulayan bir Cloud Functions işlevi yazabilirsiniz.
index.js dosyasında, verifySpellingWord için yapılacaklar listesini aşağıdakilerle değiştirin:
index.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);
Tüm işlevlerinizi dağıtma
Cloud Functions işlevleriniz yalnızca Firebase'e dağıttıktan sonra etkin olur.
spelling-functions-start dizininin kökünden aşağıdaki komutu çalıştırın:
$ firebase deploy --only functions
Görmeniz gereken konsol çıkışı şudur:
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
Daha sonra kullanmak üzere ActionsOnGoogleFulfillment işlevinin HTTP uç nokta URL'sini not edin. Uç noktayı almak için Firebase Console'u açın ve spelling-practice projesini tıklayın. İşlevler uç noktasını görüntülemek için İşlevler kontrol panelini açın.

Gerekli tüm işlevleri ekleme işlemini tamamladınız. Şimdi Cloud Firestore'u ayarlamaya geçelim.
8. Cloud Firestore'u etkinleştirin
Cloud Firestore'u etkinleştirmeniz gerekir.
Firebase konsolunun Build (Oluştur) bölümünde Firestore'u tıklayın. Ardından Veritabanı oluştur'u tıklayın.

Cloud Firestore'daki verilere erişim, güvenlik kurallarıyla kontrol edilir. Başlamak için öncelikle verilerle ilgili bazı temel kurallar belirlemeniz gerekir. Firestore'u tıklayın ve ardından Firebase konsolunun Kurallar sekmesinde aşağıdaki kuralları ekleyin, ardından Yayınla'yı tıklayın.
Aşağıdaki kurallar, veri erişimini oturum açmış kullanıcılarla sınırlandırır. Bu sayede, kimliği doğrulanmamış kullanıcıların okuma veya yazma işlemleri yapması engellenir.
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
//
// WARNING: These rules are insecure! We will replace them with
// more secure rules later in the codelab
//
allow read, write: if request.auth != null;
}
}
}
9. Cloud Firestore'a yazım sözcükleri verileri ekleme
Bu adımda, Asistan (ve oyun) için kelime listesi oluşturabilmek amacıyla heceleme kelimeleri verilerini Cloud Firestore'a yazacaksınız.
Cloud Firestore verileri koleksiyonlar, belgeler, alanlar ve alt koleksiyonlar halinde yapılandırılır. Oyundaki her kelime, wordlist adlı üst düzey koleksiyonda kendi dokümanı olarak saklanır. Firestore koleksiyonundaki her yeni doküman için Dictionary API hizmetinden kelime ayrıntılarını almak üzere createSpellingPracticeWord işlevi tetiklenir.
Cloud Firestore koleksiyonu oluşturma
- Firebase konsolunda Cloud Firestore bölümüne gidin.
- + Koleksiyonu başlat'ı tıklayın.
- Koleksiyon kimliği metin kutusuna
wordlistgirip Sonraki'yi tıklayın.

Ardından, sözleşme kelimesi için bir doküman oluşturacağız.
- Document ID (Doküman Kimliği) metin kutusuna
agreementgirin. - Alan metin kutusuna
word, Değer metin kutusuna iseagreementyazın. - Kaydet'i tıklayın.

Bu belgeyi Cloud Firestore'a eklediğinizde, kelimenin tanım ayrıntılarını getirmek için createSpellingPracticeWord işleviniz tetiklenir. Her kelime için yeni bir belge oluşturarak daha fazla kelime ekleyin (örneğin: hayranlık, araba, doğru, söyle, daha iyi, işe gitmek, ...).
10. Google Asistan'ı kurma
Aşağıdaki bölümlerde, Google Asistan geliştirme ortamınızı nasıl ayarlayacağınız ve İşlemler projenizi nasıl oluşturacağınız açıklanmaktadır.
Google izin ayarlarınızı kontrol etme
Bu codelab'de oluşturduğunuz işlemi test etmek için simülatörün işleminize erişebilmesi için gerekli izinleri etkinleştirmeniz gerekir. İzinleri etkinleştirmek için aşağıdaki adımları uygulayın:
- Etkinlik kontrolleri sayfasına gidin.
- Henüz yapmadıysanız Google Hesabınızla oturum açın.
- Aşağıdaki izinleri etkinleştirin:
- Web ve Uygulama Etkinliği
- Web ve Uygulama Etkinliği bölümünde, Chrome geçmişini ve Google hizmetlerini kullanan site, uygulama ve cihazlardaki etkinlikleri ekle seçeneğinin yanındaki onay kutusunu işaretleyin.

Actions projesi oluşturma
Actions projeniz, Action'ınız için bir kapsayıcıdır. Bu codelab için Actions projenizi oluşturmak üzere aşağıdaki adımları uygulayın:
- Actions Console'u açın.
- Yeni proje'yi tıklayın.
- Hizmet şartlarını kabul etme

- Firebase konsolunu kullanarak oluşturduğunuz
spelling-practice-codelaböğesini yazın veya seçin. (Bu ad, dahili referansınız içindir. Daha sonra projeniz için harici bir ad belirleyebilirsiniz.)

- Projeyi içe aktar'ı tıklayın.
- Ne tür bir işlem oluşturmak istiyorsunuz? ekranında Özel kartını seçin.
- İleri'yi tıklayın.
- Boş proje kartını seçin.
- Derlemeye başla'yı tıklayın.
- Görünen ad olarak Yazım Alıştırması'nı girin ve kaydet'i tıklayın.
Kullanıcılar, çağırma yoluyla İşleminizle sohbet başlatır. Örneğin, kullanıcılar "Ok Google, Spelling Practice ile konuş" gibi bir ifade söyleyerek İşleminizi çağırabilir. Burada Spelling Practice, görünen addır.
İşleminizi üretime dağıtmak istiyorsanız işleminizin bir görünen adı olmalıdır. Ancak İşleminizi test etmek için görünen adı tanımlamanız gerekmez. Bunun yerine, İşleminizi çağırmak için simülatörde "Test uygulamamla konuş" ifadesini kullanabilirsiniz.
İstek karşılamayı yapılandırın
Bu codelab'de daha önce yazdığınız ve dağıttığınız Cloud Functions'ın etkinlik işleyicilerini Asistan'a bağlamanız gerekir.
Yerine getirme ayarlarınızı yapılandırmak için aşağıdaki adımları uygulayın:
- Yan gezinme çubuğunda Webhook'u tıklayın.
- Karşılama seçeneği olarak Https uç noktası'nı seçin:

- İşlevinizin uç noktasının URL'sini HTTPs uç noktası metin kutusuna girin ve Kaydet'i tıklayın.

Sonraki bölümde, İşlemler Konsolu'nda ana çağırma işleminizin istemini özelleştireceksiniz.
Ana çağırma ifadesini ayarlama
Kullanıcı, İşleminizi çağırdıktan sonra ne olacağını tanımlamak için ana çağırmayı düzenlemeniz gerekir.
Actions Builder, varsayılan olarak çağırma işleminiz tetiklendiğinde genel bir istem sağlar ("Ana çağırmayı tanımlayarak İşleminizi oluşturmaya başlayın.").
İşleminiz çağrıldığında İşleminizin kullanıcıya geri gönderdiği istemi değiştirmek için aşağıdaki adımları uygulayın:
- Gezinme bölümünde Ana çağırma'yı tıklayın.

Call your webhookseçeneğini işaretleyin ve metin kutusuna etkinlik işleyici adınıgetSpellingWordListekleyin.- Kod düzenleyicide,
speechalanındaki metni aşağıdaki karşılama mesajıyla değiştirin:Welcome to Spelling Practice
Not: İstemlerinizi düzenlemek için YAML veya JSON biçimlendirmesini kullanabilirsiniz.
- Kaydet'i tıklayın.
Ana çağırmayı simülatörde test etme
Actions Console, İşleminizi test etmek için simülatör adlı bir web aracı sunar. Arayüz, donanım cihazlarını ve ayarlarını simüle eder. Böylece, Akıllı Ekran, telefon, hoparlör veya KaiOS'te çalışıyormuş gibi İşleminizle etkileşimde bulunabilirsiniz.
İşleminizin ana çağırma ifadesini simülatörde test etmek için aşağıdaki adımları uygulayın:
- Simülatöre gitmek için üst gezinme çubuğunda Test'i tıklayın.
- İşleminizi simülatörde çağırmak için sol üstteki giriş alanına
Talk to Spelling Practiceyazın ve klavyenizde Enter tuşuna basın.

İşleminizin ana çağırma ifadesini tetiklediğinizde Asistan, özelleştirilmiş karşılama mesajınızla yanıt verir. Bu noktada, Asistan karşılama mesajıyla yanıt verdikten sonra görüşme sona erer.
Olay günlüklerini görüntüleme
Test sekmesindeyken sağdaki panelde, görüşme geçmişini etkinlik günlükleri olarak gösteren etkinlik günlükleri yer alır. Her etkinlik günlüğünde, görüşmenin o dönüşünde gerçekleşen etkinlikler gösterilir. Etkinlik günlüğünü görüntülemek için etkinliğin önündeki gri simgeyi tıklayın.
İşleminizde şu anda hem kullanıcının girişini ("Talk to Spelling Practice") hem de İşleminizin yanıtını gösteren bir etkinlik günlüğü var. Aşağıdaki ekran görüntüsünde İşleminizin etkinlik günlüğü gösterilmektedir:

11. Yazım alıştırması için görüşme oluşturma
Kullanıcılar İşleminizi çağırdıktan sonra ne olacağını tanımladığınıza göre, İşleminizin görüşmesinin geri kalanını oluşturabilirsiniz. Yazım Alıştırması dört sahneden oluşur ve çalıştırılabilmesi için her sahneyi etkinleştirmeniz gerekir. Bir sahneyi etkinleştirmenin en yaygın yolu, İşleminizi bir kullanıcı bir sahnedeki kullanıcı amacına uygun şekilde yapılandırmaktır. Bu durumda, amaç başka bir sahneye geçişi tetikler ve bu sahneyi etkinleştirir.
Ana çağırmadan başlangıç sahnesine geçiş
Bu bölümde, Start adlı yeni bir sahne oluşturursunuz. Bu sahne, kullanıcıya Yazım Alıştırması'nı oynamaya başlamak isteyip istemediğini soran bir istem gönderir. Ayrıca, ana çağırmadan yeni Start sahnesine bir geçiş ekleyin.
Bu sahneyi oluşturmak ve sahneye geçiş eklemek için aşağıdaki adımları uygulayın:
- Üst gezinme menüsünde Geliştir'i tıklayın. Ardından, soldaki gezinme menüsünde Ana çağırma'yı tıklayın.
- Sağdaki Geçiş bölümünde açılır menüyü tıklayın, ardından metin alanına
Startyazın.

- Ekle'yi tıklayın. Bu işlem,
Startadlı bir sahne oluşturur ve İşleme, kullanıcıya karşılama istemini sunduktan sonraStartsahnesine geçmesini söyler. - Sahne listesini göstermek için soldaki gezinme panelinde Sahneler'i tıklayın.
- Sahneler bölümünde
Startsahnesini görmek için Başlat'ı tıklayın. Startsahnesinin On enter (Girişte) bölümünde + simgesini tıklayın.- İstemleri gönder'i seçin.
speechalanındaki cümleyi (Enter the response that users will see or hear...) kullanıcıya sorulacak bir soruyla değiştirin:Use phonetic alphabet to spell the word. For example alpha for a, bravo for b, charlie for c etc. Do you want to continue?
Öneri çipleri, kullanıcının tıklayabileceği ve İşleminizin kullanıcı girişi olarak işleyeceği öneriler sunar. Bu bölümde, az önce yapılandırdığınız istemin altında görünen öneri çipleri ekleyebilirsiniz (Do you want to play
Spelling Practice
?) ekranlı cihazlardaki kullanıcıları desteklemek için.
Start sahnesinin istemine öneri çipleri eklemek için aşağıdaki adımları uygulayın:
Startsahnesinde, kod düzenleyicinin altındaki önerileri tıklayın. Bu işlemle tek bir öneri çipi eklenir.titlealanındaSuggested Responsedeğerini'Yes'ile değiştirin.- Aynı biçimlendirmeyi kullanarak
'No've'Help with Phonetics'başlıklı bir öneri çipini manuel olarak ekleyin. Kodunuz aşağıdaki snippet'e benzemelidir: - Kaydet'i tıklayın.

İşleminizi simülatörde test etme
Bu noktada, İşleminiz ana çağırmadan Başlat sahnesine geçiş yapmalı ve kullanıcıya devam etmek isteyip istemediğini sormalıdır. Öneri çipleri, simüle edilmiş ekranda da görünmelidir.
İşleminizi simülatörde test etmek için aşağıdaki adımları uygulayın:
- Simülasyon aracına gitmek için gezinme çubuğunda Test'i tıklayın.
- İşleminizi simülatörde test etmek için Giriş alanına
Talk to Spelling Practiceyazın. - Enter tuşuna basın. İşleminiz,
Main invocationistemi ve eklenenStartsahne istemiyle yanıt vermelidir: "Yazım Alıştırması'na hoş geldiniz. Kelimeyi hecelemek için fonetik alfabeyi kullanın. Örneğin, a için alfa, b için bravo, c için charlie vb. Devam etmek istiyor musunuz?".
Aşağıdaki ekran görüntüsünde bu etkileşim gösterilmektedir:

- İsteme yanıt vermek için
Yes,NoveyaHelp with Phoneticsöneri çipini tıklayın. ("Evet" veya "Hayır" ya da "Fonetikle ilgili yardım" da diyebilir veya Giriş alanınaYes,Noya daHelp with Phoneticsgirebilirsiniz.)
İsteme yanıt verdiğinizde İşleminiz, girişinizi anlayamadığını belirten bir mesajla yanıt veriyor: "Üzgünüm, anlayamadım. Tekrar deneyebilir misiniz?" İşleminizi henüz "Evet" veya "Hayır" girişini anlayıp yanıtlayacak şekilde yapılandırmadığınız için İşleminiz, girişinizi NO_MATCH niyetiyle eşleştiriyor.
NO_MATCH sistem amacı, varsayılan olarak genel yanıtlar sağlar ancak bu yanıtları özelleştirerek kullanıcının girişini anlamadığınızı belirtebilirsiniz. Asistan, kullanıcı girişini üç kez eşleştiremediğinde kullanıcının İşleminizle olan görüşmesini sonlandırır.
Hayır ve fonetik telaffuz amaçları ekleme
Kullanıcılar artık İşleminizin sorduğu soruya yanıt verebildiğinden İşleminizi, kullanıcıların yanıtlarını ("Evet", "Hayır" veya "Fonetikle İlgili Yardım") anlayacak şekilde yapılandırabilirsiniz. Aşağıdaki bölümlerde, kullanıcı "Evet" veya "Hayır" ya da "Fonetikle ilgili yardım" dediğinde eşleşen kullanıcı amaçları oluşturacak ve bu amaçları Start sahnesine ekleyeceksiniz. Sistem amacını yes kullanırız ve başka amaçlar oluştururuz.
no amacı oluşturma
Şimdi, kullanıcı oyunu oynamak istemediğinde onu anlamak ve yanıt vermek için no niyetini oluşturmanız gerekiyor. Bu amacı oluşturmak için aşağıdaki adımları uygulayın:
- Gezinme menüsünde Geliştir'i tıklayın.
- Amaç listesini açmak için gezinme bölümünde Özel Amaçlar'ı tıklayın.
- Niyet listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amaca
noad verin ve Enter tuşuna basın. noamaç sayfasını açmak için hayır'ı tıklayın.- Eğitim ifadeleri ekle bölümünde, İfade Girin metin kutusunu tıklayın ve aşağıdaki ifadeleri girin:
NoNI don't wantnope

- Kaydet'i tıklayın.
Start sahnesine no amacı ekle
Artık İşlem, kullanıcının "hayır" veya "hayır"'a benzer bir ifade (ör. "yok") kullandığını anlayabilir. Kullanıcı, Start istemine ("Yazım Alıştırması'na hoş geldiniz.noStart Kelimeyi hecelemek için fonetik alfabeyi kullanın. Örneğin, a için alfa, b için bravo, c için charlie vb. Devam etmek istiyor musunuz?").
Start sahnesi için bu amacı eklemek üzere aşağıdaki adımları uygulayın:
- Gezinme bölümünde Başlangıç sahnesini tıklayın.
- Kullanıcı amacını işleme'nin yanındaki
Startsahnesinde + (artı işareti) simgesini tıklayın. - Amaç bölümündeki açılır listeden hayır'ı seçin.

- İstemleri gönder'i tıklayın ve
speechalanını aşağıdaki metinle güncelleyin:Good Bye.
Düzenleyicinizdeki kod aşağıdaki snippet'e benzemelidir:
candidates:
- first_simple:
variants:
- speech: >-
Goodbye.
- Geçiş bölümündeki açılır menüden Görüşmeyi sonlandır'ı seçin.
- Kaydet'i tıklayın.
Simülatörde no amacını test etme
Bu noktada, İşleminiz kullanıcının oyunu oynamak istemediğini anlar ve uygun yanıtı döndürür.
Bu amacı simülatörde test etmek için aşağıdaki adımları uygulayın:
- Gezinme çubuğunda Test'i tıklayın.
- Giriş alanına
Talk to Spelling PracticeyazıpEntertuşuna basın. - Giriş alanına
Noyazıp Enter tuşuna basın. Alternatif olarak, Öneri yok çipini tıklayın.

YES sistem niyetini Start sahnesine ekle
Şimdi, kullanıcı Start istemine olumlu yanıt verdiği için Start sahnesine SYSTEM amacını "YES" olarak ekleyeceğiz ("Yazım Alıştırması'na hoş geldiniz. Kelimeyi hecelemek için fonetik alfabeyi kullanın. Örneğin, a için alfa, b için bravo, c için charlie vb. Devam etmek istiyor musunuz?").
Bu kullanıcı amacını Start sahnesine eklemek için aşağıdaki adımları uygulayın:
- Gezinme bölümünde Başlangıç sahnesini tıklayın.
Startsahnesinde Kullanıcı amacını işleme'nin yanındaki + (artı işareti) seçeneğini tıklayın.- Tüm Sistem Amaçları bölümünde, amaç açılır listesinde EVET'i seçin.

- Webhook'unuzu çağırın'ı tıklayın ve
event handlermetin kutusunu daha önce oluşturduğunuz işlevle güncelleyin:getSpellingWordList - Geçiş bölümünde açılır menüyü tıklayın ve Sohbeti sonlandır'ı seçin.
- Kaydet'i tıklayın.
Simülatörde YES amacını test etme
Bu noktada, işleminiz kullanıcının oyunu oynamak istediğini anlar ve uygun yanıtı döndürür.
Bu amacı simülatörde test etmek için aşağıdaki adımları uygulayın:
- Gezinme çubuğunda Test'i tıklayın.
- İşleminizi simülatörde test etmek için
Talk to Spelling Practiceyazıp Enter tuşuna basın. - Giriş alanına
Yesyazıp Enter tuşuna basın. Alternatif olarak,Yesöneri çipini tıklayın.
İşleminiz, tüm yazım alıştırması kelimelerinin listesini getirir ve bunları oturumda saklar. Ardından, YES amacı için End conversation geçişini seçtiğinizden oturum sona erer.
Phonetics amacı oluşturma
Phonetics amacını oluşturmak için aşağıdaki adımları uygulayın:
- Gezinme menüsünde Geliştir'i tıklayın.
- Amaç listesini açmak için gezinme bölümünde Özel Amaçlar'ı tıklayın.
- Niyet listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amaca
phoneticsadını verin veEntertuşuna basın. phoneticsamaç sayfasını açmak içinphoneticsamacını tıklayın.- Eğitim ifadeleri ekle bölümünde İfade Girin metin kutusunu tıklayın ve aşağıdaki ifadeleri girin:
how do I spell wordsphoneticshelp me with phoneticsphonetic alphabet

- Kaydet'i tıklayın.
Start sahnesine phonetics amacı ekle
Artık İşlem, kullanıcının "fonetik" amaçlı bir ifade kullandığını anlayabiliyor. Kullanıcı, Start istemine ("Yazım Alıştırması'na hoş geldiniz.phoneticsStart Kelimeyi hecelemek için fonetik alfabeyi kullanın. Örneğin, a için alfa, b için bravo, c için charlie vb. Devam etmek istiyor musunuz?").
Bu kullanıcı amacını Start sahnesine eklemek için aşağıdaki adımları uygulayın:
- Gezinme bölümünde Başlangıç sahnesini tıklayın.
- Kullanıcı amacını işleme'nin yanındaki
Startsahnesinde + (artı işareti) simgesini tıklayın. - Amaç açılır listesinde fonetik'i seçin.

- Geçiş bölümünde açılır menüyü tıklayın ve Sohbeti sonlandır'ı seçin.
- Kaydet'i tıklayın.
Başlangıç sahnesinden Yazım sahnesine geçiş
Bu bölümde, kullanıcıya fonetik alfabeyi kullanarak kelimeyi heceleme istemi gönderen Spelling (Yazım) adlı yeni bir sahne oluşturursunuz.
Bu sahneyi oluşturmak ve sahneye geçiş eklemek için aşağıdaki adımları uygulayın:
- Üst gezinme menüsünde Geliştir'i tıklayın. Ardından, soldaki gezinme panelinde Sahneyi başlat'ı tıklayın.
- Kullanıcı amacını işleme bölümünde
when actions.intent.YES is matchedsimgesini tıklayın ve sağdaki geçiş bölümünde açılır menüyü tıklayıp metin alanınaSpellingyazın. - Ekle'yi tıklayın. Bu işlem,
Spellingadlı bir sahne oluşturur ve YES niyetiyle eşleşme gerçekleştikten sonra İşlem'eSpellingsahnesine geçmesini söyler. - Sahne listesini göstermek için soldaki gezinme menüsünde Sahneler'i genişletin.
- Sahneler bölümünde,
Spellingsahnesini görmek için Yazım'ı tıklayın. Spellingsahnesinin On enter (Girişte) bölümünde + simgesini tıklayın.- Webhook'unuzu çağırın'ı tıklayın ve etkinlik işleyici metin kutusuna getSpellingWord yazın.
- İstemleri gönder'i seçin.
speechalanındaki (Enter the response that users will see or hear...) cümlesini {} ile değiştirin. Gerçek istem, webhook tarafından doldurulur.
Öneri çipleri, kullanıcının tıklayabileceği ve İşleminizin kullanıcı girişi olarak işleyeceği öneriler sunar.
Spelling sahnesinin istemine öneri çipleri eklemek için aşağıdaki adımları uygulayın:
Spellingsahnesinde, kod düzenleyicinin altındaki önerileri tıklayın. Bu işlem üç öneri çipi ekler.titlealanındaSuggested Responsedeğerini'Repeat'ile değiştirin.- Aynı biçimlendirmeyi kullanarak
'Skip'başlıklı bir öneri çipini manuel olarak ekleyin. - Aynı biçimlendirmeyi kullanarak
'Quit'başlıklı bir öneri çipini manuel olarak ekleyin. Kodunuz aşağıdaki snippet'e benzemelidir: - Kaydet'i tıklayın.
suggestions:
- title: 'Repeat'
- title: 'Skip'
- title: 'Quit'

Repeat amacı oluşturma
repeat amacını oluşturmak için aşağıdaki adımları uygulayın:
- Gezinme menüsünde Geliştir'i tıklayın.
- Amaç listesini açmak için gezinme bölümünde Özel Amaçlar'ı tıklayın.
- Niyet listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amaca
repeatadını verin veEntertuşuna basın. definitionamaç sayfasını açmak içinrepeatamacını tıklayın.- Eğitim ifadeleri ekle bölümünde İfade Girin metin kutusunu tıklayın ve aşağıdaki ifadeleri girin:
one more time pleasesay the word againrepeat the wordtell me againrepeat

- Kaydet'i tıklayın.
Spelling sahnesine repeat amacı ekle
Artık işlem, kullanıcının "tekrar et" niyetini ifade ettiğini anlayabiliyor. Kullanıcı, Spelling istemine ("Kelimeleri fonetik alfabeyi kullanarak heceleyin") yanıt verdiğinden repeat kullanıcı amacını Spelling sahnesine ekleyebilirsiniz.
Bu kullanıcı amacını Spelling sahnesine eklemek için aşağıdaki adımları uygulayın:
- Gezinme bölümünde Yazım sahnesini tıklayın.
Spellingsahnesinde Kullanıcı amacını işleme'nin yanındaki + (artı işareti) seçeneğini tıklayın.- Amaç açılır listesinde repeat'i (tekrar) seçin.

- Webhook'unuzu çağırın'ı işaretleyin ve kelime tanımını almak için etkinlik işleyici metin kutusuna repeatSpellingWord yazın.
- İstemleri gönder'i işaretleyin.
speechalanındaki (Enter the response that users will see or hear...) cümleyi "'" ile değiştirin. Gerçek istem webhook tarafından doldurulur.
"Tekrar eşleştiğinde" bölümüne öneri çipleri ekleme
- Kullanıcı amacını işleme bölümündeki "Tekrar eşleştiğinde" altında, kod düzenleyicinin altındaki öneriler'i tıklayın. Bu işlem üç öneri çipi ekler.
titlealanındaSuggested Responsedeğerini'Skip'ile değiştirin.- Aynı biçimlendirmeyi kullanarak
'Quit'başlıklı bir öneri çipini manuel olarak ekleyin.Kodunuz aşağıdaki snippet'e benzemelidir:
suggestions:
- title: 'Skip'
- title: 'Quit'

- Kaydet'i tıklayın.
definition amacı oluşturma
definition amacını oluşturmak için aşağıdaki adımları uygulayın:
- Gezinme menüsünde Geliştir'i tıklayın.
- Amaç listesini açmak için gezinme bölümünde Özel Amaçlar'ı tıklayın.
- Niyet listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amaca
definitionadını verin veEntertuşuna basın. definitionamaç sayfasını açmak içindefinitionamacını tıklayın.- Eğitim ifadeleri ekle bölümünde İfade Girin metin kutusunu tıklayın ve aşağıdaki ifadeleri girin:
I would like to know the definitiontell me the definitionwhat does it meanmeaningdefinitionwhat is the definition?

- Kaydet'i tıklayın.
Spelling sahnesine definition amacı ekle
Artık İşlem, kullanıcının "tanım" amacını ifade ettiğini anlayabiliyor. Kullanıcı, Spelling istemine ("Kelimeleri fonetik alfabeyi kullanarak heceleyin") yanıt verdiğinden definition kullanıcı amacını Spelling sahnesine ekleyebilirsiniz.
Bu kullanıcı amacını Spelling sahnesine eklemek için aşağıdaki adımları uygulayın:
- Gezinme bölümünde Yazım sahnesini tıklayın.
Spellingsahnesinde Kullanıcı amacını işleme'nin yanındaki + (artı işareti) seçeneğini tıklayın.- Amaç açılır listesinde tanım'ı seçin.

- Webhook'unuzu çağırın'ı işaretleyin ve kelime tanımını almak için etkinlik işleyici metin kutusuna definitionOfSpellingWord yazın.
- İstemleri gönder'i işaretleyin.
speechalanındaki cümleyi (Enter the response that users will see or hear...) ‘‘` ile değiştirin. Gerçek istem, webhook tarafından doldurulur.
Webhook yanıtına öneri çipleri ekleme
Startsahnesinde, kod düzenleyicinin altındaki öneriler'i tıklayın. Bu işlem üç öneri çipi ekler.titlealanındaSuggested Responsedeğerini'Skip'ile değiştirin.- Aynı biçimlendirmeyi kullanarak
'Quit'başlıklı bir öneri çipini manuel olarak ekleyin.Kodunuz aşağıdaki snippet'e benzemelidir:
suggestions:
- title: 'Skip'
- title: 'Quit'

- Kaydet'i tıklayın.
skip amacı oluşturma
skip amacını oluşturmak için aşağıdaki adımları uygulayın:
- Gezinme menüsünde Geliştir'i tıklayın.
- Amaçlar listesini açmak için gezinme bölümünde Amaçlar'ı tıklayın.
- Niyet listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amaca
skipadını verin veEntertuşuna basın. skipamaç sayfasını açmak içinskipamacını tıklayın.- Eğitim ifadeleri ekle bölümünde İfade Girin metin kutusunu tıklayın ve aşağıdaki ifadeleri girin:
next wordgo nextnextskipskip word

- Kaydet'i tıklayın.
Spelling sahnesine Skip amacı ekle
Artık işlem, kullanıcının "atlama" niyetini ifade ettiğini anlayabiliyor. Kullanıcı, Spelling istemine ("Kelimeleri fonetik alfabeyi kullanarak heceleyin") yanıt verdiğinden skip kullanıcı amacını Spelling sahnesine ekleyebilirsiniz.
Bu kullanıcı amacını Spelling sahnesine eklemek için aşağıdaki adımları uygulayın:
- Gezinme bölümünde Yazım sahnesini tıklayın.
Spellingsahnesinde Kullanıcı amacını işleme'nin yanındaki + (artı işareti) simgesini tıklayın.- Amaç açılır listesinde atla'yı seçin.

- Sağdaki Geçiş bölümünde, açılır menüyü tıklayın ve
Spellingsimgesini seçin .

- Kaydet'i tıklayın.
quit amacı oluşturma
Quit amacını oluşturmak için aşağıdaki adımları uygulayın:
- Gezinme menüsünde Geliştir'i tıklayın.
- Amaçlar listesini açmak için gezinme bölümünde Amaçlar'ı tıklayın.
- Niyet listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amaca
Quitadını verin veEntertuşuna basın. Quitamacını tıklayarak tanım amacının sayfasını açın.- Eğitim ifadeleri ekle bölümünde İfade Girin metin kutusunu tıklayın ve aşağıdaki ifadeleri girin:
I quitGoodbyeCancelExitQuit

- Kaydet'i tıklayın.
Spelling sahnesine Quit amacı ekle
Artık İşlem, kullanıcının "çıkma" amacını ifade ettiğini anlayabiliyor. Kullanıcı, Spelling istemine ("Kelimeleri fonetik alfabeyi kullanarak heceleyin") yanıt verdiğinden quit kullanıcı amacını Spelling sahnesine ekleyebilirsiniz.
Bu kullanıcı amacını Spelling sahnesine eklemek için aşağıdaki adımları uygulayın:
- Gezinme bölümünde Yazım sahnesini tıklayın.
Spellingsahnesinde Kullanıcı amacını işleme'nin yanındaki + (artı işareti) seçeneğini tıklayın.- Amaç açılır listesinde quit (çık) seçeneğini belirleyin.

- Sağdaki Geçiş bölümünde, açılır menüyü tıklayın ve
End conversationsimgesini seçin .
- Kaydet'i tıklayın.
phonetic_alphabet türü oluşturma
Bu bölümde, kullanıcıların kelimeyi hecelemek için seçebileceği fonetik alfabe seçeneklerini belirten phonetic_alphabet adlı yeni bir tür oluşturursunuz. Kullanıcıların benzer ifadeler kullanması ihtimaline karşı bu seçenekler için birkaç eş anlamlı kelime de tanımlayabilirsiniz. Daha sonraki bir bölümde, kullanıcının yanıtını almak istediğinizi belirtmek için bir yuvaya phonetic_alphabet türünü eklersiniz.
phonetic_alphabet türünü oluşturmak için aşağıdaki adımları uygulayın:
- Gezinme menüsünde Geliştir'i tıklayın.
- Türler bölümünde + (artı işareti) simgesini tıklayın.
phonetic_alphabetyazıpEntertuşuna basın.- Seçenekleri açmak için
phonetic_alphabetsimgesini tıklayın. - Bu Tür hangi değerleri destekleyecek? bölümünde Kelimeler ve eş anlamlılar seçeneğini belirleyin.
- Giriş ekle bölümüne aşağıdaki girişleri ve karşılık gelen değerleri girin:
a | alfa, apple, amsterdam |
b | bravo, butter, baltimore |
c | charlie, cat, casablanca |
d | delta, dog, denmark |
e | echo, edward, edison |
f | foxtrot, fox, florida (fokstrot, tilki, florida) |
g | golf, george, gallipoli |
sa | hotel, harry, havana |
i | india, ink, italia |
j | juliette, johnny, jerusalem |
k | kilo, king, kilogramme |
l | lima, love, london |
dk | mike, money, madagascar |
n | kasım, new york, nancy |
o | oscar, orange, oslo |
p | papa, paris, peter |
q | quebec, queen |
r | romeo, roma, robert |
sn | sierra, sugar, santiago |
t | tango, tommy, tripoli |
u | uniform, umbrella, uncle (üniforma, şemsiye, amca) |
v | victor, vinegar, Valencia |
w | whiskey, william, washington |
x | x-ray |
y | yankee, yellow, yorker |
z | zulu, zebra, zurich |
Anahtar-değer tablonuz aşağıdaki gibi görünmelidir:

- Kaydet'i tıklayın.
Alan doldurmayı yapılandırma
Ardından, Spelling sahnesinde yuva doldurmayı yapılandırmanız gerekir. Boşluk doldurma mantığını yapılandırmak için aşağıdaki adımları uygulayın:
- Gezinme bölümünde Yazım sahnesini tıklayın.
Spellingsahnesinde Slot doldurma için + (artı işareti) simgesini tıklayın.- Enter slot name (Yuva adını girin) alanına yuva adı olarak
userresponseekleyin. - Select type (Tür seçin) açılır listesinde, yuva türü olarak phonetic_alphabet'i (fonetik alfabe) seçin.
- Bu alan, değer listesini kabul eder seçeneğini işaretleyin.
- Bu yer zorunludur'u işaretleyin.
- Yuva değeri geri yazma işlemini özelleştir seçeneğini belirleyin ve oturum parametresi metin kutusuna userresponse değerini girin.

- Kaydet'i tıklayın.
Spelling ekranına koşul ekleme
Spelling sahnesine koşul eklemek için aşağıdaki adımları uygulayın:
- Gezinme bölümünde Yazım sahnesini tıklayın.
- Koşul'un yanındaki
Spellingsahnesinde + (artı işareti) simgesini tıklayın. - Koşul olarak
scene.slots.status == "FINAL"değerini girin - Webhook'unuzu çağırın'ı işaretleyin ve kullanıcı yanıtını doğrulamak için etkinlik işleyici metin kutusuna verifySpellingWord yazın.
- İstemleri gönder'i işaretleyin.
speechalanındaki (Enter the response that users will see or hear...) cümleyi {} ile değiştirin. Gerçek istem, webhook tarafından doldurulur.
Webhook yanıtına öneri çipleri ekleme
Startsahnesinde, kod düzenleyicinin altındaki öneriler'i tıklayın. Bu işlem üç öneri çipi ekler.titlealanındaSuggested Responsedeğerini'Next'ile değiştirin.- Aynı biçimlendirmeyi kullanarak
'Quit'başlıklı bir öneri çipini manuel olarak ekleyin.Kodunuz aşağıdaki snippet'e benzemelidir:
suggestions:
- title: 'Next'
- title: 'Quit'

- Kaydet'i tıklayın.
12. Yazım Alıştırması'nı simülatörde test etme
İşleminizi simülatörde test etmek için aşağıdaki adımları uygulayın:
- Simülasyon aracına gitmek için gezinme çubuğunda Test'i tıklayın.
- İşleminizi simülatörde test etmek için Giriş alanına
Talk to Spelling Practiceyazın. - Enter tuşuna basın. İşleminiz,
Main invocationistemi ve eklenenStartsahne istemiyle yanıt vermelidir: "Yazım Alıştırması'na hoş geldiniz. Kelimeyi hecelemek için fonetik alfabeyi kullanın. Örneğin, a için alfa, b için bravo, c için charlie vb. Devam etmek istiyor musunuz?". - Devam etmek için Evet deyin.
- Simülasyon aracı, hecelemek için kelime sesi çalacak
- Kelimeyi fonetik alfabelerle heceleyebilirsiniz. Örneğin, better (daha iyi) için "bravo echo tango tango echo romeo" deyin veya yazın.
- Simülatör, doğru veya yanlış yanıtı verir.
- Sonraki kelimeye geçmek için sonraki, oyun döngüsünden çıkmak için çık deyin.
13. Tebrikler
Tebrikler! Spelling Practice adlı oyununuzu başarıyla oluşturdunuz.
Cloud Firestore, Cloud Functions ve Google Asistan Action Builder'ı kullanarak oyun oluşturmak için gereken temel adımları öğrendiniz.
Kapsamınız
- Cloud Firestore ile etkileşim kurma
- Kullanıcıdan veri toplamak için yuvaları kullanma
- Kullanıcı girişini işleme ve yanıt döndürme
- Bir sahneye mantık eklemek için koşulları kullanma
- Oyun döngüsü ekleme
Ek öğrenme kaynakları
Google Asistan için İşlemler oluşturma hakkında bilgi edinmek üzere aşağıdaki kaynakları inceleyebilirsiniz:
- Google Asistan için İşlemler geliştirme dokümanları
- Örnek kod ve kitaplıklar için Actions on Google GitHub sayfası
- Google Asistan ile çalışan geliştiriciler için resmi Reddit topluluğu
- En iyi uygulamalar ve etkileşimli işlemlerle ilgili kurallar için Etkileşimli işlem tasarımı kuralları
- Cloud Firestore'a giriş
Projenizi temizleme [önerilir]
Olası ücretlerden kaçınmak için kullanmayı düşünmediğiniz projeleri kaldırmanız önerilir. Bu codelab'de oluşturduğunuz projeleri silmek için aşağıdaki adımları uygulayın:
- Firebase projenizi ve kaynaklarınızı silmek için Projeleri kapatma (silme) bölümünde listelenen adımları tamamlayın.
Dikkat: Google Cloud Console'un Ayarlar sayfasında silinecek doğru projeyi seçtiğinizden emin olun.
- İsteğe bağlı: Projenizi hemen Actions Console'dan kaldırmak için Proje silme bölümünde listelenen adımları uygulayın. Bu adımı tamamlamazsanız projeniz yaklaşık 30 gün sonra otomatik olarak kaldırılır.
En son duyurularımızdan haberdar olmak için Twitter'da @ActionsOnGoogle ve @Firebase'ı takip edin. Geliştirdiklerinizi paylaşmak için #GoogleIO hashtag'ini kullanarak tweet atın.