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

1. Genel Bakış

Google Asistan geliştirici platformu, sanal bir kişisel asistan olan Google Asistan'ın işlevselliğini akıllı hoparlörler, telefonlar, arabalar, TV'ler, kulaklıklar ve daha fazlası dahil olmak üzere 1 milyardan fazla cihaza genişletecek yazılım oluşturmanıza olanak tanır. Kullanıcılar yiyecek satın almak veya araç rezervasyonu yapmak gibi işleri halletmek için Asistan'la sohbete katılıyor. Bir geliştirici olarak, kullanıcılar ile kendi üçüncü taraf sipariş karşılama hizmetiniz arasında keyifli ve etkili konuşma deneyimlerini kolayca oluşturmak ve yönetmek için Asistan geliştirici platformunu kullanabilirsiniz.

Bu codelab, Google Asistan, Cloud Functions ve Cloud Firestore ile geliştirmeye yönelik orta düzey kavramları kapsar. Bu codelab'de, kullanıcılardan kelimeleri hecelemelerini istemek için Google Asistan'ı kullanan "Yazım Uygulaması" adlı bir oyun geliştireceksiniz.

Ne inşa edeceksin

Bu codelab'de aşağıdaki işlevlere sahip gelişmiş bir oyun geliştireceksiniz:

  • Kullanıcıdan yazım yanıtlarını alır ve değere bağlı olarak konuşma istemlerini değiştirir
  • Kelimenin tanımı veya tekrarı gibi, kelimenin yazılışıyla ilgili ipuçlarıyla 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

Oluşturmaya başlamadan önce, Google Asistan özellikli cihazınızda "Hey Google, Yazım Pratiği ile konuş" diyerek canlı Eylem ile etkileşimde bulunabilirsiniz. Geri dönen bir kullanıcı için bu Eylemin varsayılan yolu aşağıdaki etkileşime benzer:

Bu codelab'i bitirdiğinizde tamamladığınız Action'ınız aşağıdaki konuşma akışına sahip olacaktır:

2e9f94dc0ceafc96.png

Ne öğreneceksin

  • Cloud Firestore ile nasıl etkileşim kurulur?
  • Kullanıcıdan veri toplamak için yuvalar nasıl kullanılır?
  • Bir kullanıcının girişi nasıl işlenir ve yanıt nasıl döndürülür?
  • Bir sahneye mantık eklemek için koşullar nasıl kullanılır?
  • Oyun döngüsü nasıl eklenir

İhtiyacınız olan şey

Bu codelab'in önkoşulları aşağıdakileri içerir:

  • Google Chrome gibi bir web tarayıcısı
  • Bulut İşlevlerini yazmak için bir IDE.
  • Bir ödeme yöntemi. Bu codelab, projenizin Firebase Blaze fiyatlandırma planında olmasını gerektiren Firebase için Bulut İşlevlerini kullanır ( Daha fazla bilgi edinin ).
  • Kabuk komutlarını çalıştıracak bir terminal
  • Node.js 10 veya üzeri

2. İşlev kodunu alın

GitHub deposunu komut satırından kopyalayın:

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

3. Bir Firebase projesi oluşturun ve uygulamanızı kurun

Firebase projesi oluşturma

  1. Firebase'de oturum açın.
  2. Firebase konsolunda Proje Ekle'yi (veya Proje oluştur'u ) tıklayın ve ardından Firebase projenize Spelling-Practice adını verin.

66ae8d1894f4477.png

  1. Proje oluşturma seçeneklerine tıklayın. İstenirse Firebase şartlarını kabul edin. Bu uygulama için Analytics kullanmayacağınız için Google Analytics kurulumunu atlayın.

Firebase projeleri hakkında daha fazla bilgi edinmek için Firebase projelerini anlama konusuna bakın.

Blaze fiyatlandırma planına yükseltme

Firebase için Cloud Functions'ı kullanmak için Firebase projenizi Blaze fiyatlandırma planına yükseltmeniz gerekir; bu, projenize bir Google Cloud Faturalandırma hesabı ekleyeceğiniz anlamına gelir. Bu, bir kredi kartı veya başka bir ödeme yöntemi sağlamanızı gerektirir.

Blaze planındakiler de dahil olmak üzere tüm Firebase projeleri hâlâ Cloud Functions'ın ücretsiz kullanım kotalarına erişebilir. Bu codelab'de özetlenen adımlar, ücretsiz kullanım sınırları dahilinde olacaktır. Ancak, Cloud Functions derleme görüntülerinizi barındırmak için kullanılan Cloud Storage'dan küçük ücretler ( yaklaşık 0,03 ABD doları ) göreceksiniz.

4. Firebase CLI'yi yükleyin

Firebase CLI (komut satırı arayüzü), Bulut İşlevlerinizi dağıtmanıza olanak tanır.

İşletim sisteminize ve kullanım senaryonuza bağlı olarak Firebase CLI'yi yüklemek için çeşitli seçenekler vardır. Aşağıdaki adımlarda, Cloud Functions'ı da kullanıyorsanız en yaygın seçenek açıklanmaktadır.

  1. Genellikle Node.js ile birlikte gelen npm'yi yüklediğinizden emin olun.
  2. Aşağıdaki npm komutunu çalıştırarak CLI'yi yükleyin veya yükseltin:
$ npm -g install firebase-tools
  1. Aşağıdakileri çalıştırarak CLI'nin doğru şekilde kurulduğunu doğrulayın:
$ firebase --version

Firebase CLI sürümünün 9.0.0 veya üzeri olduğundan emin olun; böylece Cloud Functions için gereken en yeni özelliklerin tümüne sahip olur. Değilse, yukarıda gösterildiği gibi yükseltme yapmak için npm install -g firebase-tools komutunu çalıştırın.

  1. Aşağıdakileri çalıştırarak Firebase CLI'yi yetkilendirin:
