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

1. Genel Bakış

Google Asistan geliştirici platformu, Google Asistan'ın işlevselliğini akıllı hoparlörler, telefonlar, arabalar, TV'ler ve kulaklıklar dahil olmak üzere 1 milyardan fazla cihazda genişletmek için yazılım oluşturmanıza olanak tanır. Kullanıcılar, alışveriş yapma veya araç rezervasyonu yapma gibi işlemleri gerçekleştirmek için Asistan ile etkileşime girer. Geliştirici olarak, kullanıcılar ile kendi üçüncü taraf karşılama hizmetiniz arasında keyifli ve etkili sohbet deneyimleri oluşturup yönetmek için Asistan geliştirici platformunu kolayca kullanabilirsiniz.

Bu codelab'de Google Asistan, Cloud Functions ve Cloud Firestore ile geliştirme yapmaya yönelik orta düzey kavramlar ele alınmaktadır. Bu codelab'de, kullanıcılardan kelimelerin yazımını istemek için Google Asistan'ı kullanan "Yazım Alıştırması" adlı bir oyun oluşturacaksınız.

Ne oluşturacaksınız?

Bu codelab'de, aşağıdaki işlevlere sahip gelişmiş bir oyun oluşturacaksınız:

  • Kullanıcıdan yazım yanıtları alır ve değere bağlı olarak sohbet istemlerini değiştirir.
  • Kelimenin tanımını yaparak veya kelimeyi tekrarlayarak kelimenin yazımıyla ilgili ipuçları veriyor.
  • Kullanıcının kelimeyi heceledikten sonra Asistan ile tekrar etkileşim kurabilmesi için oyun döngüsü oluşturur.

Geliştirmeye başlamadan önce "Ok Google, Spelling Practice ile konuş" diyerek Google Asistan özellikli cihazınızda canlı Action ile etkileşime geçebilirsiniz. Geri gelen bir kullanıcının bu işlemdeki varsayılan yolu aşağıdaki etkileşim gibi görünür:

Bu codelab'i tamamladığınızda, tamamlanan İşleminiz aşağıdaki sohbet akışına sahip olur:

2e9f94dc0ceafc96.png

Neler öğreneceksiniz?

  • Cloud Firestore ile etkileşim kurma
  • Kullanıcıdan veri toplamak için yuvaları kullanma
  • Kullanıcı girişini işleme ve yanıt döndürme
  • Bir sahneye mantık eklemek için koşulları kullanma
  • Oyun döngüsü ekleme

Gerekenler

Bu codelab'in ön koşulları şunlardır:

  • Google Chrome gibi bir web tarayıcısı
  • Cloud Functions işlevleri yazmak için bir IDE.
  • Bir ödeme yöntemi. Bu codelab'de, projenizin Firebase Blaze fiyatlandırma planında olmasını gerektiren Cloud Functions for Firebase kullanılmaktadır ( Daha fazla bilgi).
  • Kabuk komutlarını çalıştırmak için bir terminal
  • Node.js 10 veya sonraki sürümler

2. İşlev kodunu alma

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

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

3. Firebase projesi oluşturma ve uygulamanızı ayarlama

Firebase projesi oluşturma

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

66ae8d1894f4477.png

  1. Proje oluşturma seçeneklerini tıklayın. İstenirse Firebase şartlarını kabul edin. Bu uygulama için Analytics'i kullanmayacağınızdan Google Analytics'i ayarlamayı atlayın.

Firebase projeleri hakkında daha fazla bilgi edinmek için Firebase projelerini anlama başlıklı makaleyi inceleyin.

Blaze fiyatlandırma planına yükseltme

Cloud Functions for Firebase'i kullanmak için Firebase projenizi Blaze fiyatlandırma planına yükseltmeniz gerekir. Bu durumda, projenize bir Google Cloud Faturalandırma hesabı bağlarsınız. Bu işlem için kredi kartı veya başka bir ödeme yöntemi sağlamanız gerekir.

Blaze planındaki projeler de dahil olmak üzere tüm Firebase projeleri, Cloud Functions'ın ücretsiz kullanım kotalarına erişmeye devam edebilir. Bu codelab'de belirtilen adımlar, ücretsiz kullanım sınırları içinde yer alır. Ancak Cloud Functions derleme görüntülerinizi barındırmak için kullanılan Cloud Storage'dan küçük ücretler ( yaklaşık 0,03 ABD doları) alınır.

4. Firebase CLI'yı yükleme

Firebase CLI (komut satırı arayüzü), Cloud Functions'ınızı dağıtmanıza olanak tanır.

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

  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. Aşağıdaki komutu çalıştırarak CLI'nın doğru şekilde yüklendiğini doğrulayın:
$ firebase --version

Firebase CLI sürümünün 9.0.0 veya sonraki bir sürüm olduğundan emin olun. Böylece, Cloud Functions için gereken en yeni özelliklerin tümüne sahip olursunuz. Aksi takdirde, yukarıda gösterildiği gibi yükseltmek için npm install -g firebase-tools komutunu çalıştırın.

  1. Aşağıdaki komutu çalıştırarak Firebase CLI'yi yetkilendirin:
$ firebase login
  1. Spelling-functions-start dizininden Firebase projenizi kullanmak için Firebase CLI'yı ayarlayın. Aşağıdaki komutu çalıştırın, proje kimliğinizi seçin ve talimatları uygulayın. İstendiğinde, örneğin codelab gibi bir takma ad seçebilirsiniz.
$ firebase use --add

5. İşlevler dizini

Şimdi, Spelling Practice oyununun arka ucunu oluşturmak için Cloud Functions için Firebase SDK'yı kullanarak işlevsellik ekleyeceksiniz.

