Google Asistan ve Cloud Firestore kullanarak Yazım Alıştırması Oyunu

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:

2e9f94dc0ceafc96.png

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

  1. Firebase'de oturum açın.
  2. Firebase konsolunda Proje Ekle'yi (veya Proje oluştur'u) tıklayın, ardından Firebase projenizi Spelling-Practice adlandırın.

66ae8d1894f4477.png

  1. 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.

  1. Genellikle Node.js ile birlikte gelen npm'yi yüklediğinizden emin olun.
  2. Aşağıdaki npm komutunu çalıştırarak CLI'yı yükleyin veya yükseltin:
$ npm -g install firebase-tools
  1. 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.

  1. Firebase CLI'ı yetkilendirin. Bunun için şu komutu çalıştırın:
$ firebase login
  1. 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.
  1. Aşağıdaki npm komutunu çalıştırarak Actions SDK'sını yükleyin:
$ npm install @assistant/conversation
  1. 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.

332cb0437411a242.png

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.

5c0b4abf4410ffcf.png

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

  1. Firebase konsolunda Cloud Firestore bölümüne gidin.
  2. + Koleksiyonu başlat'ı tıklayın.
  3. Koleksiyon Kimliği metin kutusuna wordlist yazıp İleri'yi tıklayın.

1b4ccadb90f52f02.png

Daha sonra bir kelime için doküman oluşturacağız: sözleşme

  1. Doküman Kimliği metin kutusuna agreement yazın.
  2. Alan metin kutusuna word, Değer metin kutusuna ise agreement yazın.
  3. Kaydet'i tıklayın.

379037e011e8511e.png

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:

  1. Etkinlik kontrolleri sayfasına gidin.
  2. Henüz yapmadıysanız Google Hesabınızla oturum açın.
  3. 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.

c988e1e639e6d6e1.png

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:

  1. Actions Console'u açın.
  2. Yeni proje'yi tıklayın.
  3. Hizmet Şartları'nı kabul edin

b174d45710b8086b.png

  1. 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.)

a2951de5d2001fac.png

  1. Projeyi içe aktar'ı tıklayın.
  2. Ne tür bir işlem oluşturmak istiyorsunuz? ekranında Özel kartını seçin.
  3. İleri'yi tıklayın.
  4. Boş proje kartını seçin.
  5. Derlemeye başla'yı tıklayın.
  6. 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:

  1. Yan gezinme menüsünde Webhook'u tıklayın.
  2. Karşılama seçeneği olarak Https uç noktası'nı seçin:

d523bf003e96e66f.png

  1. HTTPs uç noktası metin kutusuna işlevinizin uç noktasının URL'sini girip Kaydet'i tıklayın.

be53e2cd0d914d54.png

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:

  1. Gezinme bölümünde Ana çağrı'yı tıklayın.

9ff088c04c995cde.png

  1. Call your webhook simgesini işaretleyin ve metin kutusuna etkinlik işleyici adını getSpellingWordList ekleyin.
  2. 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.

  1. 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:

  1. Simülasyon aracına gitmek için üst gezinme çubuğunda Test'i tıklayın.
  2. 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.

651fc8da1ac9aa0a.png

İş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:

a6fb192f94426824.png

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:

  1. Ü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.
  2. Sağdaki Transition bölümünde açılır menüyü tıklayın ve metin alanına Start yazın.

dd4f1807a57f794d.png

  1. 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.
  2. Sahnelerin listesini göstermek için sol gezinme menüsünden Sahneler'i tıklayın.
  3. Sahneler bölümünde, Start sahnesini görmek için Başlat'ı tıklayın.
  4. Start sahnesinin Girişte bölümündeki + işaretini tıklayın.
  5. İstemleri gönder'i seçin.
  6. 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:

  1. Start sahnesinde, kod düzenleyicinin altındaki önerileri tıklayın. Bu işlem tek bir öneri çipi ekler.
  2. title alanında Suggested Response değerini 'Yes' ile değiştirin.
  3. 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:
  4. Kaydet'i tıklayın.

5ff2ecdc56801b91.png