$ firebase login
  1. Spelling-functions-start dizininden Firebase CLI'yi Firebase projenizi kullanacak şekilde ayarlayın. Aşağıdaki komutu çalıştırın, Proje Kimliğinizi seçin ve ardından talimatları izleyin. İstendiğinde, örneğin codelab gibi herhangi bir Takma Adı seçebilirsiniz.
$ firebase use --add

5. İşlevler dizini

Artık Spelling Practice oyununun arka ucunu oluşturmak için Firebase SDK for Cloud Functions'ı kullanarak işlevsellik ekleyeceksiniz.

Bulut İşlevleri, bir sunucu kurmanıza gerek kalmadan bulutta çalışan kodlara sahip olmanızı sağlar. Bu codelab size Firebase Authentication, Cloud Storage ve Firebase Realtime Database olaylarına tepki veren işlevlerin nasıl oluşturulacağını gösterecektir. Kimlik Doğrulama ile başlayalım.

Cloud Functions için Firebase SDK'yı kullanırken, işlev kodunuz functions dizini altında yer alır (varsayılan olarak). İşinizi kolaylaştırmak için kodunuzun gideceği functions/index.js dosyasını zaten oluşturduk. İlerlemeden önce functions dizinini incelemekten çekinmeyin.

$ cd functions
$ ls

İşlev kodunuz aynı zamanda bir Node.js uygulamasıdır ve bu nedenle uygulamanız hakkında bazı bilgiler veren ve bağımlılıkları listeleyen bir package.json ihtiyaç duyar.

Node.js'ye aşina değilseniz codelab'e devam etmeden önce onun hakkında daha fazla bilgi edinmek size yardımcı olacaktır.

package.json dosyası zaten iki gerekli bağımlılığı listeliyor: Cloud Functions için Firebase SDK'sı ve Firebase Admin SDK'sı . Bunları yerel olarak yüklemek için functions dizininden npm install çalıştırın:

$ npm install

Şimdi index.js dosyasına bir 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 aktaracaksınız, ardından TODO'ların yerine dört işlevi 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 üç modül gerektirir.

  • firebase-functions modülü, Bulut İşlevlerimiz için tetikleyicileri yazmamıza olanak tanır
  • firebase-admin modülü, örneğin Cloud Firestore'a yazmak için Firebase platformunu yönetici erişimi olan bir sunucuda kullanmamıza olanak tanır.
  • Actions SDK Node.js Yerine Getirme Kitaplığı, Google Asistan için Actions SDK işleyicilerini karşılar.
  1. Aşağıdaki npm komutunu çalıştırarak Actions SDK'yı yükleyin:
$ npm install @assistant/conversation
  1. index.js dosyasında ilk TODO'yu aşağıdakiyle değiştirin.

Bu değişiklikler gerekli modüllerin her birini içe aktarır.

Ayrıca Firebase Yönetici SDK'sı, Cloud Functions ortamına veya başka bir Google Cloud kapsayıcısına dağıtıldığında otomatik olarak yapılandırılabilir. admin.initializeApp(); çağırdığımızda olan budur. aşağıdaki değişikliklerde.

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 Eylemlerini destekleyecek işlevleri kullanarak iş mantığını ekleyelim.

7. İşlevler oluşturun

Kelime tanımlarını alın ve Cloud Firestore'a yazın

Kelime tanımlarını almak için dictionaryapi.dev genel API'sini kullanacaksınız.

index.js dosyasında getWordDetailsFromDictionaryAPI için TODO'yu 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 ekleme

Daha sonra, Cloud Firestore'da yeni bir belge oluşturulduğunda tetiklenen bir Bulut İşlevi oluşturacaksınız. Biraz önce yazdığımız getWordDetailsFromDictionaryAPI fonksiyonu üzerinden kelime tanımlarını almak için dictionaryapi.dev API'sini çağıracaktır.

index.js dosyasında, createSpellingPracticeWord TODO'sunu 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);
});

Oyun için kelimelerin bir listesini alın

Asistan için Cloud Firestore'dan yazım alıştırması kelimelerinin listesini alan bir Bulut İşlevi yazabilirsiniz. Bunun için uygulama işleyicisini kullanıyoruz.

index.js dosyasında getSpellingWordList için TODO'yu aşağıdakiyle değiştirin.

Bu işlevi özel app.handle eklemek, işleve Asistan'dan erişilebilmesini sağlamanın 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 bir kelime alın

Kelime listesinden sonraki yazılış kelimesini döndüren bir Bulut İşlevi yazabilirsiniz.

index.js dosyasında getSpellingWord için YAPILACAKLAR'ı 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

Oyun için geçerli kelimeyi tekrarlayan bir Bulut Fonksiyonu yazabilirsiniz.

index.js dosyasında, repeatSpellingWord için TODO'yu 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

Oyun için geçerli kelimenin tanımını sağlayan bir Bulut İşlevi yazabilirsiniz.

index.js dosyasında, definitionOfSpellingWord için TODO'yu 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 edin

Kullanıcının oyun için geçerli kelimenin nasıl yazılacağına ilişkin yanıtını doğrulayan bir Bulut İşlevi yazabilirsiniz.

index.js dosyasında, verifySpellingWord için TODO'yu 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ğıtın

Bulut İşlevleriniz yalnızca onları Firebase'e dağıttıktan sonra etkin olacaktır.

spelling-functions-start ​​dizininin kökünden aşağıdaki komutu çalıştırın:

$ firebase deploy --only functions

Görmeniz gereken konsol çıktısı budur:

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 yazım alıştırması projesine tıklayın. İşlevlerin 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 kurulumuna geçelim.

8. Cloud Firestore'u etkinleştirin

Cloud Firestore'u etkinleştirmeniz gerekecek.

Firebase konsolunun Derleme bölümünde Firestore'u tıklayın. Daha sonra Veritabanı oluştur'u tıklayın.

5c0b4abf4410ffcf.png

Cloud Firestore'daki verilere erişim Güvenlik Kuralları tarafından kontrol edilir. Başlamak için öncelikle veriler üzerinde bazı temel kurallar belirlemeniz gerekir. Firestore'u tıklayın ve ardından Firebase konsolunun Kurallar sekmesinde aşağıdaki kuralları ekleyin ve ardından Yayınla'yı tıklayın.