Cloud Functions, sunucu kurmanıza gerek kalmadan bulutta çalışan kodlara sahip olmanızı sağlar. Bu codelab'de, Firebase Authentication, Cloud Storage ve Firebase Realtime Database etkinliklerine tepki veren işlevleri nasıl oluşturacağınız gösterilecektir. İşe kimlik doğrulama ile başlayalım.

Cloud Functions için Firebase SDK'yı kullanırken işlevler kodunuz (varsayılan olarak) functions dizininde yer alır. İşinizi kolaylaştırmak için kodunuzun yerleştirileceği functions/index.js dosyasını sizin için oluşturduk. Devam etmeden önce functions dizinini inceleyebilirsiniz.

$ cd functions
$ ls

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

Node.js hakkında bilginiz yoksa codelab'e devam etmeden önce bu konuda daha fazla bilgi edinmeniz faydalı olacaktır.

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

$ npm install

Şimdi index.js dosyasına göz atalım:

index.js

/**
 * Copyright 2021 Google Inc. All Rights Reserved.
 * ...
 */
// TODO(DEVELOPER): Import the Cloud Functions for Firebase and Firebase Admin modules here. Also import the Actions SDK here.
// TODO(DEVELOPER): Write the getWordDetailsFromDictionaryAPI function here.
// TODO(DEVELOPER): Write the createSpellingPracticeWord function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle repeatSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle definitionOfSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle verifySpellingWord function here.

Önce gerekli modülleri içe aktaracak, ardından TODO'ların yerine dört işlev yazacaksınız. Modülleri içe aktarmak için codelab'in sonraki adımına geçin.

6. Gerekli modülleri içe aktarın

