İleti dizisindeki verileri kaydetme (Dialogflow)

Dialogflow'da keşfet

Dialogflow'daki "Verileri kaydet" örneğimizi içe aktarmak için Devam'ı tıklayın. Ardından, adımları uygulayın:

  1. Bir aracı adı girin ve örnek için yeni bir Dialogflow aracısı oluşturun.
  2. Temsilcinin içe aktarma işlemini tamamladıktan sonra Temsilciye git'i tıklayın.
  3. Ana gezinme menüsünden Karşılama'ya gidin.
  4. Satır içi düzenleyici'yi etkinleştirin ve ardından Dağıt'ı tıklayın. Düzenleyici, örneği içeriyor girin.
  5. Ana gezinme menüsünden Integrations'a (Entegrasyonlar) gidin, ardından Google Asistan'a dokunun.
  6. Görünen kalıcı pencerede Otomatik önizleme değişiklikleri'ni etkinleştirin ve Test et'i tıklayın. Eylem simülatörünü açın.
  7. Simülatörde Talk to my test app komutunu girerek örneği test edebilirsiniz.
Devam

Mükemmel bir kullanıcı deneyimi sunmanın bir parçası da çoğu zaman arasında veya bir kullanıcıyla yaptığı birden fazla görüşmede kullanılabilir. Bu, tek bir görüşmede faydalı yeniden istemler sunuyorsanız Oturumlar arasında oyun skorlarını kaydetme veya küçük bilgileri hatırlama bir anlam ifade eder.

Koşullar, verileri belirli bir sürede kaydetmeniz gerekip gerekmediğine bağlı olarak veya konuşmalardaki gibi. Bir görüşmeye veri kaydetmek için şunları yapabilirsiniz: AppResponse nesnenizin conversationToken alanını kullanın.

Görüşmeler arasında veri kaydetmek için aşağıdaki adımları uygulayın:

  1. Kullanıcının doğrulanmış mı yoksa misafir mi olduğunu belirleyin.
  2. Şu öğenin userStorage alanını kullanarak kullanıcı verilerini depolayın veya bu verilere erişin: AppResponse nesneniz.
ziyaret edin.

Bir ileti dizisinin dönüşleri arasında verileri kaydetme

conversationToken alanı, her görüşmede İşleme geri yönlendirilir. Örneğin, değeri "count=1" olacak şekilde AppResponse içindeki ilk dönüş için ikinci dönüş için İşleminizin aldığı AppRequest ileti dizisinin conversationToken bölümünde "count=1" bulunuyor.

Jeton her zaman bir dizenin başında boş bir dizeyle yardımcı olur. URL'yi Google Node.js istemci kitaplığındaki işlemleri kullanarak şunları yapabilirsiniz: conv.data kullanarak sohbet jetonuyla JSON nesnesi olarak arayüz oluşturun. conv, Conversation örneğiniz.

Aşağıdaki örnekte, bir sayacın conversationToken içinde nasıl kaydedileceği gösterilmektedir AppResponse alanının değerini değiştirin:

Node.js

conv.data.firstNum = firstNum;
conv.ask(`Got it, the first number is ${firstNum}.`);
conv.ask(`What's the second number?`);

Java

ResponseBuilder responseBuilder = getResponseBuilder(request);
responseBuilder.getConversationData().put("firstNum", firstNum);
responseBuilder.add("Got it, the first number is " + firstNum + ".");
responseBuilder.add("What's the second number?");
return responseBuilder.build();

JSON

Aşağıdaki JSON JSON dosyasının conversationToken yerine outputContexts.

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Got it, the first number is 23."
            }
          },
          {
            "simpleResponse": {
              "textToSpeech": "What's the second number?"
            }
          }
        ]
      }
    }
  },
  "outputContexts": [
    {
      "name": "projects/save-data-df-js/agent/sessions/ABwppHGfFkWJdHKPpBEYiGkhdoakWmYj_2sZa4o8pbGG9nj4q5_GfDTtNEXOY34mLX8G4o_d7oZdUW9bnBZC/contexts/_actions_on_google",
      "lifespanCount": 99,
      "parameters": {
        "data": "{\"firstNum\":23}"
      }
    }
  ]
}

JSON

Aşağıdaki JSON dosyasının bir webhook yanıtını açıkladığını unutmayın.

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ],
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "Got it, the first number is 23."
              }
            },
            {
              "simpleResponse": {
                "textToSpeech": "What's the second number?"
              }
            }
          ]
        }
      }
    }
  ],
  "conversationToken": "{\"data\":{\"firstNum\":23}}"
}

Faydalı öneriler sunma ve sorunsuz bir şekilde başarısız olma başlıklı makalemize göz atın. en iyi uygulama rehberini inceleyin.