Aşağıdaki kurallar, oturum açmış olan kullanıcıların veri erişimini kısıtlayarak, kimliği doğrulanmamış kullanıcıların okuma veya yazma yapmasını engeller.

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. Yazım kelimeleri verilerini Cloud Firestore'a ekleyin

Bu adımda, Asistan (ve oyun) için bir kelime listesi oluşturabilmeniz amacıyla Cloud Firestore'a yazım kelimeleri verilerini yazacaksınız.

Cloud Firestore verileri koleksiyonlar, belgeler, alanlar ve alt koleksiyonlar halinde yapılandırılmıştır. Oyunun her kelimesi, wordlist adı verilen üst düzey bir koleksiyonda kendi belgesi olarak saklanacaktır. Firestore koleksiyonundaki her yeni belge için, Dictionary API hizmetinden kelime ayrıntılarını almak üzere createSpellingPracticeWord işlevi tetiklenecektir.

Cloud Firestore koleksiyonu oluşturma

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

1b4ccadb90f52f02.png

Daha sonra tek kelimelik bir belge oluşturacağız: anlaşma

  1. Belge Kimliği metin kutusuna agreement girin.
  2. Alan metin kutusuna word girin ve Değer metin kutusuna agreement girin.
  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şlevinizi tetikler. Her kelime için yeni bir belge oluşturarak daha fazla kelime ekleyin (örneğin: huşu, araba, doğru, söyle, daha iyi, işe gidip gelme, ...).

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 edin

Bu codelab'de oluşturduğunuz Eylemi test etmek için simülatörün Eyleminize erişebilmesi için gerekli izinleri etkinleştirmeniz gerekir. İzinleri etkinleştirmek için şu adımları izleyin:

  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 altında, Chrome geçmişini ve Google hizmetlerini kullanan siteler, uygulamalar ve cihazlardaki etkinlikleri dahil et seçeneğinin yanındaki onay kutusunu seçin.

c988e1e639e6d6e1.png

Eylemler projesi oluşturma

Actions projeniz Action'ınız için bir kapsayıcıdır. Bu codelab'e yönelik Eylemler projenizi oluşturmak için şu adımları izleyin:

  1. Eylemler konsolunu açın.
  2. Yeni proje'yi tıklayın.
  3. Hizmet şartlarını kabul edin

b174d45710b8086b.png

  1. Firebase Konsolu'nu kullanarak oluşturduğunuz spelling-practice-codelab yazın veya seçin. (Ad, dahili referansınız 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 Eylem oluşturmak istiyorsunuz? ekranında Özel kartı seçin.
  3. Sonrakine tıkla .
  4. Boş proje kartını seçin.
  5. Oluşturmaya başla'yı tıklayın.
  6. Görünen ad için Yazım Uygulaması'na girin ve kaydet'i tıklayın.

Kullanıcılar çağrı yoluyla Action'ınızla konuşmayı başlatır. Örneğin, kullanıcılar "Hey Google, Spelling Practice ile konuşun" gibi bir ifade söyleyerek İşleminizi başlatabilir; burada Spelling Practice görünen addır.

Üretime dağıtmak istiyorsanız İşleminizin bir görünen adı olmalıdır; ancak İşleminizi test etmek için görünen adı tanımlamanıza gerek yoktur. Bunun yerine, Eyleminizi başlatmak için simülatördeki "Test uygulamamla konuş" ifadesini kullanabilirsiniz.

Yerine getirmeyi yapılandır

Bu codelab'de daha önce yazdığınız ve dağıttığınız Bulut İşlevleri için olay işleyicilerini Asistan'a bağlamanız gerekir.

Karşılamanızı yapılandırmak için şu adımları izleyin:

  1. Yan gezinme panelinde Webhook'a tıklayın.
  2. Yerine getirme seçeneği olarak HTTPS uç noktasını seçin:

d523bf003e96e66f.png

  1. İşlevinizin uç noktasının URL'sini HTTP uç noktası metin kutusuna girin ve ardından Kaydet'i tıklayın.

be53e2cd0d914d54.png

Sonraki bölümde, Eylemler konsolundaki ana çağrınıza ilişkin istemi özelleştireceksiniz.

Ana çağrıyı ayarla

Bir kullanıcı Eyleminizi çağırdıktan sonra ne olacağını tanımlamak için ana çağrıyı düzenlemeniz gerekir.

Varsayılan olarak Actions Builder, çağrınız tetiklendiğinde genel bir bilgi istemi sağlar ( "Ana çağrıyı tanımlayarak Eyleminizi oluşturmaya başlayın.").

Action'ınızın kullanıcıya, Action'ınızı çağırdığında geri gönderdiği istemi değiştirmek için şu adımları izleyin:

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

9ff088c04c995cde.png

  1. Call your webhook işaretleyin ve metin kutusuna olay işleyicisi adını getSpellingWordList ekleyin.
  2. Kod düzenleyicide, speech alanındaki metni aşağıdaki karşılama mesajıyla değiştirin: Welcome to Spelling Practice

Not: İstemlerinizi düzenlemek için YAML veya JSON biçimlendirmesini kullanabilirsiniz.

  1. Kaydet'i tıklayın.

Simülatördeki ana çağrıyı test edin

Actions konsolu, Action'ınızı test etmek 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 Action'ınızla sanki bir Akıllı Ekranda, telefonda, hoparlörde veya KaiOS'ta çalışıyormuş gibi sohbet edebilirsiniz.

Eyleminizin ana çağrısını simülatörde test etmek için şu adımları izleyin:

  1. Simülatöre gitmek için üst gezinme çubuğunda Test Et'e tıklayın.
  2. Simülatörde Eyleminizi başlatmak için sol üstteki giriş alanına Konuşarak Talk to Spelling Practice yazın ve ardından klavyenizde Enter tuşuna basın.