İş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:

  1. Gezinme çubuğunda Test'i tıklayarak simülasyon aracına gidin.
  2. Simülasyon aracında işleminizi test etmek için giriş alanına Talk to Spelling Practice yazın.
  3. Enter tuşuna basın. İşleminiz, Main invocation istemi ve eklenen Start 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:

338c9570b02a618e.png

  1. İsteme yanıt vermek için Yes, No veya Help with Phonetics öneri çipini tıklayın. (Ayrıca "Evet", "Hayır" veya "Fonetikle İlgili Yardım" diyebilir ya da Giriş alanına Yes, No veya Help 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:

  1. Gezinme menüsünde Geliştir'i tıklayın.
  2. Amaçların listesini açmak için gezinme bölümünde Özel Amaçlar'ı tıklayın.
  3. Amaçlar listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni niyeti no adlandırın ve Enter tuşuna basın.
  4. no intent sayfasını açmak için hayır'ı tıklayın.
  5. 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

98b0c9a7b67ea9b9.png

  1. 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.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?").

Bu niyeti Start sahnesine eklemek için aşağıdaki adımları uygulayın:

  1. Gezinmedeki Başlangıç sahnesini tıklayın.
  2. Kullanıcı amacını işleme seçeneğinin yanındaki Start sahnesinde + (artı işareti) simgesini tıklayın.
  3. Niyet bölümündeki açılır menüden hayır'ı seçin.

51f752e78c8b4942.png

  1. İ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.
  1. Geçiş bölümünde, açılır listeden Görüşmeyi sonlandır'ı seçin.
  2. 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:

  1. Gezinme çubuğunda Test et'i tıklayın.
  2. Giriş alanına Talk to Spelling Practice yazıp Enter tuşuna basın.
  3. Giriş alanına No yazın ve Enter tuşuna basın. Alternatif olarak Öneri yok çipini de tıklayabilirsiniz.

7727a456b522f31b.png

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:

  1. Gezinmedeki Başlangıç sahnesini tıklayın.
  2. Kullanıcı amacı işleme'nin yanındaki Start sahnesinde + (artı işareti) simgesini tıklayın.
  3. Tüm Sistem Niyetleri'nin altındaki intent açılır menüsünden EVET'i seçin.

f6cbe789cde49e8f.png

  1. Webhook'unuzu çağırın'ı tıklayın ve event handler metin kutusunu daha önce oluşturduğunuz işlevle güncelleyin: getSpellingWordList
  2. Geçiş bölümünde açılır menüyü tıklayın ve Görüşmeyi sonlandır'ı seçin.
  3. 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:

  1. Gezinme çubuğunda Test et'i tıklayın.
  2. Simülasyon aracında işleminizi test etmek için Giriş alanına Talk to Spelling Practice yazıp Enter tuşuna basın.
  3. Giriş alanına Yes yazın ve Enter tuşuna basın. Alternatif olarak Yes ö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:

  1. Gezinme menüsünde Geliştir'i tıklayın.
  2. Amaçların listesini açmak için gezinme bölümünde Özel Amaçlar'ı tıklayın.
  3. Amaçlar listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amacı phonetics olarak adlandırın ve Enter tuşuna basın.
  4. phonetics intent sayfasını açmak için phonetics niyetini tıklayın.
  5. 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

1455bdfca8dae46.png

  1. 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.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:

  1. Gezinmedeki Başlangıç sahnesini tıklayın.
  2. Kullanıcı amacını işleme seçeneğinin yanındaki Start sahnesinde + (artı) işaretini tıklayın.
  3. Amaç açılır listesinde fonetik seçeneğini belirleyin.

67ee2e08000b2aee.png

  1. Geçiş bölümünde açılır menüyü tıklayın ve Görüşmeyi sonlandır'ı seçin.
  2. 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:

  1. Üst gezinme menüsünde Geliştir'i tıklayın. Ardından, sol gezinme menüsünden Başlat sahnesini tıklayın.
  2. 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ına Spelling yazın.
  3. 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.
  4. Sahnelerin listesini göstermek için sol gezinme menüsünde Sahneler'i genişletin.
  5. Spelling sahnesini görmek için Sahneler'in altında Yazım'ı tıklayın.
  6. Spelling sahnesinin Girişte bölümündeki + işaretini tıklayın.
  7. Webhook'unuzu arayın'ı tıklayın ve etkinlik işleyici metin kutusuna getSpellingWord yazın.
  8. İstemleri gönder'i seçin.
  9. 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:

  1. Spelling sahnesinde, kod düzenleyicinin altındaki önerileri tıklayın. Bu işlem üç öneri çipi ekler.
  2. title alanında Suggested Response değerini 'Repeat' ile değiştirin.
  3. Aynı biçimlendirmeyi kullanarak 'Skip' başlıklı bir öneri çipini manuel olarak ekleyin.
  4. Aynı biçimlendirmeyi kullanarak 'Quit' başlıklı bir öneri çipini manuel olarak ekleyin. Kodunuz aşağıdaki snippet gibi görünmelidir:
  5. Kaydet'i tıklayın.
suggestions:
      - title: 'Repeat'
      - title: 'Skip'
      - title: 'Quit'

e1d437f714ea1539.png

Repeat intent oluştur

repeat amacını oluşturmak için aşağıdaki adımları uygulayın:

  1. Gezinme menüsünde Geliştir'i tıklayın.
  2. Amaçların listesini açmak için gezinme bölümünde Özel Amaçlar'ı tıklayın.
  3. Amaçlar listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amacı repeat olarak adlandırın ve Enter tuşuna basın.
  4. definition intent sayfasını açmak için repeat niyetini tıklayın.
  5. 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

e61f0b9f80510bc9.png

  1. 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:

  1. Gezinme bölümünde Yazım sahnesini tıklayın.
  2. Kullanıcı amacı işleme'nin yanındaki Spelling sahnesinde + (artı işareti) simgesini tıklayın.
  3. Amaç açılır menüsünde tekrarla'yı seçin.

5cfd623b25bedbed.png

  1. Webhook'unuzu arayın'ı işaretleyin ve kelimenin tanımını öğrenmek için etkinlik işleyici metin kutusuna repeatSpellingWord yazın.
  2. İstemleri gönder'i işaretleyin.
  3. 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

  1. "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.
  2. title alanında Suggested Response değerini 'Skip' ile değiştirin.
  3. 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'

ab40e4b0c432b97c.png

  1. Kaydet'i tıklayın.

definition intent oluştur

definition amacını oluşturmak için aşağıdaki adımları uygulayın:

  1. Gezinme menüsünde Geliştir'i tıklayın.
  2. Amaçların listesini açmak için gezinme bölümünde Özel Amaçlar'ı tıklayın.
  3. Amaçlar listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amacı definition olarak adlandırın ve Enter tuşuna basın.
  4. definition intent sayfasını açmak için definition niyetini tıklayın.
  5. 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?

c1b88a9c0b1ac082.png

  1. 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:

  1. Gezinme bölümünde Yazım sahnesini tıklayın.
  2. Kullanıcı amacı işleme'nin yanındaki Spelling sahnesinde + (artı işareti) simgesini tıklayın.
  3. Amaç açılır menüsünde tanım'ı seçin.

646bdcac3ad3eb0c.png

  1. Webhook'unuzu arayın'ı işaretleyin ve kelime tanımını öğrenmek için etkinlik işleyici metin kutusuna definitionOfSpellingWord yazın.
  2. İstemleri gönder'i işaretleyin.
  3. 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

  1. Start sahnesinde, kod düzenleyicinin altındaki öneriler'i tıklayın. Bu işlem üç öneri çipi ekler.
  2. title alanında Suggested Response değerini 'Skip' ile değiştirin.
  3. 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'

25227545839d933f.png

  1. Kaydet'i tıklayın.

skip intent oluştur

skip amacını oluşturmak için aşağıdaki adımları uygulayın:

  1. Gezinme menüsünde Geliştir'i tıklayın.
  2. Amaçların listesini açmak için gezinme bölümünde Niyetler'i tıklayın.
  3. Amaçlar listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amacı skip olarak adlandırın ve Enter tuşuna basın.
  4. skip intent sayfasını açmak için skip niyetini tıklayın.
  5. 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

d1c4908a3d7882f8.png

  1. 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:

  1. Gezinme bölümünde Yazım sahnesini tıklayın.
  2. Kullanıcı amacı işleyici'nin yanındaki Spelling sahnesinde + (artı işareti) simgesini tıklayın.
  3. Amaç açılır menüsünde atla'yı seçin.

5465f97542217964.png

  1. Sağ taraftaki Transition (Geçiş) bölümünde, açılır menüyü tıklayın ve Spelling seçeneğini belirleyin .

c8072485ca82bd3f.png

  1. Kaydet'i tıklayın.

quit intent oluştur

Quit amacını oluşturmak için aşağıdaki adımları uygulayın:

  1. Gezinme menüsünde Geliştir'i tıklayın.
  2. Amaçların listesini açmak için gezinme bölümünde Niyetler'i tıklayın.
  3. Amaçlar listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amacı Quit olarak adlandırın ve Enter tuşuna basın.
  4. Tanım intent sayfasını açmak için Quit niyetini tıklayın.
  5. 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

9916f77b8766541e.png

  1. 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:

  1. Gezinme bölümünde Yazım sahnesini tıklayın.
  2. Kullanıcı amacı işleme'nin yanındaki Spelling sahnesinde + (artı işareti) simgesini tıklayın.
  3. Amaç açılır menüsünde çık'ı seçin.

5f62fb18a3653d66.png

  1. Sağ taraftaki Transition (Geçiş) bölümünde, açılır menüyü tıklayın ve End conversation seçeneğini belirleyin . 1ffbe35a7bbbb4b0.png
  2. 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:

  1. Gezinme menüsünde Geliştir'i tıklayın.
  2. Types (Türler) bölümünde + (artı işareti) seçeneğini tıklayın.
  3. phonetic_alphabet yazıp Enter tuşuna basın.
  4. Seçenekleri açmak için phonetic_alphabet simgesini tıklayın.
  5. Bu Tür ne tür değerleri destekler? bölümünde, Kelimeler ve eş anlamlılar seçeneğini belirleyin
  6. 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:

5b5a5cd9fa557e1b.png

  1. 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:

  1. Gezinme bölümünde Yazım sahnesini tıklayın.
  2. Slot doldurma için Spelling sahnesinde + (artı işareti) simgesini tıklayın.
  3. Alan adını girin alanında, alan adı olarak userresponse değerini ekleyin.
  4. Tür seçin açılır menüsünde alan türü olarak phonetic_alphabet değerini seçin.
  5. Bu alan, değer listesi kabul eder'i işaretleyin
  6. Bu alan zorunludur'ı işaretleyin.
  7. Alan değeri geri yazmayı özelleştir seçeneğini belirleyin ve oturum parametresi metin kutusuna kullanıcı yanıtını girin.

ba57a419877a07f3.png

  1. 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:

  1. Gezinme bölümünde Yazım sahnesini tıklayın.
  2. Koşul'un yanındaki Spelling sahnesinde + (artı işareti) simgesini tıklayın.
  3. Koşul olarak scene.slots.status == "FINAL" değerini girin
  4. Webhook'unuzu arayın'ı işaretleyin ve kullanıcı yanıtını doğrulamak için etkinlik işleyici metin kutusuna verifySpellingWord yazın.
  5. İstemleri gönder'i işaretleyin.
  6. 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

  1. Start sahnesinde, kod düzenleyicinin altındaki öneriler'i tıklayın. Bu işlem üç öneri çipi ekler.
  2. title alanında Suggested Response değerini 'Next' ile değiştirin.
  3. 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'

ac3d7a9366ebc1b1.png

  1. 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:

  1. Gezinme çubuğunda Test'i tıklayarak simülasyon aracına gidin.
  2. Simülasyon aracında işleminizi test etmek için giriş alanına Talk to Spelling Practice yazın.
  3. Enter tuşuna basın. İşleminiz, Main invocation istemi ve eklenen Start 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?".
  4. Devam etmek için Evet deyin
  5. Simülatör büyülü bir kelime sesi çalacak
  6. Kelimeyi fonetik alfabeler kullanarak heceleyebilirsiniz. Örneğin, daha iyi için "bravo echo tango tango echo romeo" deyin veya yazın.
  7. Simülasyon aracı doğru veya yanlış yanıtı verecektir.
  8. 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:

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:

  1. 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.

  1. İ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!