Bu codelab için üç modül gerekir.

  • firebase-functions modülü, Cloud Functions'ımız için tetikleyiciler yazmamıza olanak tanır.
  • firebase-admin modülü, Firebase platformunu yönetici erişimi olan bir sunucuda kullanmamıza (ör. Cloud Firestore'a yazmak için) olanak tanır.
  • Actions SDK Node.js Fulfillment Library, Google Asistan için Actions SDK işleyicilerini karşılar.
  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 Admin SDK, Cloud Functions ortamına veya başka bir Google Cloud kapsayıcısına dağıtıldığında otomatik olarak yapılandırılabilir. Aşağıdaki değişikliklerde admin.initializeApp(); olarak adlandırılan özellikler şunlardır:

index.js

/**
 * Copyright 2021 Google Inc. All Rights Reserved.
 * ...
 */

// Import the Actions SDK
const {conversation} = require('@assistant/conversation');
const https = require('https');
const app = conversation();
const cors = require('cors')({origin: true});

// Import the Firebase SDK for Cloud Functions.
const functions = require('firebase-functions');
// Import and initialize the Firebase Admin SDK.
const admin = require('firebase-admin');
admin.initializeApp();
// To access Cloud Firestore
const db = admin.firestore();
// TODO(DEVELOPER): Write the getWordDetailsFromDictionaryAPI function here.
// TODO(DEVELOPER): Write the createSpellingPracticeWord function here.
// TODO(DEVELOPER): Write the shuffleWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle repeatSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle definitionOfSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle verifySpellingWord function here.

Şimdi de Asistan İşlemleri'ni desteklemek için işlevleri kullanarak iş mantığı ekleyelim.

7. İşlevler oluşturma

Kelime tanımlarını alıp Cloud Firestore'a yazma

Kelime tanımlarını almak için dictionaryapi.dev herkese açık API'yi kullanacaksınız.

index.js dosyasında, getWordDetailsFromDictionaryAPI için yapılacaklar listesini aşağıdakilerle değiştirin:

index.js

// Retrieves word definition and audio pronunciation from api.dictionaryapi.dev service
// Function uses service provided by https://dictionaryapi.dev/
async function getWordDetailsFromDictionaryAPI(word) {
  let responseData="";
  let req = https.request({
    host: 'api.dictionaryapi.dev',
    port: 443,
    path:'/api/v2/entries/en/' + word,
    method:'GET'
  }, (res) => {
    res.setEncoding('utf8');
    res.on('data', d => {
        responseData+=d;
    })
    res.on('end',function(){
        let object = JSON.parse(responseData)
        const wordListRef = db.collection('wordlist');
        wordListRef.doc(object[0].word).set(
          object[0]
        );
       return responseData;
     });
  });
  req.end();
}

Cloud Firestore tetikleyicisi ekleme

Ardından, Cloud Firestore'da yeni bir doküman oluşturulduğunda tetiklenen bir Cloud Functions işlevi oluşturacaksınız. Hemen yukarıda yazdığımız getWordDetailsFromDictionaryAPI işlevi aracılığıyla kelime tanımlarını almak için dictionaryapi.dev API'sini çağırır.

index.js dosyasında, createSpellingPracticeWord için yapılacaklar listesini aşağıdakilerle değiştirin:

index.js

// Her yeni Firestore belgesi için getWordDetailsFromDictionaryAPI aracılığıyla kelime tanımlarını getiren Firestore tetikleyicisi

exports.createSpellingPracticeWord = functions.firestore
  .document('wordlist/{word}')
  .onCreate((snap, context) => {
    const newValue = snap.data();
    const word = newValue.word;
    getWordDetailsFromDictionaryAPI(word);
});

Oyun için kelime listesi alma

Asistan için Cloud Firestore'dan yazım alıştırması kelimelerinin listesini alan bir Cloud Function yazabilirsiniz. Bunun için uygulama işleyiciyi kullanırız.

index.js dosyasında, getSpellingWordList için yapılacaklar listesini aşağıdakilerle değiştirin.

Bu işlevi özel app.handle'ye eklemek, işlevi Asistan'dan erişilebilir hale getirmenin bir yoludur.

index.js

// Store the list of spelling words in Assistant session
app.handle('getSpellingWordList', conv => {
  const wordListRef = db.collection('wordlist').limit(50);
  const snapshot = wordListRef;

  if (snapshot.empty) {
    console.log('No matching documents.');
    return;
  }
  VocabularyList = []

  return snapshot.get().then(snapshot => {
    snapshot.forEach(doc => {
      if (doc.data().word) {
          let definition = 'unknown';
          let audio = 'unknown';
          try {
            if(doc.data().hasOwnProperty('meanings')) {
              if(doc.data().meanings[0].hasOwnProperty('definitions')) {
                  definition = doc.data().meanings[0].definitions[0].definition;
              }
            }
            if(doc.data().hasOwnProperty('phonetics')) {
              if(doc.data().phonetics.length > 0)
                audio = doc.data().phonetics[0].audio;
            }
          } catch (error) {
            console.log(error);
          }

          let obj = {
            word: doc.data().word,
            answer: doc.data().word.split("").join(" "),
            definition: definition,
            audio: audio
          }
          VocabularyList.push(obj);
      }
      // Shuffle the array
      let currentIndex = VocabularyList.length, temporaryValue, randomIndex;
      while (0 !== currentIndex) {
        randomIndex = Math.floor(Math.random() * currentIndex);
        currentIndex -= 1;
        temporaryValue = VocabularyList[currentIndex];
        VocabularyList[currentIndex] = VocabularyList[randomIndex];
        VocabularyList[randomIndex] = temporaryValue;
      }
      conv.session.params.vocabWord = VocabularyList;
      conv.session.params.vocabWordIndex = 0;
    });
  });
})

Asistan oturumundan kelime alma

Kelime listesindeki bir sonraki heceleme kelimesini döndüren bir Cloud Functions işlevi yazabilirsiniz.

index.js dosyasında, getSpellingWord için yapılacaklar listesini aşağıdakilerle değiştirin:

index.js

// Returns a spelling practice word to Google Assistant and uses Speech Synthesis Markup Language (SSML) to format the response
app.handle('getSpellingWord',  conv => {
  if (!conv.session.params.vocabWord.empty) {
    conv.session.params.vocabWordIndex+=1;
    const ssml = '<speak>' +
    '<audio src="'+ conv.session.params.vocabWord[conv.session.params.vocabWordIndex].audio +'">Use phonetics to spell the word.</audio> ' +
    '</speak>';
    conv.add(ssml);
  }
  else
    conv.add('Great job! You completed the Spelling practice');
});

Oyunun kelimeyi tekrar etmesini etkinleştirme

Oyun için mevcut kelimeyi tekrarlayan bir Cloud Functions işlevi yazabilirsiniz.

index.js dosyasında, repeatSpellingWord için yapılacaklar listesini aşağıdakilerle değiştirin:

index.js

// Returns current spelling word
app.handle('repeatSpellingWord',  conv => {
  if (!conv.session.params.vocabWord.empty) {
    const ssml = '<speak>' +
    '<audio src="'+ conv.session.params.vocabWord[conv.session.params.vocabWordIndex].audio +'">Use phonetics to spell the word. </audio> ' +
    '</speak>';
    conv.add(ssml);
  }
  else
    conv.add('Great job! You completed the Spelling practice');
});

Kelimenin tanımını öğrenme

Oyun için mevcut kelimenin tanımını sağlayan bir Cloud Functions işlevi yazabilirsiniz.

index.js dosyasında, definitionOfSpellingWord için yapılacaklar listesini aşağıdakilerle değiştirin:

index.js

// Returns spelling word definition from Assistant session parameter
app.handle('definitionOfSpellingWord',  conv => {
  conv.add( 'It means ' + conv.session.params.vocabWord[conv.session.params.vocabWordIndex].definition);
});

Kullanıcının yazım yanıtını kontrol etme

Kullanıcının, oyundaki mevcut kelimenin nasıl yazılacağıyla ilgili yanıtını doğrulayan bir Cloud Functions işlevi yazabilirsiniz.

index.js dosyasında, verifySpellingWord için yapılacaklar listesini aşağıdakilerle değiştirin:

index.js

// Verifies user spelling response
app.handle('verifySpellingWord', conv => {
  try {
    userResponse = conv.intent.params.userresponse.resolved.join("");
    if (userResponse.toLowerCase() === conv.session.params.vocabWord[conv.session.params.vocabWordIndex].word.toLowerCase()) {
      conv.add('You are correct. Say next to continue.');
    }
    else {
      conv.add('Sorry, wrong answer. The correct answer is ' + conv.session.params.vocabWord[conv.session.params.vocabWordIndex].answer + ' . Say next to continue.');
    }
  } catch (error) {
    conv.add('Sorry. I did not understand your response' );
  }
});
exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);

Tüm işlevlerinizi dağıtma

Cloud Functions işlevleriniz yalnızca Firebase'e dağıttıktan sonra etkin olur.

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

$ firebase deploy --only functions

Görmeniz gereken konsol çıkışı şudur:

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
⚠  functions: missing necessary APIs. Enabling now...
i  env: ensuring necessary APIs are enabled...
⚠  env: missing necessary APIs. Enabling now...
i  functions: waiting for APIs to activate...
i  env: waiting for APIs to activate...
✔  env: all necessary APIs are enabled
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (X.XX KB) for uploading
✔  functions: functions folder uploaded successfully
i  starting release process (may take several minutes)...
i  functions: creating function createSpellingPracticeWord(us-central1)...
✔  functions[createSpellingPracticeWord(us-central1)]: Successful create operation.
i  functions: creating function ActionsOnGoogleFulfillment(us-central1)...
✔  functions[ActionsOnGoogleFulfillment(us-central1)]: Successful create operation.

