1. Genel Bakış
Google Asistan geliştirici platformu, sanal bir kişisel asistan olan Google Asistan'ın işlevlerini akıllı hoparlörler, telefonlar, arabalar, TV'ler, kulaklıklar ve daha pek çok 1 milyardan fazla cihaza genişletmenizi sağlayacak yazılımlar oluşturmanıza olanak tanır. Kullanıcılar, market alışverişi veya araç rezervasyonu gibi işlemler için Asistan'ı kullanarak konuşurlar. Geliştirici olarak, kullanıcılar ile kendi üçüncü taraf sipariş karşılama hizmetiniz arasındaki keyifli ve etkili sohbet deneyimlerini kolayca oluşturmak ve yönetmek için Asistan geliştirici platformunu kullanabilirsiniz.
Bu codelab'de Google Asistan, Cloud Functions ve Cloud Firestore ile geliştirme yapmayla ilgili orta düzey kavramlar ele alınmaktadır. Bu codelab'de "Yazım Alıştırması" adlı bir oyun geliştireceksiniz. Google Asistan'ı kullanarak kullanıcılardan kelimeleri yazmalarını isteyen bir uygulamadır.
Oluşturacaklarınız
Bu codelab'de aşağıdaki işlevlerle gelişmiş bir oyun geliştireceksiniz:
- Kullanıcıdan yazım yanıtları alır ve değere bağlı olarak sohbet istemlerini değiştirir
- Kelimeyi yazımla ilgili ipuçları (ör. tanımı veya tekrarı) ile yanıt verir
- Kullanıcının kelimeyi yazdıktan sonra Asistan'la tekrar etkileşimde bulunabilmesi için bir oyun döngüsü oluşturur
Geliştirmeye başlamadan önce Google Asistan özellikli cihazınızda "Ok Google, yazım alıştırması ile konuş" diyerek canlı İşlem ile etkileşimde bulunabilirsiniz. Geri gelen bir kullanıcı için bu Action'a giden varsayılan yol şu etkileşimdeki gibi görünür:
Bu codelab'i tamamladığınızda tamamlanan İşleminiz aşağıdaki konuşma akışına sahip olur:
Neler öğreneceksiniz?
- Cloud Firestore ile etkileşim kurma
- Kullanıcıdan veri toplamak için slotları kullanma
- Bir kullanıcının girişini işleme ve yanıt döndürme
- Bir sahneye mantık eklemek için koşullar nasıl kullanılır?
- Oyun döngüsü nasıl eklenir?
Gerekenler
Bu codelab'in ön koşulları şunlardır:
- Google Chrome gibi bir web tarayıcısı
- Cloud Functions yazmak için kullanılan bir IDE.
- Ödeme yöntemi. Bu codelab'de, projenizin Firebase Blaze fiyatlandırma planı kapsamında olması gereken Cloud Functions for Firebase kullanılır ( Daha fazla bilgi).
- Kabuk komutlarının çalıştırılacağı 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
Spelling-Practice
adlandırın.
- Proje oluşturma seçeneklerini tıklayarak ilerleyin. İstenirse Firebase şartlarını kabul edin. Bu uygulama için Analytics'i kullanmayacağınızdan Google Analytics kurulumunu atlayın.
Firebase projeleri hakkında daha fazla bilgi 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 yükseltmeden projenize bir Google Cloud Faturalandırma hesabı eklemeniz gerekir. Bunun için kredi kartı veya başka bir ödeme yöntemi sağlamanız gerekir.
Blaze planındakiler de dahil olmak üzere tüm Firebase projeleri, Cloud Functions için ücretsiz kullanım kotalarına erişmeye devam edebilir. Bu codelab'de belirtilen adımlar ücretsiz kullanım sınırlarına tabidir. Ancak Cloud Functions derleme görüntülerinizi barındırmak için kullanılan Cloud Storage'dan küçük ücretler ( 0,03 ABD doları) alınır.
4. Firebase CLI'ı yükleme
Firebase CLI (komut satırı arayüzü), Cloud Functions işlevlerinizi dağıtmanızı sağlar.
İşletim sisteminize ve kullanım alanınıza bağlı olarak Firebase CLI'ı yüklemeyle ilgili çeşitli seçenekler vardır. Aşağıdaki adımlarda, Cloud Functions'ı da kullanıyorsanız en sık tercih edilen 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
- CLI'ın düzgün şekilde yüklendiğini doğrulamak için şu komutu çalıştırın:
$ firebase --version
Firebase CLI'ın, Cloud Functions için gereken en yeni özelliklerin tümüne sahip olması için 9.0.0 veya sonraki bir sürüm olduğundan emin olun. Aksi takdirde, yukarıda gösterildiği gibi yükseltme yapmak için npm install -g firebase-tools komutunu çalıştırın.
- Firebase CLI'ı yetkilendirin. Bunun için şu komutu çalıştırın:
$ firebase login
- Yazım-Functions-start dizininden, Firebase projenizi kullanmak için Firebase CLI'ı ayarlayın. Aşağıdaki komutu çalıştırın, proje kimliğinizi seçin ve talimatları uygulayın. İstendiğinde
codelab
gibi herhangi bir takma ad seçebilirsiniz.
$ firebase use --add
5. İşlev dizini
Şimdi, Yazım Alıştırması adlı oyunun arka ucunu oluşturmak için Cloud Functions için Firebase SDK'sını kullanarak işlev ekleyeceksiniz.
Cloud Functions, sunucu kurulumu gerekmeden 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ı öğreneceksiniz. Kimlik doğrulama ile başlayalım.
Cloud Functions için Firebase SDK'sını kullanırken işlev kodunuz functions
dizininin altında (varsayılan olarak) bulunur. İşinizi kolaylaştırmak için kodunuzun ekleneceği functions/index.js
dosyasını zaten oluşturduk. Devam etmeden önce functions
dizinini inceleyebilirsiniz.
$ cd functions $ ls
İşlev kodunuz aynı zamanda bir Node.js uygulaması olduğundan uygulamanız hakkında bazı bilgiler veren ve bağımlılıkları listeleyen bir package.json
gerektirir.
Node.js'ye aşina değilseniz codelab'e devam etmeden önce 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'sı ve Firebase Admin SDK'sı. 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 YAPILACAKLAR yerine dört işlev yazacaksınız. Modülleri içe aktarmak için codelab'in bir sonraki adımına geçin.
6. Gerekli modülleri içe aktarın
Bu codelab'de üç modül gereklidir.
firebase-functions
modülü, Cloud Functions için tetikleyicileri yazmamızı sağlar.firebase-admin
modülü, Firebase platformunu yönetici erişimi olan bir sunucuda kullanmamıza (örneğin, Cloud Firestore'a yazma gibi) olanak tanır.- Actions SDK'sı Node.js Sipariş Karşılama Kitaplığı, Google Asistan için İşlemler SDK'sı işleyicilerini yerine getirir.
- Aşağıdaki npm komutunu çalıştırarak Actions SDK'sını yükleyin:
$ npm install @assistant/conversation
index.js
dosyasında ilk TODO değerini 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();
adını verdiğimizde olan budur.
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 Asistan İşlemleri'ni destekleyecek işlevleri kullanarak iş mantığı ekleyelim.
7. İşlevler oluşturma
Kelime tanımlarını öğrenme ve Cloud Firestore'a yazma
Kelime tanımlarını almak için herkese açık dictionaryapi.dev
API'sini kullanacaksınız.
index.js
dosyasında getWordDetailsFromDictionaryAPI
için TODO değerini aşağıdakiyle 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 ekleyin
Şimdi, Cloud Firestore'da yeni belge oluşturulduğunda tetiklenen bir Cloud Functions işlevi oluşturacaksınız. 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 TODO değerini aşağıdakiyle 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); });
Oyunla ilgili kelime listesini al
Asistan için Cloud Firestore'dan yazım alıştırması kelimelerinin listesini alan bir Cloud Functions işlevi yazabilirsiniz. Bunun için uygulama işleyiciyi kullanırız.
index.js
dosyasında getSpellingWordList
için TODO değerini aşağıdakiyle değiştirin.
Bu işlevi özel app.handle
özelliğine 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 al
Kelime listesinden sonraki yazım kelimesini döndüren bir Cloud Functions işlevi yazabilirsiniz.
index.js
dosyasında getSpellingWord
için TODO değerini aşağıdakiyle 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'); });
Kelimeyi tekrarlamak için oyunu etkinleştirin
Oyunda kullanılan mevcut kelimeyi tekrarlayan bir Cloud Functions işlevi yazabilirsiniz.
index.js
dosyasında repeatSpellingWord
için TODO değerini aşağıdakiyle 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ı öğrenin
Oyundaki geçerli kelimenin tanımını sağlayan bir Cloud Functions işlevi yazabilirsiniz.
index.js
dosyasında definitionOfSpellingWord
için TODO değerini aşağıdakiyle 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 yazımına dair yanıtını doğrulayan bir Cloud Functions işlevi yazabilirsiniz.
index.js
dosyasında verifySpellingWord
için TODO değerini aşağıdakiyle 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şlevleri yalnızca Firebase'e dağıtıldıktan sonra etkin olur.
spelling-functions-start
dizininin kök dizininden 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şlevi Http uç nokta URL'sini not edin. Uç noktayı almak için Firebase Konsolu'nu açın ve ardından 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 eklemeyi tamamladınız. Şimdi Cloud Firestore'u kurmaya geçelim.
8. Cloud Firestore'u etkinleştirin
Cloud Firestore'u etkinleştirmeniz gerekir.
Firebase konsolunun Derleme bölümünde Firestore'u tıklayın. Ardından Create database'i (Veritabanı oluştur) tıklayın.
Cloud Firestore'daki verilere erişim, Güvenlik Kuralları tarafından kontrol edilir. Başlamak için öncelikle verilerle ilgili bazı temel kurallar belirlemeniz gerekir. Firestore'u tıklayın, ardından Firebase konsolunun Kurallar sekmesinde aşağıdaki kuralları ekleyin ve Yayınla'yı tıklayın.
Aşağıdaki kurallar, veri erişimini oturum açmış kullanıcılarla kısıtladığından, kimliği doğrulanmamış kullanıcıların okuma veya yazma işlemi 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 kelimeleri verileri ekleme
Bu adımda Cloud Firestore'a yazım kelimeleri verileri yazacaksınız. Böylece Asistan (ve oyun) için bir kelime listesi oluşturacaksı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 ayrı bir doküman olarak depolanır. Firestore koleksiyonundaki her yeni dokümanda, Dictionary API hizmetinden kelime ayrıntılarını almak için 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
wordlist
yazıp İleri'yi tıklayın.
Daha sonra bir kelime için doküman oluşturacağız: sözleşme
- Doküman Kimliği metin kutusuna
agreement
yazın. - Alan metin kutusuna
word
, Değer metin kutusuna iseagreement
yazı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 doküman oluşturarak daha fazla kelime (örneğin, merak, araba, gerçek, anlat, daha iyi, işe gidip gelme, ...) ekleyin.
10. Google Asistan'ı kurun
Aşağıdaki bölümlerde, Google Asistan geliştirme ortamınızı nasıl kuracağınız ve Actions projenizi nasıl oluşturacağınız açıklanmaktadır.
Google izin ayarlarınızı kontrol etme
Bu codelab'de derlediğiniz İşlemi test etmek için simülatörün İşleminize erişebilmesi için gerekli izinleri etkinleştirmeniz gerekir. İzinleri etkinleştirmek için şu 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, İşleminiz için bir kapsayıcıdır. Bu codelab için Actions projenizi oluşturmak üzere şu adımları uygulayın:
- Actions Console'u açın.
- Yeni proje'yi tıklayın.
- Hizmet Şartları'nı kabul edin
- Firebase konsolunu kullanarak oluşturduğunuz
spelling-practice-codelab
simgesini yazın veya seçin. (Ad dahili referans 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 için Yazım Alıştırması yazın ve Kaydet'i tıklayın.
Kullanıcılar, İşleminizle sohbeti çağrı üzerinden başlatır. Örneğin, kullanıcılar "Ok Google, yazım alıştırması ile konuş" gibi bir ifade söyleyerek işleminizi çağırabilir. Burada yazım alıştırması, görünen addır.
İşleminizi üretime dağıtmak istiyorsanız İşleminizin görünen adı olmalıdır; ancak İşleminizi test etmek için görünen adı tanımlamanız gerekmez. Bunun yerine, iş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 için etkinlik işleyicilere Asistan'a bağlanmanız gerekir.
Sipariş karşılama işleminizi yapılandırmak için şu adımları uygulayın:
- Yan gezinme menüsünde Webhook'u tıklayın.
- Karşılama seçeneği olarak Https uç noktası'nı seçin:
- HTTPs uç noktası metin kutusuna işlevinizin uç noktasının URL'sini girip Kaydet'i tıklayın.
Sonraki bölümde, Actions konsolundaki ana çağrınızın istemini özelleştireceksiniz.
Ana çağrıyı ayarla
Bir kullanıcı işleminizi çağırdıktan sonra ne olacağını tanımlamak için ana çağrıyı düzenlemeniz gerekir.
Actions Builder, çağrınız tetiklendiğinde varsayılan olarak genel bir istem sunar ("Ana çağrı tanımlayarak İşleminizi oluşturmaya başlayın.").
İşleminizin, kullanıcı işleminizi çağırdığında kullanıcıya geri gönderdiği istemi değiştirmek için şu adımları uygulayın:
- Gezinme bölümünde Ana çağrı'yı tıklayın.
Call your webhook
simgesini işaretleyin ve metin kutusuna etkinlik işleyici adınıgetSpellingWordList
ekleyin.- Kod düzenleyicide,
speech
alanındaki metni şu 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.
Simülatördeki ana çağrıyı test etme
Actions konsolu, işleminizi test etmeniz için simülatör adı verilen bir web aracı sağlar. Arayüz, donanım cihazlarını ve ayarlarını simüle eder. Böylece İşleminizi Akıllı Ekran, telefon, hoparlör veya KaiOS'ta çalışıyormuş gibi konuşabilirsiniz.
İşleminizin simülatörde ana çağrısını test etmek için aşağıdaki adımları uygulayın:
- Simülasyon aracına gitmek için üst gezinme çubuğunda Test'i tıklayın.
- Simülasyon aracında işleminizi çağırmak için sol üstteki giriş alanına
Talk to Spelling Practice
yazıp klavyenizde Enter tuşuna basın.
İşleminizin ana çağrısını tetiklediğinizde Asistan, özelleştirilmiş karşılama mesajınızla yanıt verir. Bu noktada, Asistan bir selamlama mesajıyla yanıt verdikten sonra sohbet sona erer.
Olay günlüklerini göster
Test sekmesindeyken sağ taraftaki panelde, ileti dizisi geçmişini olay günlükleri olarak görüntüleyen etkinlik günlükleri gösterilir. Her bir olay günlüğü, ileti dizisinin bu dönüşü sırasında gerçekleşen etkinlikleri görüntüler. Olay günlüğünü görüntülemek için etkinlikten önceki gri simgeyi tıklayın.
İşleminizin şu anda hem kullanıcı girişini ("Yazım Alıştırması'yla Konuşun") hem de İşleminizin yanıtını gösteren bir etkinlik günlüğü var. Aşağıdaki ekran görüntüsünde işleminizin olay günlüğü gösterilmektedir:
11. Yazım alıştırması için bir konuşma oluşturun
Bir kullanıcı İşleminizi çağırdıktan sonra ne olduğunu tanımladığınıza göre artık İşleminizle ilgili görüşmenin kalan kısmını oluşturabilirsiniz. Yazım Alıştırması'nda dört sahne vardır ve çalıştırılmadan önce her sahneyi etkinleştirmeniz gerekir. Bir sahneyi etkinleştirmenin en yaygın yolu, İşleminizi, kullanıcı bir sahnedeki kullanıcı niyetiyle eşleştiğinde o niyetin başka bir sahneye geçişi tetikleyecek ve etkinleştirecek şekilde yapılandırmaktır.
Ana çağrıdan başlangıç sahnesine geçiş
Bu bölümde Start
adlı yeni bir sahne oluşturursunuz. Bu sahnede kullanıcıya Yazım Alıştırması'nı oynamaya başlamak isteyip istemediğini soran bir istem gönderilir. Ayrıca, ana çağrıdan yeni Start
sahnesine geçiş de ekleyebilirsiniz.
Bu sahneyi oluşturmak ve ona bir geçiş eklemek için şu adımları uygulayın:
- Üst gezinme menüsünde Geliştir'i tıklayın. Ardından, sol gezinme menüsünden Ana çağrı'yı tıklayın.
- Sağdaki Transition bölümünde açılır menüyü tıklayın ve metin alanına
Start
yazın.
- Ekle'yi tıklayın. Bu,
Start
adında bir sahne oluşturur ve İşlem, kullanıcıya karşılama istemini gönderdikten sonra İşleme,Start
sahnesine geçiş yapmasını söyler. - Sahnelerin listesini göstermek için sol gezinme menüsünden Sahneler'i tıklayın.
- Sahneler bölümünde,
Start
sahnesini görmek için Başlat'ı tıklayın. Start
sahnesinin Girişte bölümündeki + işaretini tıklayın.- İstemleri gönder'i seçin.
speech
alanındaki (Enter the response that users will see or hear...
) cümleyi, kullanıcıya sormak için 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, İşleminizin kullanıcı girişi olarak işlediği kullanıcıya tıklanabilir öneriler sunar. Bu bölümde, az önce yapılandırdığınız istemin (Do you want to play
) altında görünen öneri çipleri eklersiniz.
Spelling Practice
?
) ekleyebilirsiniz.
Start
sahnesinin istemine öneri çipleri eklemek için aşağıdaki adımları uygulayın:
Start
sahnesinde, kod düzenleyicinin altındaki önerileri tıklayın. Bu işlem tek bir öneri çipi ekler.title
alanındaSuggested Response
değ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 gibi görünmelidir: - Kaydet'i tıklayın.
İşleminizi simülatörde test etme
Bu noktada İşleminiz ana çağrıdan Başlangıç sahnesine geçiş yapmalı ve kullanıcıya devam etmek isteyip istemediğini sormalıdır. Simüle edilen ekranda öneri çipleri de gösterilmelidir.
İşleminizi simülasyon aracında test etmek için aşağıdaki adımları uygulayın:
- Gezinme çubuğunda Test'i tıklayarak simülasyon aracına gidin.
- Simülasyon aracında işleminizi test etmek için giriş alanına
Talk to Spelling Practice
yazın. - Enter tuşuna basın. İşleminiz,
Main invocation
istemi ve eklenenStart
sahne 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
,No
veyaHelp with Phonetics
öneri çipini tıklayın. (Ayrıca "Evet", "Hayır" veya "Fonetikle İlgili Yardım" diyebilir ya da Giriş alanınaYes
,No
veyaHelp with Phonetics
girebilirsiniz.)
İsteme yanıt verdiğinizde İşleminiz, girişinizi anlayamadığını belirten bir mesajla yanıt verir: "Maalesef anlayamadım. Tekrar deneyebilir misiniz?" İşleminizi "Evet" veya "Hayır" girişinizi anlayıp yanıt verecek şekilde henüz yapılandırmadığınızdan İşleminiz, girişinizi bir NO_MATCH
amacıyla eşleştiriyor.
Varsayılan olarak NO_MATCH
sistem amacı, genel yanıtlar sağlar ancak bu yanıtları kullanıcıya, girişini anlamadığınızı belirtecek şekilde özelleştirebilirsiniz. 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 amaç ekle
Kullanıcılar İşleminizin sorduğu soruya yanıt verebildiğine göre İşleminizi kullanıcıların davranışlarını anlayacak şekilde yapılandırabilirsiniz. yanıtlar ("Evet" veya "Hayır" ya da "Fonetikle ilgili yardım"). Aşağıdaki bölümlerde, kullanıcı "Evet", "Hayır" veya "Fonetikle ilgili yardım" dediğinde eşleşen kullanıcı amaçları oluşturursunuz. ve bu amaçları Start
sahnesine ekleyin. Sistem amacını yes
kullanacak ve başka amaçlar oluşturacağız.
no
intent oluştur
Şimdi, oyunu oynamak istemeyen kullanıcıları anlamak ve onlara yanıt vermek için no
niyetini oluşturmanız gerekir. Bu niyeti oluşturmak için aşağıdaki adımları uygulayın:
- Gezinme menüsünde Geliştir'i tıklayın.
- Amaçların listesini açmak için gezinme bölümünde Özel Amaçlar'ı tıklayın.
- Amaçlar listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni niyeti
no
adlandırın ve Enter tuşuna basın. no
intent sayfasını açmak için hayır'ı tıklayın.- Eğitim ifadeleri ekleyin bölümünde Kelime Öbeği Girin metin kutusunu tıklayın ve aşağıdaki ifadeleri girin:
No
N
I don't want
nope
- Kaydet'i tıklayın.
Start
sahneye no
intent ekleyin
İşlem artık kullanıcının ne zaman "hayır" veya "no" benzeri bir ifade (ör. "no") ifade ettiğini anlayabilir. Kullanıcı, Start
istemine ("Yazım Pratiğine Hoş Geldiniz.no
Start
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 niyeti Start
sahnesine eklemek için aşağıdaki adımları uygulayın:
- Gezinmedeki Başlangıç sahnesini tıklayın.
- Kullanıcı amacını işleme seçeneğinin yanındaki
Start
sahnesinde + (artı işareti) simgesini tıklayın. - Niyet bölümündeki açılır menüden hayır'ı seçin.
- İstemleri gönder'i tıklayın ve
speech
alanını şu metinle güncelleyin:Good Bye
.
Düzenleyicinizdeki kod, aşağıdaki snippet gibi görünmelidir:
candidates: - first_simple: variants: - speech: >- Goodbye.
- Geçiş bölümünde, açılır listeden Görüşmeyi sonlandır'ı seçin.
- Kaydet'i tıklayın.
Simülasyon aracında no
amacını test edin
İşleminiz bu noktada kullanıcının oyunu oynamak istemediğini anlar ve uygun yanıtı döndürür.
Bu amacı simülasyon aracında test etmek için aşağıdaki adımları izleyin:
- Gezinme çubuğunda Test et'i tıklayın.
- Giriş alanına
Talk to Spelling Practice
yazıpEnter
tuşuna basın. - Giriş alanına
No
yazın ve Enter tuşuna basın. Alternatif olarak Öneri yok çipini de tıklayabilirsiniz.
Start
sahneye sistem YES
niyeti ekle
Şimdi, kullanıcı Start
istemine ("Yazım Pratiğine Hoş Geldiniz.Start
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:
- Gezinmedeki Başlangıç sahnesini tıklayın.
- Kullanıcı amacı işleme'nin yanındaki
Start
sahnesinde + (artı işareti) simgesini tıklayın. - Tüm Sistem Niyetleri'nin altındaki intent açılır menüsünden EVET'i seçin.
- Webhook'unuzu çağırın'ı tıklayın ve
event handler
metin 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 Görüşmeyi sonlandır'ı seçin.
- Kaydet'i tıklayın.
Simülasyon aracında YES
amacını test edin
Bu noktada İşleminiz kullanıcının oyunu oynamak istediğini anlar ve uygun yanıtı döndürür.
Bu amacı simülasyon aracında test etmek için aşağıdaki adımları izleyin:
- Gezinme çubuğunda Test et'i tıklayın.
- Simülasyon aracında işleminizi test etmek için Giriş alanına
Talk to Spelling Practice
yazıp Enter tuşuna basın. - Giriş alanına
Yes
yazın ve Enter tuşuna basın. Alternatif olarakYes
öneri çipini de tıklayabilirsiniz.
İşleminiz tüm yazım alıştırması kelimelerinin listesini getirir ve bunları oturumda saklar. İşleminiz, YES
amacı için End conversation
geçişini seçtiğiniz için oturumu sonlandırır.
Phonetics
intent oluştur
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çların listesini açmak için gezinme bölümünde Özel Amaçlar'ı tıklayın.
- Amaçlar listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amacı
phonetics
olarak adlandırın veEnter
tuşuna basın. phonetics
intent sayfasını açmak içinphonetics
niyetini tıklayın.- Eğitim ifadeleri ekle bölümünde İfade Girin metin kutusunu tıklayın ve aşağıdaki kelime öbeklerini girin:
how do I spell words
phonetics
help me with phonetics
phonetic alphabet
- Kaydet'i tıklayın.
Start
sahneye phonetics
intent ekleyin
İşlem artık kullanıcının "fonetik" niyetini ifade ettiğini anlayabilir. Kullanıcı Start
istemine ("Yazım Pratiğine Hoş Geldiniz.phonetics
Start
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:
- Gezinmedeki Başlangıç sahnesini tıklayın.
- Kullanıcı amacını işleme seçeneğinin yanındaki
Start
sahnesinde + (artı) işaretini tıklayın. - Amaç açılır listesinde fonetik seçeneğini belirleyin.
- Geçiş bölümünde açılır menüyü tıklayın ve Görüşmeyi sonlandır'ı seçin.
- Kaydet'i tıklayın.
Başlangıç sahnesinden Yazım sahnesine geçiş
Bu bölümde, Yazım adında yeni bir sahne oluşturursunuz. Bu sahne, kullanıcıya kelimeyi fonetik alfabeyi kullanarak yazması için bir istem gönderir.
Bu sahneyi oluşturmak ve ona bir geçiş eklemek için şu adımları uygulayın:
- Üst gezinme menüsünde Geliştir'i tıklayın. Ardından, sol gezinme menüsünden Başlat sahnesini tıklayın.
- Kullanıcı amacı işleme bölümünde
when actions.intent.YES is matched
simgesini ve ardından sağ taraftaki geçiş bölümünde açılır menüyü tıklayın ve metin alanınaSpelling
yazın. - Ekle'yi tıklayın. Bu,
Spelling
adında bir sahne oluşturur ve YES niyetiyle eşleştirmeden sonra İşleme,Spelling
sahnesine geçiş yapmasını söyler. - Sahnelerin listesini göstermek için sol gezinme menüsünde Sahneler'i genişletin.
Spelling
sahnesini görmek için Sahneler'in altında Yazım'ı tıklayın.Spelling
sahnesinin Girişte bölümündeki + işaretini tıklayın.- Webhook'unuzu arayın'ı tıklayın ve etkinlik işleyici metin kutusuna getSpellingWord yazın.
- İstemleri gönder'i seçin.
speech
alanındaki (Enter the response that users will see or hear...
) cümleyi {} ile değiştirin. Asıl istem webhook tarafından doldurulur.
Öneri çipleri, İşleminizin kullanıcı girişi olarak işlediği kullanıcıya tıklanabilir öneriler sunar.
Spelling
sahnesinin istemine öneri çipleri eklemek için aşağıdaki adımları uygulayın:
Spelling
sahnesinde, kod düzenleyicinin altındaki önerileri tıklayın. Bu işlem üç öneri çipi ekler.title
alanındaSuggested Response
değ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 gibi görünmelidir: - Kaydet'i tıklayın.
suggestions: - title: 'Repeat' - title: 'Skip' - title: 'Quit'
Repeat
intent oluştur
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çların listesini açmak için gezinme bölümünde Özel Amaçlar'ı tıklayın.
- Amaçlar listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amacı
repeat
olarak adlandırın veEnter
tuşuna basın. definition
intent sayfasını açmak içinrepeat
niyetini tıklayın.- Eğitim ifadeleri ekleyin bölümünde İfade Girin metin kutusunu tıklayın ve aşağıdaki kelime öbeklerini girin:
one more time please
say the word again
repeat the word
tell me again
repeat
- Kaydet'i tıklayın.
Spelling
sahneye repeat
intent ekleyin
İşlem artık kullanıcının "tekrarlama" niyetini ifade ettiğini anlayabilir. Kullanıcı Spelling
istemine ("Fonetik alfabeyi kullanarak kelimeyi yazın") yanıt verdiği için 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.
- Kullanıcı amacı işleme'nin yanındaki
Spelling
sahnesinde + (artı işareti) simgesini tıklayın. - Amaç açılır menüsünde tekrarla'yı seçin.
- Webhook'unuzu arayın'ı işaretleyin ve kelimenin tanımını öğrenmek için etkinlik işleyici metin kutusuna repeatSpellingWord yazın.
- İstemleri gönder'i işaretleyin.
speech
alanındaki (Enter the response that users will see or hear...
) cümleyi "' ile değiştirin. Asıl istem webhook tarafından doldurulur.
"Tekrar eşleştiğinde" bölümüne öneri çipleri ekleme
- "Tekrar eşleştiğinde" bölümünde Kullanıcı Amacı işleme bölümünde, kod düzenleyicinin altındaki öneriler'i tıklayın. Bu işlem üç öneri çipi ekler.
title
alanındaSuggested Response
değ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 gibi görünmelidir:
suggestions: - title: 'Skip' - title: 'Quit'
- Kaydet'i tıklayın.
definition
intent oluştur
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çların listesini açmak için gezinme bölümünde Özel Amaçlar'ı tıklayın.
- Amaçlar listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amacı
definition
olarak adlandırın veEnter
tuşuna basın. definition
intent sayfasını açmak içindefinition
niyetini tıklayın.- Eğitim ifadeleri ekleyin bölümünde İfade Girin metin kutusunu tıklayın ve aşağıdaki kelime öbeklerini girin:
I would like to know the definition
tell me the definition
what does it mean
meaning
definition
what is the definition?
- Kaydet'i tıklayın.
Spelling
sahneye definition
intent ekleyin
İşlem artık kullanıcının "tanım" niyetini ifade ettiğini anlayabilir. Kullanıcı Spelling
istemine ("Fonetik alfabeyi kullanarak kelimeyi yazın") yanıt verdiği için 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.
- Kullanıcı amacı işleme'nin yanındaki
Spelling
sahnesinde + (artı işareti) simgesini tıklayın. - Amaç açılır menüsünde tanım'ı seçin.
- Webhook'unuzu arayın'ı işaretleyin ve kelime tanımını öğrenmek için etkinlik işleyici metin kutusuna definitionOfSpellingWord yazın.
- İstemleri gönder'i işaretleyin.
speech
alanındaki (Enter the response that users will see or hear...
) cümleyi "'" ile değiştirin. Asıl istem webhook tarafından doldurulur.
Webhook yanıtına öneri çipleri ekleme
Start
sahnesinde, kod düzenleyicinin altındaki öneriler'i tıklayın. Bu işlem üç öneri çipi ekler.title
alanındaSuggested Response
değ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 gibi görünmelidir:
suggestions: - title: 'Skip' - title: 'Quit'
- Kaydet'i tıklayın.
skip
intent oluştur
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ın listesini açmak için gezinme bölümünde Niyetler'i tıklayın.
- Amaçlar listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amacı
skip
olarak adlandırın veEnter
tuşuna basın. skip
intent sayfasını açmak içinskip
niyetini tıklayın.- Eğitim ifadeleri ekleyin bölümünde İfade Girin metin kutusunu tıklayın ve aşağıdaki kelime öbeklerini girin:
next word
go next
next
skip
skip word
- Kaydet'i tıklayın.
Spelling
sahneye Skip
intent ekleyin
İşlem artık kullanıcının "atlama" niyetini ifade ettiğini anlayabilir. Kullanıcı Spelling
istemine ("Fonetik alfabeyi kullanarak kelimeyi yazın") yanıt verdiği için 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.
- Kullanıcı amacı işleyici'nin yanındaki
Spelling
sahnesinde + (artı işareti) simgesini tıklayın. - Amaç açılır menüsünde atla'yı seçin.
- Sağ taraftaki Transition (Geçiş) bölümünde, açılır menüyü tıklayın ve
Spelling
seçeneğini belirleyin .
- Kaydet'i tıklayın.
quit
intent oluştur
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ın listesini açmak için gezinme bölümünde Niyetler'i tıklayın.
- Amaçlar listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amacı
Quit
olarak adlandırın veEnter
tuşuna basın. - Tanım intent sayfasını açmak için
Quit
niyetini tıklayın. - Eğitim ifadeleri ekleyin bölümünde İfade Girin metin kutusunu tıklayın ve aşağıdaki kelime öbeklerini girin:
I quit
Goodbye
Cancel
Exit
Quit
- Kaydet'i tıklayın.
Spelling
sahneye Quit
intent ekleyin
İşlem artık kullanıcının "çık" niyetini ifade ettiğini anlayabilir. Kullanıcı Spelling
istemine ("Fonetik alfabeyi kullanarak kelimeyi yazın") yanıt verdiği için 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.
- Kullanıcı amacı işleme'nin yanındaki
Spelling
sahnesinde + (artı işareti) simgesini tıklayın. - Amaç açılır menüsünde çık'ı seçin.
- Sağ taraftaki Transition (Geçiş) bölümünde, açılır menüyü tıklayın ve
End conversation
seçeneğini belirleyin . - Kaydet'i tıklayın.
phonetic_alphabet
türü oluştur
Bu bölümde, phonetic_alphabet
adında yeni bir tür oluşturursunuz. Bu tür, kullanıcıların kelimeyi hecelemek için seçebileceği fonetik alfabe seçeneklerini belirtir. Ayrıca, kullanıcının benzer bir şey söylemesi ihtimaline karşı bu seçenekler için birkaç eş anlamlı kelime de tanımlayabilirsiniz. Sonraki bir bölümde, kullanıcının yanıtını almak istediğinizi belirtmek için bir alana phonetic_alphabet
türünü eklersiniz.
phonetic_alphabet
türünü oluşturmak için şu adımları uygulayın:
- Gezinme menüsünde Geliştir'i tıklayın.
- Types (Türler) bölümünde + (artı işareti) seçeneğini tıklayın.
phonetic_alphabet
yazıpEnter
tuşuna basın.- Seçenekleri açmak için
phonetic_alphabet
simgesini tıklayın. - Bu Tür ne tür değerleri destekler? bölümünde, Kelimeler ve eş anlamlılar seçeneğini belirleyin
- Aşağıdaki girişleri ve karşılık gelen değerleri AddEntry (Girişleri ekle) bölümüne girin:
a | alfa, elma, amsterdam |
| bravo, tereyağı, baltimore |
c | charlie, kedi, kazablanka |
g | delta, köpek, danimarka |
e | echo, edward, edison |
k | foxtrot, tilki, florida |
| golf, george, gallipoli |
sa | otel, harry, havana |
i | hindistan, mürekkep, İtalya |
k | juliette, johnny, kudüs |
B | kilo, kral, kilogram |
| lima, aşk, londra |
dk | mike, para, madagaskar |
n | kas, istanbul, istanbul |
o | oscar, turuncu, oslo |
s | papa, paris, peter |
k | quebec, kraliçe |
r | romeo, roma, robert |
sn | sierra, şeker, santiago |
t | tango, tommy, tripoli |
u | üniforma, şemsiye, amca |
v | victor, sirke, Valensiya |
h | viski, william, washington |
kat | röntgen |
y | yankee, sarı, yorker |
z | zulu, zebra, zürih |
Anahtar/değer çifti tablonuz aşağıdaki gibi görünmelidir:
- Kaydet'i tıklayın.
Boşluk doldurmayı yapılandırma
Sonra, Yazım sahnesini boşluk doldurmayı yapılandırmanız gerekir. Slot doldurma mantığını yapılandırmak için şu adımları uygulayın:
- Gezinme bölümünde Yazım sahnesini tıklayın.
- Slot doldurma için
Spelling
sahnesinde + (artı işareti) simgesini tıklayın. - Alan adını girin alanında, alan adı olarak
userresponse
değerini ekleyin. - Tür seçin açılır menüsünde alan türü olarak phonetic_alphabet değerini seçin.
- Bu alan, değer listesi kabul eder'i işaretleyin
- Bu alan zorunludur'ı işaretleyin.
- Alan değeri geri yazmayı özelleştir seçeneğini belirleyin ve oturum parametresi metin kutusuna kullanıcı yanıtını girin.
- Kaydet'i tıklayın.
Spelling
ekranına Koşul ekle
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
Spelling
sahnesinde + (artı işareti) simgesini tıklayın. - Koşul olarak
scene.slots.status == "FINAL"
değerini girin - Webhook'unuzu arayı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.
speech
alanındaki (Enter the response that users will see or hear...
) cümleyi {} ile değiştirin. Asıl istem webhook tarafından doldurulur.
Webhook yanıtına öneri çipleri ekleme
Start
sahnesinde, kod düzenleyicinin altındaki öneriler'i tıklayın. Bu işlem üç öneri çipi ekler.title
alanındaSuggested Response
değ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 gibi görünmelidir:
suggestions: - title: 'Next' - title: 'Quit'
- Kaydet'i tıklayın.
12. Simülatörde yazım alıştırmalarını test edin
İşleminizi simülasyon aracında test etmek için aşağıdaki adımları uygulayın:
- Gezinme çubuğunda Test'i tıklayarak simülasyon aracına gidin.
- Simülasyon aracında işleminizi test etmek için giriş alanına
Talk to Spelling Practice
yazın. - Enter tuşuna basın. İşleminiz,
Main invocation
istemi ve eklenenStart
sahne 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ülatör büyülü bir kelime sesi çalacak
- Kelimeyi fonetik alfabeler kullanarak heceleyebilirsiniz. Örneğin, daha iyi için "bravo echo tango tango echo romeo" deyin veya yazın.
- Simülasyon aracı doğru veya yanlış yanıtı verecektir.
- Sonraki kelimeye devam etmek için sonraki deyin veya oyun döngüsünden çıkmak için çık deyin.
13. Tebrikler
Tebrikler, Yazım Alıştırması oyununuzu başarıyla oluşturdunuz!
Artık Cloud Firestore, Cloud Functions ve Google Assistant Action Builder'ı kullanarak oyun derlemek için hangi adımların gerekli olduğunu biliyorsunuz.
İşlediğiniz konular
- Cloud Firestore ile etkileşim kurma
- Kullanıcıdan veri toplamak için slotları kullanma
- Bir kullanıcının girişini işleme ve yanıt döndürme
- Bir sahneye mantık eklemek için koşullar nasıl kullanılır?
- Oyun döngüsü nasıl eklenir?
Ek öğrenme kaynakları
Google Asistan için İşlemler oluşturma hakkında bilgi edinmek üzere şu kaynakları keşfedebilirsiniz:
- Google Asistan için Actions'ı geliştirmeyle ilgili dokümanlar
- Örnek kod ve kitaplıklar için Google GitHub sayfasındaki işlemler
- Google Asistan ile çalışan geliştiriciler için resmi Reddit topluluğu
- Conversational Actions ile ilgili en iyi uygulamalar ve yönergeler için ileti dizisi tasarım yönergeleri
- 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 şu 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, silinmek üzere doğru projeyi seçtiğinizden emin olun.
- İsteğe bağlı: Projenizi Actions konsolundan hemen kaldırmak için Proje silme bölümünde listelenen adımları tamamlayın. Bu adımı tamamlamazsanız projeniz yaklaşık 30 gün sonra otomatik olarak kaldırılır.
@ActionsOnGoogle ve En son duyurularımızı takip etmek için Twitter'da @Firebase'i kullanın ve çalışmalarınızı paylaşmak için #GoogleIO'ya tweet atın!