651fc8da1ac9aa0a.png

Eyleminizin ana çağrısını tetiklediğinizde Asistan, özelleştirilmiş karşılama mesajınızla yanıt verir. Bu noktada Asistan'ın selamlamayla karşılık vermesiyle konuşma sona eriyor.

Olay günlüklerini görüntüle

Test sekmesinde olduğunuzda sağdaki panel, konuşma geçmişini olay günlükleri olarak görüntüleyen olay günlüklerini gösterir. Her olay günlüğü, görüşmenin o aşamasında meydana gelen olayları görüntüler. Olay günlüğünü görüntülemek için olayın önündeki gri simgeye tıklayın.

Action'ınızda şu anda hem kullanıcının girişini ( "Yazım Pratiğiyle Konuşun" ) hem de Action'ınızın yanıtını gösteren bir olay günlüğü var. Aşağıdaki ekran görüntüsü Action'ınızın olay günlüğünü gösterir:

a6fb192f94426824.png

11. Yazım Pratiği için sohbeti oluşturun

Artık bir kullanıcı Action'ınızı çağırdıktan sonra ne olacağını tanımladığınıza göre, Action'ınızın geri kalan konuşmasını oluşturabilirsiniz. Spelling Practice'in dört sahnesi vardır ve çalıştırılmadan önce her sahneyi etkinleştirmeniz gerekir. Bir sahneyi etkinleştirmenin en yaygın yolu, Eyleminizi, bir kullanıcı bir sahne içindeki kullanıcı amacıyla eşleştiğinde bu amacın başka bir sahneye geçişi tetikleyeceği ve onu etkinleştirecek şekilde yapılandırmaktır.

Ana çağrıdan başlangıç ​​sahnesine geçiş

Bu bölümde, kullanıcıya Yazım Alıştırması oynamaya başlamak isteyip istemediğini soran bir istem gönderen Start adında yeni bir sahne oluşturursunuz. Ayrıca ana çağrıdan yeni Start ​​sahnesine bir geçiş de eklersiniz.

Bu sahneyi oluşturmak ve ona bir geçiş eklemek için şu adımları izleyin:

  1. Üst gezinme bölümünde Geliştir'e tıklayın. Ardından sol gezinme bölmesinde Ana çağrıya tıklayın.
  2. Sağdaki Geçiş bölümünde açılır menüyü tıklayın ve ardından metin alanına Start yazın.

dd4f1807a57f794d.png

  1. Ekle'yi tıklayın. Bu, Start adında bir sahne oluşturur ve Action kullanıcıya hoş geldiniz istemini ilettikten sonra Action'a Start sahnesine geçmesini söyler.
  2. Sahnelerin listesini göstermek için sol gezinme bölmesinde Sahneler'i tıklayın.
  3. Start ​​sahnesini görmek için Sahneler altında Başlat'ı tıklayın.
  4. Start ​​sahnesinin Giriş bölümünde + öğesine tıklayın.
  5. İstem gönder'i seçin.
  6. speech alanındaki cümleyi ( Enter the response that users will see or hear... ) kullanıcıya soracağınız bir soruyla değiştirin: Use phonetic alphabet to spell the word. For example alpha for a, bravo for b, charlie for c etc. Do you want to continue?

Öneri çipleri, kullanıcıya, Eyleminizin kullanıcı girişi olarak işlediği tıklanabilir öneriler sunar. Bu bölümde, az önce yapılandırdığınız istemin altında görünen öneri çiplerini eklersiniz ( Do you want to play

Spelling Practice

? ) ekranlı cihazlarda kullanıcıları desteklemek için.

Start ​​sahnesinin istemine öneri çipleri eklemek için şu adımları izleyin:

  1. Start ​​sahnesinde, kod düzenleyicinin altındaki önerilere tıklayın. Bu eylem, tek bir öneri çipi ekler.
  2. title alanında Suggested Response '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 kod parçasına benzemelidir:
  4. Kaydet'i tıklayın.

5ff2ecdc56801b91.png

Eyleminizi simülatörde test edin

Bu noktada, Eyleminiz ana çağrıdan Başlat sahnesine geçmeli ve kullanıcıya devam etmek isteyip istemediğini sormalıdır. Simüle edilen ekranda öneri çipleri de görünmelidir.

Eyleminizi simülatörde test etmek için şu adımları izleyin:

  1. Gezinme çubuğunda sizi simülatöre götürmek için Test Et'e tıklayın.
  2. Eyleminizi simülatörde test etmek için Giriş alanına Talk to Spelling Practice yazın.
  3. Enter tuşuna basın . Eyleminiz Main invocation istemi ve eklenen Start ​​sahnesi istemiyle yanıt vermelidir : "Yazım Uygulaması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?" .

Aşağıdaki ekran görüntüsü bu etkileşimi göstermektedir:

338c9570b02a618e.png

  1. İsteme yanıt vermek için Yes veya No veya Help with Phonetics öneri çipine tıklayın. (Ayrıca "Evet" veya "Hayır" veya "Fonetik Yardımı" diyebilir veya Giriş alanına Yes veya No veya Help with Phonetics girebilirsiniz.)

İsteme yanıt verdiğinizde Action'ınız, girişinizi anlayamadığını belirten bir mesajla yanıt verir: "Üzgünüm, anlayamadım. Tekrar deneyebilir misiniz?" Eyleminizi henüz "Evet" veya "Hayır" girişini anlayacak ve yanıtlayacak şekilde yapılandırmadığınız için Eyleminiz, girişinizi NO_MATCH amacıyla eşleştirir.

Varsayılan olarak, NO_MATCH sistem amacı genel yanıtlar sağlar, ancak bu yanıtları, kullanıcıya girişini anlamadığınızı gösterecek ş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çları ekleyin