✔  Deploy complete!
Project Console: https://console.firebase.google.com/project/spelling-practice-1234/overview

Daha sonra kullanmak üzere ActionsOnGoogleFulfillment işlevinin HTTP uç nokta URL'sini not edin. Uç noktayı almak için Firebase Console'u açın ve spelling-practice projesini tıklayın. İşlevler uç noktasını görüntülemek için İşlevler kontrol panelini açın.

332cb0437411a242.png

Gerekli tüm işlevleri ekleme işlemini tamamladınız. Şimdi Cloud Firestore'u ayarlamaya geçelim.

8. Cloud Firestore'u etkinleştirin

Cloud Firestore'u etkinleştirmeniz gerekir.

Firebase konsolunun Build (Oluştur) bölümünde Firestore'u tıklayın. Ardından Veritabanı oluştur'u tıklayın.

5c0b4abf4410ffcf.png

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

Aşağıdaki kurallar, veri erişimini oturum açmış kullanıcılarla sınırlandırır. Bu sayede, kimliği doğrulanmamış kullanıcıların okuma veya yazma işlemleri yapması engellenir.

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      //
      // WARNING: These rules are insecure! We will replace them with
      // more secure rules later in the codelab
      //
      allow read, write: if request.auth != null;
    }
  }
}

9. Cloud Firestore'a yazım sözcükleri verileri ekleme

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

Cloud Firestore verileri koleksiyonlar, belgeler, alanlar ve alt koleksiyonlar halinde yapılandırılır. Oyundaki her kelime, wordlist adlı üst düzey koleksiyonda kendi dokümanı olarak saklanır. Firestore koleksiyonundaki her yeni doküman için Dictionary API hizmetinden kelime ayrıntılarını almak üzere createSpellingPracticeWord işlevi tetiklenir.

Cloud Firestore koleksiyonu oluşturma

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

1b4ccadb90f52f02.png

Ardından, sözleşme kelimesi için bir doküman oluşturacağız.

  1. Document ID (Doküman Kimliği) metin kutusuna agreement girin.
  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 belge oluşturarak daha fazla kelime ekleyin (örneğin: hayranlık, araba, doğru, söyle, daha iyi, işe gitmek, ...).

10. Google Asistan'ı kurma

Aşağıdaki bölümlerde, Google Asistan geliştirme ortamınızı nasıl ayarlayacağınız ve İşlemler projenizi nasıl oluşturacağınız açıklanmaktadır.

Google izin ayarlarınızı kontrol etme

Bu codelab'de oluşturduğunuz işlemi test etmek için simülatörün işleminize erişebilmesi için gerekli izinleri etkinleştirmeniz gerekir. İzinleri etkinleştirmek için aşağıdaki adımları uygulayın:

  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, Action'ınız için bir kapsayıcıdır. Bu codelab için Actions projenizi oluşturmak üzere aşağıdaki adımları uygulayın:

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

b174d45710b8086b.png

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

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 olarak Yazım Alıştırması'nı girin ve kaydet'i tıklayın.

Kullanıcılar, çağırma yoluyla İşleminizle sohbet başlatır. Örneğin, kullanıcılar "Ok Google, Spelling Practice ile konuş" gibi bir ifade söyleyerek İşleminizi çağırabilir. Burada Spelling Practice, görünen addır.

İşleminizi üretime dağıtmak istiyorsanız işleminizin bir görünen adı olmalıdır. Ancak İşleminizi test etmek için görünen adı tanımlamanız gerekmez. Bunun yerine, İşleminizi çağırmak için simülatörde "Test uygulamamla konuş" ifadesini kullanabilirsiniz.

İstek karşılamayı yapılandırın

Bu codelab'de daha önce yazdığınız ve dağıttığınız Cloud Functions'ın etkinlik işleyicilerini Asistan'a bağlamanız gerekir.

Yerine getirme ayarlarınızı yapılandırmak için aşağıdaki adımları uygulayın:

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

d523bf003e96e66f.png

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

be53e2cd0d914d54.png

Sonraki bölümde, İşlemler Konsolu'nda ana çağırma işleminizin istemini özelleştireceksiniz.

Ana çağırma ifadesini ayarlama

Kullanıcı, İşleminizi çağırdıktan sonra ne olacağını tanımlamak için ana çağırmayı düzenlemeniz gerekir.

Actions Builder, varsayılan olarak çağırma işleminiz tetiklendiğinde genel bir istem sağlar ("Ana çağırmayı tanımlayarak İşleminizi oluşturmaya başlayın.").

İşleminiz çağrıldığında İşleminizin kullanıcıya geri gönderdiği istemi değiştirmek için aşağıdaki adımları uygulayın:

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

9ff088c04c995cde.png

  1. Call your webhook seçeneğini işaretleyin ve metin kutusuna etkinlik işleyici 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.

Ana çağırmayı simülatörde test etme

Actions Console, İşleminizi test etmek için simülatör adlı bir web aracı sunar. Arayüz, donanım cihazlarını ve ayarlarını simüle eder. Böylece, Akıllı Ekran, telefon, hoparlör veya KaiOS'te çalışıyormuş gibi İşleminizle etkileşimde bulunabilirsiniz.