Görüşmeler arasında veri kaydetme

AppResponse nesnenizin userStorage alanı içinde kaydedilen İşlem tarafından sağlanan opak bir jeton içeriyorsa belirli bir kullanıcıya özel ileti dizileri. Örneğin, bir oyun en yüksek bir kullanıcının userStorage puanına sahip olmasını ve bu değeri karşılama mesajında Kullanıcı yeni bir ileti dizisi başlattığında.

Kullanıcı doğrulama durumunu belirleme ve işleme

Kullanıcının doğrulama durumu GUEST veya VERIFIED değerine sahip olabilir. Şurada: her görüşmenin başında, Actions on Google kullanıcının doğrulamasını ayarlar çeşitli göstergelere dayalı olarak müşterinin durumu ile ilgili bilgileri özetleyebilir. Tek Örneğin, mobil cihazında Google Asistan'a giriş yapan bir kullanıcının VERIFIED için doğrulama durumu.

Bir kullanıcının doğrulama durumuna sahip olmasının olası nedenleri şunlardır: GUEST:

  • Kullanıcı kişisel sonuçları kapatmıştır.
  • Kullanıcı, Web ve Uygulama Etkinliği. Bazı kullanıcıların için bu ayar alan adı düzeyinde devre dışı bırakılmış olabilir.
  • Bir cihazda Voice Match etkinse ve eşleştirme başarısız olursa ya da kullanıcı şunu çağırırsa: kullanıcının sesini kullanmadan Asistan'ı kullanmak (örneğin, Google'a uzun basmak) Ana sayfa).
  • Kullanıcı oturum açmamıştır.

Verileri userStorage veya hesap bağlama akışı başlatırsanız misafir kullanıcıların başarısız olacak bir özellikle etkileşime girmesini

Actions On Node.js için Google İstemci Kitaplığı'nı kullanıyorsanız kullanıcı depolama alanını bir JSON nesnesi olarak arayüz oluşturmak için conv.user.storage; burada conv, Conversation örneğinizdir. İlgili içeriği oluşturmak için kullanılan Aşağıdaki örnekte, sayfanızın userStorage alanına bir sayacın nasıl kaydedileceği gösterilmektedir AppResponse:

Node.js

app.intent('Save Sum', (conv) => {
  if (conv.user.verification === 'VERIFIED') {
    conv.user.storage.sum = conv.data.sum;
    conv.close(`Alright, I'll store that for next time. See you then.`);
  } else {
    conv.close(`I can't save that right now, but we can add ` +
      `new numbers next time!`);
  }
});

Java

@ForIntent("Save Sum")
public ActionResponse saveSum(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  Integer sum = ((Double) request.getConversationData().get("sum")).intValue();
  String verificationStatus = request.getUser().getUserVerificationStatus();
  if (verificationStatus.equals("VERIFIED")) {
    responseBuilder.getUserStorage().put("sum", sum);
    responseBuilder.add("Alright, I'll store that for next time. See you then.");
  } else {
    responseBuilder.add("I can't save that right now, but we can add new numbers next time!");
  }
  responseBuilder.endConversation();
  return responseBuilder.build();
}

Node.js

if (conv.user.verification === 'VERIFIED') {
  conv.user.storage.sum = conv.data.sum;
  conv.close(`Alright, I'll store that for next time. See you then.`);
} else {
  conv.close(`I can't save that right now, but we can add ` +
    `new numbers next time!`);
}

Java

ResponseBuilder responseBuilder = getResponseBuilder(request);
Integer sum = ((Double) request.getConversationData().get("sum")).intValue();
String verificationStatus = request.getUser().getUserVerificationStatus();
if (verificationStatus.equals("VERIFIED")) {
  responseBuilder.getUserStorage().put("sum", sum);
  responseBuilder.add("Alright, I'll store that for next time. See you then.");
} else {
  responseBuilder.add("I can't save that right now, but we can add new numbers next time!");
}
responseBuilder.endConversation();
return responseBuilder.build();

JSON

Aşağıdaki JSON dosyasının bir webhook yanıtını açıkladığını unutmayın.

{
  "payload": {
    "google": {
      "expectUserResponse": false,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Alright, I'll store that for next time. See you then."
            }
          }
        ]
      },
      "userStorage": "{\"data\":{\"sum\":68}}"
    }
  }
}

JSON

Aşağıdaki JSON dosyasının bir webhook yanıtını açıkladığını unutmayın.

{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "simpleResponse": {
            "textToSpeech": "Alright, I'll store that for next time. See you then."
          }
        }
      ]
    }
  },
  "conversationToken": "{\"data\":{\"firstNum\":23,\"sum\":68}}",
  "userStorage": "{\"data\":{\"sum\":68}}"
}