Artık kullanıcılar Action'ınızın sorduğu soruyu yanıtlayabildiğine göre, Action'ınızı kullanıcıların yanıtlarını anlayacak şekilde yapılandırabilirsiniz ( "Evet" veya "Hayır" veya "Fonetik Konusunda Yardım" ). Aşağıdaki bölümlerde, kullanıcı "Evet" veya "Hayır" ya da "Fonetik Konusunda Yardım" dediğinde eşleşen kullanıcı niyetleri oluşturacak ve bu niyetleri Start ​​sahnesine ekleyeceksiniz. Sistem niyetini kullanacağız yes ve başka niyetler yaratacağız.

no amaç yaratma

Artık kullanıcı oyunu oynamak istemediğinde onu anlamak ve ona yanıt vermek için no niyet yaratmamanız gerekiyor. Bu amacı oluşturmak için şu adımları izleyin:

  1. Gezinme bölümünde Geliştir'e tıklayın.
  2. Amaçların listesini açmak için gezinme bölümünde Özel Amaçlar'a tıklayın.
  3. Amaç listesinin sonundaki + (artı işareti) öğesine tıklayın. Yeni amaç no adlandırın ve Enter tuşuna basın.
  4. Niyet no sayfasını açmak için hayır'ı tıklayın.
  5. Eğitim cümleleri ekle bölümünde, İfade Girin metin kutusuna 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 ​​sahnesine amaç no

Artık Eylem, bir kullanıcının "hayır" veya "hayır " gibi "hayır" a benzer bir ifade ifade ettiğini anlayabilir. Kullanıcı Start istemine yanıt verdiğinden, Start sahnesine kullanıcı amacı no ifadesini eklemeniz gerekir (" Yazım Uygulamasına Hoş Geldiniz. Kelimeyi hecelemek için fonetik alfabeyi kullanın. Örneğin a için alpha, b için bravo, c için charlie vb. Devam etmek istiyor musunuz?" ).

Start ​​sahnesine bu amacı eklemek için şu adımları izleyin:

  1. Gezinme bölümünde Başlangıç ​​sahnesine tıklayın.
  2. Start ​​sahnesinde Kullanıcı amacı işleme'nin yanındaki + (artı) işaretine tıklayın.
  3. Niyet bölümünde açılır menüden hayır seçeneğini seçin.

51f752e78c8b4942.png

  1. İstem gönder'e tıklayın ve speech alanını şu metinle güncelleyin: Good Bye .

Editörünüzdeki kod aşağıdaki kod parçasına benzemelidir:

candidates:
  - first_simple:
      variants:
        - speech: >-
             Goodbye.
  1. Geçiş bölümünde açılır menüden Konuşmayı sonlandır'ı seçin.
  2. Kaydet'i tıklayın.

Simülatörde amaç no test edin

Bu noktada Action'ınız, kullanıcının oyunu oynamak istemediğini anlar ve uygun yanıtı verir.

Bu amacı simülatörde test etmek için şu adımları izleyin:

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

7727a456b522f31b.png

Start ​​sahnesine sistem YES amacını ekleyin

Şimdi, kullanıcı Başlat istemine evet yanıtı verdiğinden, Start ​​sahnesine SİSTEM niyetini "EVET" ekleyeceğiz (" Start Pratiğine Hoş Geldiniz. Kelimeyi hecelemek için fonetik alfabeyi kullanın. Örneğin a için alfa, bravo için bravo b, c için Charlie vb. Devam etmek istiyor musunuz?" ).

Bu kullanıcının amacını Start ​​sahnesine eklemek için şu adımları izleyin:

  1. Gezinme bölümünde Başlangıç ​​sahnesine tıklayın.
  2. Start ​​sahnesinde Kullanıcı amacı işleme seçeneğinin yanındaki + (artı) işaretini tıklayın.
  3. Tüm Sistem Amaçları altında, amaç açılır menüsünde EVET'i seçin.

f6cbe789cde49e8f.png

  1. Web kancanızı çağırın'a 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 Konuşmayı bitir ' i seçin.
  3. Kaydet'i tıklayın.

Simülatörde YES amacını test edin

Bu noktada Action'ınız kullanıcının oyunu oynamak istediğini anlar ve uygun yanıtı verir.

Bu amacı simülatörde test etmek için şu adımları izleyin:

  1. Gezinme çubuğunda Test'i tıklayın.
  2. Eyleminizi simülatörde test etmek için Giriş alanına Talk to Spelling Practice yazın ve Enter tuşuna basın.
  3. Giriş alanına Yes yazın ve Enter tuşuna basın. Alternatif olarak Yes öneri çipine tıklayın.

İşleminiz, tüm yazım alıştırması kelimelerinin bir 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 amacı oluşturun

Phonetics amacını oluşturmak için şu adımları izleyin:

  1. Gezinme bölümünde Geliştir'e tıklayın.
  2. Amaçların listesini açmak için gezinme bölümünde Özel Amaçlar'a tıklayın.
  3. Amaç listesinin sonundaki + (artı işareti) öğesine tıklayın. Yeni amaç phonetics adlandırın ve Enter tuşuna basın.
  4. phonetics amaç sayfasını açmak için phonetics amacı tıklayın.
  5. Eğitim cümleleri ekle bölümünde, İfade Girin metin kutusuna tıklayın ve aşağıdaki ifadeleri girin:
  • how do I spell words
  • phonetics
  • help me with phonetics
  • phonetic alphabet

1455bdfca8dae46.png

  1. Kaydet'i tıklayın.

Start ​​sahnesine phonetics amacı ekleme

Artık Eylem, bir kullanıcının "fonetik" amacını ifade ettiğini anlayabilir. Kullanıcı Start istemine yanıt verdiği için phonetics kullanıcı amacını Start ​​sahnesine ekleyebilirsiniz (" Yazım Uygulamasına Hoş Geldiniz. Kelimeyi hecelemek için fonetik alfabeyi kullanın. Örneğin a için alpha, b için bravo, c için charlie vb. Devam etmek istiyor musunuz?" ).

Bu kullanıcının amacını Start ​​sahnesine eklemek için şu adımları izleyin:

  1. Gezinme bölümünde Başlangıç ​​sahnesine tıklayın.
  2. Start ​​sahnesinde Kullanıcı amacı işleme'nin yanındaki + (artı) işaretine tıklayın.
  3. Amaç açılır menüsünden fonetiği seçin.