İşleminizin ana çağırma ifadesini simülatörde test etmek için aşağıdaki adımları uygulayın:

  1. Simülatöre gitmek için üst gezinme çubuğunda Test'i tıklayın.
  2. İşleminizi simülatörde çağırmak için sol üstteki giriş alanına Talk to Spelling Practice yazın ve klavyenizde Enter tuşuna basın.

651fc8da1ac9aa0a.png

İşleminizin ana çağırma ifadesini tetiklediğinizde Asistan, özelleştirilmiş karşılama mesajınızla yanıt verir. Bu noktada, Asistan karşılama mesajıyla yanıt verdikten sonra görüşme sona erer.

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

Test sekmesindeyken sağdaki panelde, görüşme geçmişini etkinlik günlükleri olarak gösteren etkinlik günlükleri yer alır. Her etkinlik günlüğünde, görüşmenin o dönüşünde gerçekleşen etkinlikler gösterilir. Etkinlik günlüğünü görüntülemek için etkinliğin önündeki gri simgeyi tıklayın.

İşleminizde şu anda hem kullanıcının girişini ("Talk to Spelling Practice") hem de İşleminizin yanıtını gösteren bir etkinlik günlüğü var. Aşağıdaki ekran görüntüsünde İşleminizin etkinlik günlüğü gösterilmektedir:

a6fb192f94426824.png

11. Yazım alıştırması için görüşme oluşturma

Kullanıcılar İşleminizi çağırdıktan sonra ne olacağını tanımladığınıza göre, İşleminizin görüşmesinin geri kalanını oluşturabilirsiniz. Yazım Alıştırması dört sahneden oluşur ve çalıştırılabilmesi için her sahneyi etkinleştirmeniz gerekir. Bir sahneyi etkinleştirmenin en yaygın yolu, İşleminizi bir kullanıcı bir sahnedeki kullanıcı amacına uygun şekilde yapılandırmaktır. Bu durumda, amaç başka bir sahneye geçişi tetikler ve bu sahneyi etkinleştirir.

Ana çağırmadan başlangıç sahnesine geçiş

Bu bölümde, Start adlı yeni bir sahne oluşturursunuz. Bu sahne, kullanıcıya Yazım Alıştırması'nı oynamaya başlamak isteyip istemediğini soran bir istem gönderir. Ayrıca, ana çağırmadan yeni Start sahnesine bir geçiş ekleyin.

Bu sahneyi oluşturmak ve sahneye geçiş eklemek için aşağıdaki adımları uygulayın:

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

dd4f1807a57f794d.png

  1. Ekle'yi tıklayın. Bu işlem, Start adlı bir sahne oluşturur ve İşleme, kullanıcıya karşılama istemini sunduktan sonra Start sahnesine geçmesini söyler.
  2. Sahne listesini göstermek için soldaki gezinme panelinde 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 On enter (Girişte) bölümünde + simgesini tıklayın.
  5. İstemleri gönder'i seçin.
  6. speech alanındaki cümleyi (Enter the response that users will see or hear...) kullanıcıya sorulacak bir soruyla değiştirin: Use phonetic alphabet to spell the word. For example alpha for a, bravo for b, charlie for c etc. Do you want to continue?