Görüşmeyi kullanıcı tercihleriyle kişiselleştirme başlıklı makalemize göz atın. en iyi uygulama rehberini inceleyin.

Yasal not: userStorage hizmetine erişmeden önce izin alın. Bazı ülkelerde geliştiricilerin veya belirli bilgilere (ör. kişisel bilgilerinizi veya kullanıcılarınızı) bilgileri) userStorage içinde yer alır. Bu şirketlerden birinde faaliyet gösteriyorsanız veya bu bilgilere erişmek ya da bu bilgileri userStorage kullanıyorsanız Sormanız gereken onay yardımcısı önce kullanıcının onayını almanız ve bu tür bilgileri saklamaya başlamadan userStorage içinde yer alan bilgiler.

Kullanıcı depolama alanı süresi sonu

Asistan bir kimliği kullanıcıyla eşleştirebildiğinde userStorage öğesinin süresi hiçbir zaman dolmaz ve bunu yalnızca kullanıcı veya İşlem'in kendisi silebilir.

Asistan bir kimliği kullanıcıyla eşleştiremediğinde, userStorage görüşmenin sonunda temizlendi. Aşağıda bazı örnekler verilmiştir Asistan'ın bir kimliği kullanıcıyla eşleştiremediği durumlar:

  • Voice Match kuruldu ve eşleşme yok.
  • Kullanıcı, kişisel verileri devre dışı bıraktı.

userStorage alanının içeriğini temizleyin

İşleminizin userStorage alanının içeriğini temizlemek için şunları yapabilirsiniz: AppResponse sütunundaki resetUserStorage alanını "true" (doğru) olarak ayarlayın. Eğer userStorage değerini boş bir dizeye, userStorage, ileti dizisinin bir sonraki sırasında değiştirilmemiş. Bu şekilde şunları yapabilirsiniz: arka arkaya tüm userStorage içeriğini geri göndermekten kaçının. unutmayın.

Actions On Node.js için Google İstemci Kitaplığı'nı kullanıyorsanız conv.user.storage değerini {} (boş nesne) olarak ayarlayabilirsiniz.

Node.js

app.intent('Forget Number', (conv) => {
  conv.user.storage = {};
  conv.ask(`Alright, I forgot your last result.`);
  conv.ask(`Let's add two new numbers. What is the first number?`);
});

Java

@ForIntent("Forget Number")
public ActionResponse forgetNumber(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  responseBuilder.getUserStorage().clear();
  responseBuilder.add("Alright, I forgot your last result.");
  responseBuilder.add("Let's add two new numbers. What is the first number?");
  return responseBuilder.build();
}

Node.js

conv.user.storage = {};
conv.ask(`Alright, I forgot your last result.`);
conv.ask(`Let's add two new numbers. What is the first number?`);

Java

ResponseBuilder responseBuilder = getResponseBuilder(request);
responseBuilder.getUserStorage().clear();
responseBuilder.add("Alright, I forgot your last result.");
responseBuilder.add("Let's add two new numbers. What is the first number?");
return responseBuilder.build();

JSON

Aşağıdaki JSON dosyasının bir webhook yanıtını açıkladığını unutmayın.

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Alright, I forgot your last result."
            }
          },
          {
            "simpleResponse": {
              "textToSpeech": "Let's add two new numbers. What is the first number?"
            }
          }
        ]
      },
      "userStorage": "{\"data\":{}}"
    }
  }
}

JSON

Aşağıdaki JSON dosyasının bir webhook yanıtını açıkladığını unutmayın.

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ],
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "Alright, I forgot your last result."
              }
            },
            {
              "simpleResponse": {
                "textToSpeech": "Let's add two new numbers. What is the first number?"
              }
            }
          ]
        }
      }
    }
  ],
  "userStorage": "{\"data\":{}}"
}

Kullanıcı olarak, yüklediğiniz bir İşlemdeki userStorage alanının içeriğini çağrılır. Depolanan kullanıcı verilerinizi söz konusu İşlemden de kaldırabilirsiniz hizmetin sizi hatırlamasını engelleyerek.

  1. Telefonunuzda Asistan uygulamasını açın.
  2. Çekmece simgesine dokunun.

  3. Keşfet sekmesinde, görüntülemek istediğiniz işlemi bulun veya kullanıcıyı temizleyin depolama alanını seçin ve ayrıntılar sayfasını açmak için bu alana dokunun.
  4. Sayfanın alt kısmına gidin.
    • userStorage alanının içeriğini görüntülemek için [Depolanan verileri göster] seçeneğine dokunun.
    • Depolanan kullanıcı verilerini kaldırmak için $action'ın beni hatırlamasını durdur'a dokunun.