67ee2e08000b2aee.png

  1. Geçiş bölümünde açılır menüye tıklayın ve Konuşmayı sonlandır'ı seçin.
  2. Kaydet'i tıklayın.

Başlangıç ​​sahnesinden Yazım sahnesine geçiş

Bu bölümde, kullanıcıya sözcüğü fonetik alfabeyi kullanarak hecelemesi için bir istem gönderen Yazım Denetimi adlı yeni bir sahne oluşturursunuz.

Bu sahneyi oluşturmak ve ona bir geçiş eklemek için şu adımları izleyin:

  1. Üst gezinme bölümünde Geliştir'e tıklayın. Ardından sol gezinme bölmesinde Sahneyi başlat'a tıklayın.
  2. Kullanıcı amacı işleme bölümünde when actions.intent.YES is matched tıklayın ve geçiş bölümünde sağdaki açılır menüye 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 Eyleme, YES amacı ile eşleştirme sonrasında Spelling Sahnesine geçmesini söyler.
  4. Sahnelerin listesini göstermek için sol gezinme bölmesinde Sahneler'i genişletin.
  5. Spelling sahnesini görmek için Sahneler altında Yazım Denetimi'ni tıklayın.
  6. Spelling sahnesinin Giriş bölümünde + öğesine tıklayın.
  7. Web kancanızı arayın'a tıklayın ve olay işleyici metin kutusuna getSpellingWord yazın.
  8. İstem gönder'i seçin.
  9. speech alanındaki cümleyi ( Enter the response that users will see or hear... ) {} ile değiştirin. Gerçek bilgi istemi webhook tarafından doldurulacaktır.

Öneri çipleri, kullanıcıya, Eyleminizin kullanıcı girişi olarak işlediği tıklanabilir öneriler sunar.

Spelling denetimi sahnesinin istemine öneri çipleri eklemek için şu adımları izleyin:

  1. Spelling sahnesinde, kod düzenleyicinin altındaki önerilere tıklayın. Bu eylem üç öneri çipi ekler.
  2. title alanında Suggested Response '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 kod parçasına benzemelidir:
  5. Kaydet'i tıklayın.
suggestions:
      - title: 'Repeat'
      - title: 'Skip'
      - title: 'Quit'

e1d437f714ea1539.png

Repeat amacı oluştur

repeat amacını oluşturmak için şu adımları izleyin:

  1. Gezinme bölümünde Geliştir'e tıklayın.
  2. Amaçların listesini açmak için gezinme bölümünde Özel Amaçlar'a tıklayın.
  3. Amaç listesinin sonundaki + (artı işareti) öğesine tıklayın. Yeni amaç repeat bir ad verin ve Enter tuşuna basın.
  4. definition amacı sayfasını açmak için repeat amacına tıklayın.
  5. Eğitim cümleleri ekle bölümünde, İfade Girin metin kutusuna tıklayın ve aşağıdaki ifadeleri 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 sahnesine repeat amacı ekleyin

Artık Eylem, bir kullanıcının "tekrarlama" niyetini ifade ettiğini anlayabilir. Kullanıcı Spelling istemine yanıt verdiğinden (" Fonetik alfabeyi kullanarak sözcüğü yazın ") Spelling Denetimi sahnesine repeat kullanıcı amacını ekleyebilirsiniz.

Bu kullanıcının amacını Spelling sahnesine eklemek için şu adımları izleyin:

  1. Gezinme bölümünde Yazım denetimi sahnesini tıklayın.
  2. Spelling sahnesinde, Kullanıcı amacını işleme seçeneğinin yanındaki + (artı) işaretini tıklayın.
  3. Amaç açılır menüsünde tekrarlamayı seçin.

5cfd623b25bedbed.png

  1. Kelime tanımını almak için Web kancanızı arayın seçeneğini işaretleyin ve olay işleyici metin kutusuna Tekrarlanan Yazım Sözcüğü'nü girin.
  2. İstemleri gönder seçeneğini işaretleyin.
  3. speech alanındaki cümleyi ( Enter the response that users will see or hear... ) '' ile değiştirin. Gerçek bilgi istemi webhook tarafından doldurulacaktır.

"Tekrar eşleştiğinde" seçeneğine öneri çipleri ekleyin

  1. Kullanıcı Niyeti işleme altındaki " Tekrar eşleştiğinde " bölümünde, kod düzenleyicinin altındaki önerilere tıklayın. Bu eylem üç öneri çipi ekler.
  2. title alanında Suggested Response 'Skip' ile değiştirin.
  3. Aynı biçimlendirmeyi kullanarak 'Quit' başlıklı bir öneri çipini manuel olarak ekleyin. Kodunuz aşağıdaki kod parçasına benzemelidir:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

ab40e4b0c432b97c.png

  1. Kaydet'i tıklayın.

definition amacı oluştur

definition amacını oluşturmak için şu adımları izleyin:

  1. Gezinme bölümünde Geliştir'e tıklayın.
  2. Amaçların listesini açmak için gezinme bölümünde Özel Amaçlar'a tıklayın.
  3. Amaç listesinin sonundaki + (artı işareti) öğesine tıklayın. Yeni amaç definition bir ad verin ve Enter tuşuna basın.
  4. definition amacı sayfasını açmak için definition amacına tıklayın.
  5. Eğitim cümleleri ekle bölümünde, İfade Girin metin kutusuna tıklayın ve aşağıdaki ifadeleri 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 sahnesine definition amacı ekleme

Artık Eylem, bir kullanıcının "tanım" amacını ifade ettiğini anlayabilir. Kullanıcı Spelling istemine yanıt verdiğinden (" Fonetik alfabeyi kullanarak sözcüğü yazın ") Spelling sahnesine definition kullanıcı amacını ekleyebilirsiniz.