Öneri çipleri, kullanıcının tıklayabileceği ve İşleminizin kullanıcı girişi olarak işleyeceği öneriler sunar. Bu bölümde, az önce yapılandırdığınız istemin altında görünen öneri çipleri ekleyebilirsiniz (Do you want to play

Spelling Practice

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

Start sahnesinin istemine öneri çipleri eklemek için aşağıdaki adımları uygulayın:

  1. Start sahnesinde, kod düzenleyicinin altındaki önerileri tıklayın. Bu işlemle tek bir öneri çipi eklenir.
  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'e benzemelidir:
  4. Kaydet'i tıklayın.

5ff2ecdc56801b91.png

İşleminizi simülatörde test etme

Bu noktada, İşleminiz ana çağırmadan Başlat sahnesine geçiş yapmalı ve kullanıcıya devam etmek isteyip istemediğini sormalıdır. Öneri çipleri, simüle edilmiş ekranda da görünmelidir.

İşleminizi simülatörde test etmek için aşağıdaki adımları uygulayın:

  1. Simülasyon aracına gitmek için gezinme çubuğunda Test'i tıklayın.
  2. İşleminizi simülatörde 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. ("Evet" veya "Hayır" ya da "Fonetikle ilgili yardım" da diyebilir veya Giriş alanına Yes, No ya da Help with Phonetics girebilirsiniz.)

İsteme yanıt verdiğinizde İşleminiz, girişinizi anlayamadığını belirten bir mesajla yanıt veriyor: "Üzgünüm, anlayamadım. Tekrar deneyebilir misiniz?" İşleminizi henüz "Evet" veya "Hayır" girişini anlayıp yanıtlayacak şekilde yapılandırmadığınız için İşleminiz, girişinizi NO_MATCH niyetiyle eşleştiriyor.

NO_MATCH sistem amacı, varsayılan olarak genel yanıtlar sağlar ancak bu yanıtları özelleştirerek kullanıcının girişini anlamadığınızı belirtebilirsiniz. Asistan, kullanıcı girişini üç kez eşleştiremediğinde kullanıcının İşleminizle olan görüşmesini sonlandırır.

Hayır ve fonetik telaffuz amaçları ekleme

Kullanıcılar artık İşleminizin sorduğu soruya yanıt verebildiğinden İşleminizi, kullanıcıların yanıtlarını ("Evet", "Hayır" veya "Fonetikle İlgili Yardım") anlayacak şekilde yapılandırabilirsiniz. Aşağıdaki bölümlerde, kullanıcı "Evet" veya "Hayır" ya da "Fonetikle ilgili yardım" dediğinde eşleşen kullanıcı amaçları oluşturacak ve bu amaçları Start sahnesine ekleyeceksiniz. Sistem amacını yes kullanırız ve başka amaçlar oluştururuz.

no amacı oluşturma

Şimdi, kullanıcı oyunu oynamak istemediğinde onu anlamak ve yanıt vermek için no niyetini oluşturmanız gerekiyor. Bu amacı oluşturmak için aşağıdaki adımları uygulayın:

  1. Gezinme menüsünde Geliştir'i tıklayın.
  2. Amaç listesini açmak için gezinme bölümünde Özel Amaçlar'ı tıklayın.
  3. Niyet listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amaca no ad verin ve Enter tuşuna basın.
  4. no amaç sayfasını açmak için hayır'ı tıklayın.
  5. Eğitim ifadeleri ekle bölümünde, İfade 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 sahnesine no amacı ekle

Artık İşlem, kullanıcının "hayır" veya "hayır"'a benzer bir ifade (ör. "yok") kullandığını anlayabilir. Kullanıcı, Start istemine ("Yazım Alıştırması'na hoş geldiniz.noStart Kelimeyi hecelemek için fonetik alfabeyi kullanın. Örneğin, a için alfa, b için bravo, c için charlie vb. Devam etmek istiyor musunuz?").

Start sahnesi için bu amacı eklemek üzere aşağıdaki adımları uygulayın:

  1. Gezinme bölümünde Başlangıç sahnesini tıklayın.
  2. Kullanıcı amacını işleme'nin yanındaki Start sahnesinde + (artı işareti) simgesini tıklayın.
  3. Amaç bölümündeki açılır listeden hayır'ı seçin.

51f752e78c8b4942.png

  1. İstemleri gönder'i tıklayın ve speech alanını aşağıdaki metinle güncelleyin: Good Bye.

Düzenleyicinizdeki kod aşağıdaki snippet'e benzemelidir:

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

Simülatörde no amacını test etme

Bu noktada, İşleminiz kullanıcının oyunu oynamak istemediğini anlar ve uygun yanıtı döndürür.

Bu amacı simülatörde test etmek için aşağıdaki adımları uygulayın:

  1. Gezinme çubuğunda Test'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ıp Enter tuşuna basın. Alternatif olarak, Öneri yok çipini tıklayın.

7727a456b522f31b.png

YES sistem niyetini Start sahnesine ekle

Şimdi, kullanıcı Start istemine olumlu yanıt verdiği için Start sahnesine SYSTEM amacını "YES" olarak ekleyeceğiz ("Yazım Alıştırması'na hoş geldiniz. Kelimeyi hecelemek için fonetik alfabeyi kullanın. Örneğin, a için alfa, b için bravo, c için charlie vb. Devam etmek istiyor musunuz?").

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

  1. Gezinme bölümünde Başlangıç sahnesini tıklayın.
  2. Start sahnesinde Kullanıcı amacını işleme'nin yanındaki + (artı işareti) seçeneğini tıklayın.
  3. Tüm Sistem Amaçları bölümünde, amaç açılır listesinde 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 Sohbeti sonlandır'ı seçin.
  3. Kaydet'i tıklayın.

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

Bu noktada, işleminiz kullanıcının oyunu oynamak istediğini anlar ve uygun yanıtı döndürür.

Bu amacı simülatörde test etmek için aşağıdaki adımları uygulayın:

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

İşleminiz, tüm yazım alıştırması kelimelerinin listesini getirir ve bunları oturumda saklar. Ardından, YES amacı için End conversation geçişini seçtiğinizden oturum sona erer.

Phonetics amacı oluşturma

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

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

1455bdfca8dae46.png

  1. Kaydet'i tıklayın.

Start sahnesine phonetics amacı ekle

Artık İşlem, kullanıcının "fonetik" amaçlı bir ifade kullandığını anlayabiliyor. Kullanıcı, Start istemine ("Yazım Alıştırması'na hoş geldiniz.phoneticsStart Kelimeyi hecelemek için fonetik alfabeyi kullanın. Örneğin, a için alfa, b için bravo, c için charlie vb. Devam etmek istiyor musunuz?").

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

  1. Gezinme bölümünde Başlangıç sahnesini tıklayın.
  2. Kullanıcı amacını işleme'nin yanındaki Start sahnesinde + (artı işareti) simgesini tıklayın.
  3. Amaç açılır listesinde fonetik'i seçin.

67ee2e08000b2aee.png

  1. Geçiş bölümünde açılır menüyü tıklayın ve Sohbeti 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 fonetik alfabeyi kullanarak kelimeyi heceleme istemi gönderen Spelling (Yazım) adlı yeni bir sahne oluşturursunuz.

Bu sahneyi oluşturmak ve sahneye geçiş eklemek için aşağıdaki adımları uygulayın:

  1. Üst gezinme menüsünde Geliştir'i tıklayın. Ardından, soldaki gezinme panelinde Sahneyi başlat'ı tıklayın.
  2. Kullanıcı amacını işleme bölümünde when actions.intent.YES is matched simgesini tıklayın ve sağdaki geçiş bölümünde açılır menüyü tıklayıp metin alanına Spelling yazın.
  3. Ekle'yi tıklayın. Bu işlem, Spelling adlı bir sahne oluşturur ve YES niyetiyle eşleşme gerçekleştikten sonra İşlem'e Spelling sahnesine geçmesini söyler.
  4. Sahne listesini göstermek için soldaki gezinme menüsünde Sahneler'i genişletin.
  5. Sahneler bölümünde, Spelling sahnesini görmek için Yazım'ı tıklayın.
  6. Spelling sahnesinin On enter (Girişte) bölümünde + simgesini tıklayın.
  7. Webhook'unuzu çağırı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ümlesini {} ile değiştirin. Gerçek istem, webhook tarafından doldurulur.

Öneri çipleri, kullanıcının tıklayabileceği ve İşleminizin kullanıcı girişi olarak işleyeceği öneriler sunar.

Spelling sahnesinin istemine öneri çipleri eklemek için aşağıdaki adımları uygulayın:

  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'e benzemelidir:
  5. Kaydet'i tıklayın.
suggestions:
      - title: 'Repeat'
      - title: 'Skip'
      - title: 'Quit'

e1d437f714ea1539.png

Repeat amacı oluşturma

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ç listesini açmak için gezinme bölümünde Özel Amaçlar'ı tıklayın.
  3. Niyet listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amaca repeat adını verin ve Enter tuşuna basın.
  4. definition amaç sayfasını açmak için repeat amacını tıklayın.
  5. Eğitim ifadeleri ekle bölümünde İfade Girin metin kutusunu 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ı ekle

Artık işlem, kullanıcının "tekrar et" niyetini ifade ettiğini anlayabiliyor. Kullanıcı, Spelling istemine ("Kelimeleri fonetik alfabeyi kullanarak heceleyin") yanıt verdiğinden repeat kullanıcı amacını Spelling sahnesine ekleyebilirsiniz.

Bu kullanıcı amacını Spelling sahnesine eklemek için aşağıdaki adımları uygulayın:

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

5cfd623b25bedbed.png

  1. Webhook'unuzu çağırın'ı işaretleyin ve kelime tanımını almak 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. Gerçek istem webhook tarafından doldurulur.

"Tekrar eşleştiğinde" bölümüne öneri çipleri ekleme

  1. Kullanıcı amacını işleme bölümündeki "Tekrar eşleştiğinde" altında, kod düzenleyicinin altındaki öneriler'i tıklayın. Bu işlem üç öneri çipi ekler.
  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'e benzemelidir:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

ab40e4b0c432b97c.png

  1. Kaydet'i tıklayın.

definition amacı oluşturma

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ç listesini açmak için gezinme bölümünde Özel Amaçlar'ı tıklayın.
  3. Niyet listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amaca definition adını verin ve Enter tuşuna basın.
  4. definition amaç sayfasını açmak için definition amacını tıklayın.
  5. Eğitim ifadeleri ekle bölümünde İfade Girin metin kutusunu tıklayın ve aşağıdaki ifadeleri girin:
  • I would like to know the 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ı ekle

Artık İşlem, kullanıcının "tanım" amacını ifade ettiğini anlayabiliyor. Kullanıcı, Spelling istemine ("Kelimeleri fonetik alfabeyi kullanarak heceleyin") yanıt verdiğinden definition kullanıcı amacını Spelling sahnesine ekleyebilirsiniz.

Bu kullanıcı amacını Spelling sahnesine eklemek için aşağıdaki adımları uygulayın:

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

646bdcac3ad3eb0c.png

  1. Webhook'unuzu çağırın'ı işaretleyin ve kelime tanımını almak için etkinlik işleyici metin kutusuna definitionOfSpellingWord yazın.
  2. İstemleri gönder'i işaretleyin.
  3. speech alanındaki cümleyi (Enter the response that users will see or hear...) ‘‘` ile değiştirin. Gerçek istem, webhook tarafından doldurulur.

Webhook yanıtına öneri çipleri ekleme

  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'e benzemelidir:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

25227545839d933f.png

  1. Kaydet'i tıklayın.

skip amacı oluşturma

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 listesini açmak için gezinme bölümünde Amaçlar'ı tıklayın.
  3. Niyet listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amaca skip adını verin ve Enter tuşuna basın.
  4. skip amaç sayfasını açmak için skip amacını tıklayın.
  5. Eğitim ifadeleri ekle bölümünde İfade Girin metin kutusunu 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 Skip amacı ekle

Artık işlem, kullanıcının "atlama" niyetini ifade ettiğini anlayabiliyor. Kullanıcı, Spelling istemine ("Kelimeleri fonetik alfabeyi kullanarak heceleyin") yanıt verdiğinden skip kullanıcı amacını Spelling sahnesine ekleyebilirsiniz.

Bu kullanıcı amacını Spelling sahnesine eklemek için aşağıdaki adımları uygulayın:

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

5465f97542217964.png

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

c8072485ca82bd3f.png

  1. Kaydet'i tıklayın.

quit amacı oluşturma

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 listesini açmak için gezinme bölümünde Amaçlar'ı tıklayın.
  3. Niyet listesinin sonundaki + (artı işareti) simgesini tıklayın. Yeni amaca Quit adını verin ve Enter tuşuna basın.
  4. Quit amacını tıklayarak tanım amacının sayfasını açın.
  5. Eğitim ifadeleri ekle bölümünde İfade Girin metin kutusunu 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 amacı ekle

Artık İşlem, kullanıcının "çıkma" amacını ifade ettiğini anlayabiliyor. Kullanıcı, Spelling istemine ("Kelimeleri fonetik alfabeyi kullanarak heceleyin") yanıt verdiğinden quit kullanıcı amacını Spelling sahnesine ekleyebilirsiniz.

Bu kullanıcı amacını Spelling sahnesine eklemek için aşağıdaki adımları uygulayın:

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

5f62fb18a3653d66.png

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

phonetic_alphabet türü oluşturma

Bu bölümde, kullanıcıların kelimeyi hecelemek için seçebileceği fonetik alfabe seçeneklerini belirten phonetic_alphabet adlı yeni bir tür oluşturursunuz. Kullanıcıların benzer ifadeler kullanması ihtimaline karşı bu seçenekler için birkaç eş anlamlı kelime de tanımlayabilirsiniz. Daha sonraki bir bölümde, kullanıcının yanıtını almak istediğinizi belirtmek için bir yuvaya phonetic_alphabet türünü eklersiniz.

phonetic_alphabet türünü oluşturmak için aşağıdaki adımları uygulayın:

  1. Gezinme menüsünde Geliştir'i tıklayın.
  2. Türler bölümünde + (artı işareti) simgesini 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 hangi değerleri destekleyecek? bölümünde Kelimeler ve eş anlamlılar seçeneğini belirleyin.
  6. Giriş ekle bölümüne aşağıdaki girişleri ve karşılık gelen değerleri girin:

a

alfa, apple, amsterdam

b

bravo, butter, baltimore

c

charlie, cat, casablanca

d

delta, dog, denmark

e

echo, edward, edison

f

foxtrot, fox, florida (fokstrot, tilki, florida)

g

golf, george, gallipoli

sa

hotel, harry, havana

i

india, ink, italia

j

juliette, johnny, jerusalem

k

kilo, king, kilogramme

l

lima, love, london

dk

mike, money, madagascar

n

kasım, new york, nancy

o

oscar, orange, oslo

p

papa, paris, peter

q

quebec, queen

r

romeo, roma, robert

sn

sierra, sugar, santiago

t

tango, tommy, tripoli

u

uniform, umbrella, uncle (üniforma, şemsiye, amca)

v

victor, vinegar, Valencia

w

whiskey, william, washington

x

x-ray

y

yankee, yellow, yorker

z

zulu, zebra, zurich

Anahtar-değer tablonuz aşağıdaki gibi görünmelidir:

5b5a5cd9fa557e1b.png

  1. Kaydet'i tıklayın.

Alan doldurmayı yapılandırma

Ardından, Spelling sahnesinde yuva doldurmayı yapılandırmanız gerekir. Boşluk doldurma mantığını yapılandırmak için aşağıdaki adımları uygulayın:

  1. Gezinme bölümünde Yazım sahnesini tıklayın.
  2. Spelling sahnesinde Slot doldurma için + (artı işareti) simgesini tıklayın.
  3. Enter slot name (Yuva adını girin) alanına yuva adı olarak userresponse ekleyin.
  4. Select type (Tür seçin) açılır listesinde, yuva türü olarak phonetic_alphabet'i (fonetik alfabe) seçin.
  5. Bu alan, değer listesini kabul eder seçeneğini işaretleyin.
  6. Bu yer zorunludur'u işaretleyin.
  7. Yuva değeri geri yazma işlemini özelleştir seçeneğini belirleyin ve oturum parametresi metin kutusuna userresponse değerini girin.

ba57a419877a07f3.png

  1. Kaydet'i tıklayın.

Spelling ekranına koşul ekleme

Spelling sahnesine koşul eklemek için aşağıdaki adımları uygulayın:

  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 çağırı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. speechalanındaki (Enter the response that users will see or hear...) cümleyi {} ile değiştirin. Gerçek istem, webhook tarafından doldurulur.

Webhook yanıtına öneri çipleri ekleme

  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'e benzemelidir:
suggestions:
      - title: 'Next'
      - title: 'Quit'

ac3d7a9366ebc1b1.png

  1. Kaydet'i tıklayın.

12. Yazım Alıştırması'nı simülatörde test etme

İşleminizi simülatörde test etmek için aşağıdaki adımları uygulayın:

  1. Simülasyon aracına gitmek için gezinme çubuğunda Test'i tıklayın.
  2. İşleminizi simülatörde 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ülasyon aracı, hecelemek için kelime sesi çalacak
  6. Kelimeyi fonetik alfabelerle heceleyebilirsiniz. Örneğin, better (daha iyi) için "bravo echo tango tango echo romeo" deyin veya yazın.
  7. Simülatör, doğru veya yanlış yanıtı verir.
  8. Sonraki kelimeye geçmek için sonraki, oyun döngüsünden çıkmak için çık deyin.

13. Tebrikler

Tebrikler! Spelling Practice adlı oyununuzu başarıyla oluşturdunuz.

Cloud Firestore, Cloud Functions ve Google Asistan Action Builder'ı kullanarak oyun oluşturmak için gereken temel adımları öğrendiniz.

Kapsamınız

  • Cloud Firestore ile etkileşim kurma
  • Kullanıcıdan veri toplamak için yuvaları kullanma
  • Kullanıcı girişini işleme ve yanıt döndürme
  • Bir sahneye mantık eklemek için koşulları kullanma
  • Oyun döngüsü ekleme

Ek öğrenme kaynakları

Google Asistan için İşlemler oluşturma hakkında bilgi edinmek üzere aşağıdaki kaynakları inceleyebilirsiniz:

Projenizi temizleme [önerilir]

Olası ücretlerden kaçınmak için kullanmayı düşünmediğiniz projeleri kaldırmanız önerilir. Bu codelab'de oluşturduğunuz projeleri silmek için aşağıdaki adımları uygulayın:

  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 silinecek doğru projeyi seçtiğinizden emin olun.

  1. İsteğe bağlı: Projenizi hemen Actions Console'dan kaldırmak için Proje silme bölümünde listelenen adımları uygulayın. Bu adımı tamamlamazsanız projeniz yaklaşık 30 gün sonra otomatik olarak kaldırılır.

En son duyurularımızdan haberdar olmak için Twitter'da @ActionsOnGoogle ve @Firebase'ı takip edin. Geliştirdiklerinizi paylaşmak için #GoogleIO hashtag'ini kullanarak tweet atın.