Bu kullanıcının amacını Spelling sahnesine eklemek için şu adımları izleyin:

  1. Navigasyondaki yazım sahnesini tıklayın.
  2. Kullanıcı niyetinin kullanımının yanındaki Spelling sahnesindeki + (artı işaret) tıklayın.
  3. Amaç açılır menüsünde tanımı seçin.

646bdcac3ad3eb0c.png

  1. Webhook'unuzu arayın ve kelime tanımını almak için olay işleyicisi metin kutusuna tanımlama sözcüğünü girin.
  2. Gönder istemelerini kontrol edin.
  3. speech alanındaki cümleyi değiştirin ( Enter the response that users will see or hear... ) '' 'ile. Gerçek istem WebHook tarafından doldurulacaktır.

Webhook yanıtına öneri çipleri ekleyin

  1. Start ​​sahnesinde, kod düzenleyicisinin altındaki önerileri tıklayın. Bu eylem üç öneri yongası ekler.
  2. title alanında, Suggested Response 'Skip' ile değiştirin.
  3. Aynı biçimlendirmeyi kullanarak, 'Quit' başlıklı bir öneri çipi ekleyin. Kodunuz aşağıdaki snippet'e benzemelidir:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

25227545839d933f.png

  1. Kaydet'i tıklayın.

skip Niyeti Oluştur

skip niyetini oluşturmak için şu adımları izleyin:

  1. Navigasyonda Geliştir'i tıklayın.
  2. Niyet listesini açmak için gezinme niyetini tıklayın.
  3. Niyet listesinin sonunda + (artı işaret) tıklayın. Yeni niyet skip atlayın ve Enter tuşuna basın.
  4. skip Niyeti sayfasını açmak için skip niyetini tıklayın.
  5. Eğitim İfadeleri Ekle bölümünde, İfade Metin Kutusu'nu tıklayın ve aşağıdaki ifadeleri girin:
  • next word
  • go next
  • next
  • skip
  • skip word

d1c4908a3d7882f8.png

  1. Kaydet'i tıklayın.

Spelling sahnesine atlama niyetini Skip

Şimdi, eylem bir kullanıcının "atlama" niyetini ifade ettiğinde anlayabilir. Kullanıcı Spelling istemine yanıt verdiğinden (" kelimeyi fonetik alfabe kullanarak heceleyin ") skip kullanıcı amacını Spelling sahnesine ekleyebilirsiniz.

Bu kullanıcı niyetini Spelling sahnesine eklemek için şu adımları izleyin:

  1. Navigasyondaki yazım sahnesini tıklayın.
  2. Kullanıcı Niyeti Handlin G'nin yanındaki Spelling sahnesindeki + (artı işaret) tıklayın.
  3. Amaç açılır durumunda Skip'i seçin.

5465f97542217964.png

  1. Sağdaki geçiş bölümünde açılır menüyü tıklayın ve Spelling seçin.

C8072485ca82bd3f.png

  1. Kaydet'i tıklayın.

quit niyeti yarat

Quit niyetini oluşturmak için şu adımları izleyin:

  1. Navigasyonda Geliştir'i tıklayın.
  2. Niyet listesini açmak için gezinme niyetini tıklayın.
  3. Niyet listesinin sonunda + (artı işaret) tıklayın. Yeni Quit adlandırın ve Enter tuşuna basın.
  4. Tanım Niyet sayfasını açmak için Quit Niyeti'ni tıklayın.
  5. Eğitim İfadeleri Ekle bölümünde, İfade Metin Kutusu'nu tıklayın ve aşağıdaki ifadeleri girin:
  • I quit
  • Goodbye
  • Cancel
  • Exit
  • Quit

9916F77B8766541E.PNG

  1. Kaydet'i tıklayın.

Spelling sahnesine Quit niyetini ekleyin

Şimdi, eylem bir kullanıcının "bırak" niyetini ifade ettiğinde anlayabilir. Kullanıcı Spelling istemine yanıt verdiğinden (" kelimeyi fonetik alfabe kullanarak heceleyin ") çünkü quit kullanıcı amacını Spelling sahnesine ekleyebilirsiniz.

Bu kullanıcı niyetini Spelling sahnesine eklemek için şu adımları izleyin:

  1. Navigasyondaki yazım sahnesini tıklayın.
  2. Kullanıcı niyetinin kullanımının yanındaki Spelling sahnesindeki + (artı işaret) tıklayın.
  3. Amaç açılır menüsünde çıkmayı seçin.

5f62fb18a3653d66.png

  1. Sağdaki geçiş bölümünde açılır menüyü tıklatın ve End conversation seçin. 1ffbe35a7bbbb4b0.png
  2. Kaydet'i tıklayın.

phonetic_alphabet Tipi Oluştur

Bu bölümde, kullanıcıların kelimeyi hecelemeyi seçebilecekleri fonetik alfabe seçeneklerini belirten phonetic_alphabet adlı yeni bir tür oluşturursunuz. Bir kullanıcının benzer bir şey söylemesi durumunda, bu seçenekler için birkaç eş anlamlılığı da tanımlayabilirsiniz. Daha sonraki bir bölümde, kullanıcının yanıtını almak istediğinizi belirtmek için bir yuvaya phonetic_alphabet türünü eklersiniz.

phonetic_alphabet türünü oluşturmak için şu adımları izleyin:

  1. Navigasyonda Geliştir'i tıklayın.
  2. Türlerin altındaki + (artı işaret) tıklayın.
  3. phonetic_alphabet yazın ve Enter tuşuna basın.
  4. Seçenekleri açmak için phonetic_alphabet tıklayın.
  5. Bu tür ne tür değerlerde desteklenecek? Bölüm, Kelimeler ve Eş anlamlılar seçeneğini seçin
  6. Girişler Ekle bölümüne aşağıdaki girişleri ve karşılık gelen değerleri girin:

A

Alpha, Apple, Amsterdam

B

Bravo, tereyağı, Baltimore

C

Charlie, Kedi, Kazablanka

D

Delta, köpek, Danimarka

e

Echo, Edward, Edison

F

Foxtrot, Fox, Florida

G

Golf, George, Gelibolu

H

Otel, Harry, Havana

Ben

Hindistan, Mürekkep, Italia

J

Juliette, Johnny, Kudüs

k

Kilo, kral, kilogram

ben

Lima, aşk, Londra

M

Mike, para, Madagaskar

N

Kasım, New York, Nancy

Ö

Oscar, Orange, Oslo

P

Papa, Paris, Peter

Q

Quebec, kraliçe

R

Romeo, Roma, Robert

S

Sierra, Şeker, Santiago

T

Tango, Tommy, Trablus

sen

üniforma, şemsiye, amca

v

Victor, Sirke, Valencia

w

Viski, William, Washington

X

röntgen

sen

Yankee, Sarı, Yorker

z

Zulu, Zebra, Zürih

Anahtar değer tablonuz aşağıdakilere benzemelidir:

5b5a5cd9fa557e1b.png

  1. Kaydet'i tıklayın.

Yuva doldurmayı yapılandırın

Ardından, yazım sahnesinde yuva dolgusunu yapılandırmanız gerekir. Yuva doldurma mantığını yapılandırmak için şu adımları izleyin:

  1. Navigasyondaki yazım sahnesini tıklayın.
  2. Yuva doldurma için Spelling sahnesindeki + (artı işaret) tıklayın.
  3. Yuva adı alanına girin , yuva adı olarak userresponse ekleyin.
  4. Türü seçme açılır menüsünde, yuva türü olarak Phonetic_alphabet'i seçin.
  5. Bu yuvanın bir değer listesini kabul ettiğini kontrol edin
  6. Bu yuvanın gerekli olduğunu kontrol edin.
  7. Slot değeri yazma seçeneğini özelleştir ve Oturum Parametresi TextBox'a UserResponse girmeyi seçin.

BA57A419877A07F3.PNG

  1. Kaydet'i tıklayın.

Spelling ekranına koşul ekle

Spelling sahnesine koşul eklemek için şu adımları izleyin:

  1. Navigasyondaki yazım sahnesini tıklayın.
  2. Koşulun yanındaki Spelling sahnesindeki + (artı işaret) tıklayın.
  3. scene.slots.status == "FINAL" in koşul olarak girin
  4. Kullanıcı yanıtını doğrulamak için WebHook'unuzu arayın ve etkinlik işleyicisi metin kutusuna VERIFYSPellingword girin.
  5. Gönder istemelerini kontrol edin.
  6. speech alanındaki cümleyi değiştirin ( Enter the response that users will see or hear... ) {} ile. Gerçek istem WebHook tarafından doldurulacaktır.

Webhook yanıtına öneri çipleri ekleyin

  1. Start ​​sahnesinde, kod düzenleyicisinin altındaki önerileri tıklayın. Bu eylem üç öneri yongası ekler.
  2. title alanında, Suggested Response 'Next' ile değiştirin.
  3. Aynı biçimlendirmeyi kullanarak, 'Quit' başlıklı bir öneri çipi ekleyin. Kodunuz aşağıdaki snippet'e benzemelidir:
suggestions:
      - title: 'Next'
      - title: 'Quit'

AC3D7A9366EBC1B1.PNG

  1. Kaydet'i tıklayın.

12. Simülatörde yazım pratiğini test edin

Eyleminizi simülatörde test etmek için şu adımları izleyin:

  1. Navigasyon çubuğunda, sizi simülatöre götürmek için test tıklayın.
  2. Eyleminizi simülatörde test etmek için, giriş alanındaki Talk to Spelling Practice konuşun.
  3. Enter tuşuna basın . Eyleminiz Main invocation istemi ve eklenen Start ​​sahnesi istemi ile yanıt vermelidir, "Yazım uygulamasına hoş geldiniz. Kelimeyi hecelemek için fonetik alfabeyi kullanın. Örneğin A için Alfa, B için Bravo, C Charlie için vb. devam etmek?" .
  4. Devam etmek için evet deyin
  5. Simülatör heceleyecek bir kelime sesi çalacak
  6. Kelimeyi fonetik alfabeler kullanarak heceleyebilirsiniz. Örneğin , "Bravo Echo Tango Tango Echo Romeo"
  7. Simülatör doğru veya yanlış yanıtla yanıt verecektir.
  8. Sonraki bir sonraki kelimeye devam etmek için söyleyin veya oyun döngüsünden çıkmayı bırakın .

13. Tebrikler

Tebrikler, oyununuzu, heceleme pratiğinizi başarıyla inşa ettiniz!

Artık Cloud Firestore, Cloud işlevleri ve Google Assistant Action Builder kullanarak bir oyun oluşturmak için gereken temel adımları biliyorsunuz.

Ne kapsadın

  • Cloud Firestore ile Nasıl Etkileşim Yapılır
  • Kullanıcıdan veri toplamak için yuvalar nasıl kullanılır
  • Bir kullanıcının girişi nasıl işlenir ve bir yanıt döndürür
  • 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 Assistant için eylemler oluşturma hakkında bilgi edinmek için bu kaynakları keşfedebilirsiniz:

Projenizi temizleyin [önerilir]

Olası suçlamalar yapmaktan kaçınmak için, kullanmak istemediğiniz projeleri kaldırmanız önerilir. Bu codelab'da oluşturduğunuz projeleri silmek için şu adımları izleyin:

  1. Firebase projenizi ve kaynaklarınızı silmek için kapatma (silme) projeleri bölümünde listelenen adımları tamamlayın.

DİKKAT: Google Cloud Console'ın Ayarları sayfasında silme için doğru projeyi seçtiğinizden emin olun.

  1. İsteğe bağlı: Projenizi hemen eylemler konsolundan kaldırmak için, bir proje 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.

En son duyurularımızı izlemeye devam etmek için Twitter'da @ActionSonsongoogle & @Firebase'i takip edin ve yaptıklarınızı paylaşmak için #Googleio'ya tweet atın!