Günlük güncellemeler (Dialogflow)

Bir işlemin günlük güncellemelerine telefonundan abone olan bir kullanıcı

İşleminiz kullanıcılara her gün değer sağlıyorsa günlük güncellemeleri yapılandırarak kullanıcılara onu kullanmaları için hatırlatıcı verin. Bir kullanıcı, İşleminizin günlük güncellemelerine abone olduğunda, İşleminizin amaçlarından birini çağırmak için dokunabileceği bir push bildirimi alır.

Kullanıcının bu güncellemelerle ilgili deneyimi aşağıdaki gibidir:

  1. Kullanıcı, günlük güncelleme olarak yapılandırdığınız İşleminizin amaçlarından birini çağırır.
  2. Kullanıcı, günlük güncellemelere abone olma istemini yerine getirir. Bu istem, görüşmenin ortasında veya görüşme sona erdiğinde öneri çipi olarak verilir.
  3. Kullanıcı, gün içinde günlük güncellemenizi almak istediği bir saati planlayarak güncellemenizi Google Asistan'a kaydeder.
  4. Kullanıcı, her gün planlanan saatinde mobil cihazında bir Asistan bildirimi alır.
  5. Kullanıcı bu bildirimi açtığında günlük güncelleme olarak yapılandırdığınız amacı çağırır ve İşleminizle etkileşimde bulunur.

Varsayılan olarak, kullanıcı İşleminizden başarıyla çıktığında günlük güncelleme kaydı istemi bir öneri çipi olarak görünür. Ayrıca görüşme ortasında kayıt istemi ekleyebilir veya kullanıcının güncellemelerini kişiselleştirebilirsiniz.

Kullanım alanları

Günlük güncellemeler kullanışlı bir etkileşim aracı olabilir, ancak her işleme dahil edilmemelidir. Bir İşleme günlük güncelleme aboneliği ekleyip eklemeyeceğinize karar verirken aşağıdaki ipuçlarını dikkate alın:

  • Günlük güncellemeler, kullanıcının her gün farklı, faydalı bilgiler görmesini sağlayacaktır. Günlük bir güncellemeye dokunduğunuzda her seferinde aynı istemle sonuçlanıyorsa kullanıcı muhtemelen birkaç gün sonra e-posta listesinden çıkar.
  • Kullanıcınız doğrudan günlük güncellemenizin amacına ulaşırsa diyalogunuzun ona bir anlam ifade ettiğinden emin olun. Kullanıcınız görüşmenin başından başlamayabilir, bu nedenle ondan fazla bağlam bilgisi beklemeyin.
  • Günlük güncellemelere kaydolmasını istemeden önce kullanıcınıza İşleminizin avantajını gösterin. Abone olma seçeneği sunulduğunda kullanıcınızın "Bu içeriği her gün istiyorum" şeklinde düşünmesi gerekir.
  • Kayıt işlemini tekrar tekrar önererek kullanıcıları bunaltmayın. Kullanıcıya neye abone olduğunu gösterdikten hemen sonra günlük güncelleme aboneliği sunun ve teklifi başka bağlamlarda tekrarlamaktan kaçının.
  • Güncelleme amacı tetiklendikten sonra görüşmeyi kısa tutun. Çoğu günlük güncelleme yalnızca tek bir yanıttan oluşmalıdır ve sonra kullanıcı girişi gerektirmeden kapatılmalıdır.

Günlük güncellemeleri ayarlayın

Dialogflow'da keşfet

Dialogflow'da Günlük güncellemeler örneğimizi içe aktarmak için Devam'ı tıklayın. Ardından örneği dağıtmak ve test etmek için aşağıdaki adımları uygulayın:

  1. Bir temsilci adı girin ve örnek için yeni bir Dialogflow aracısı oluşturun.
  2. Temsilci 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 Düzenleyici'yi etkinleştirin ve ardından Dağıt'ı tıklayın. Düzenleyici, örnek kodu içerir.
  5. Ana gezinme menüsünden Entegrasyonlar'a gidin ve Google Asistan'ı tıklayın.
  6. Görüntülenen kalıcı pencerede, Değişiklikleri otomatik önizleme'yi etkinleştirin ve İşlem simülatörünü açmak için Test et'i tıklayın.
  7. Örneği test etmek için simülasyon aracında Talk to my test app ifadesini girin.
Devam

İşleminizin amaçlarından birini günlük güncellemeler için yapılandırmak üzere aşağıdaki talimatları uygulayın:

1. Güncelleme amacı hazırlama

İşleminizin amaçlarından birini tetikleyici amaç olarak yapılandırın. Bu amaç, kullanıcılara günlük güncelleme gönderilmesini sağlar. Bir kullanıcı günlük güncelleme bildirimini açtığında amaç tetiklenir ve görüşme buradan devam eder.

Dialogflow'da tetikleme amacı tanımlamak için şunları yapın:

  1. Dialogflow Console'da Integrations'ı (Entegrasyonlar) tıklayın.
  2. Google Asistan bölümünde Entegrasyon Ayarları'nı tıklayın.
  3. Bulunma > Örtülü çağrı altında Amaç ekle'yi tıklayın ve zaten yoksa tetikleme niyetinizi seçin.
  4. Daha önce etkinleştirilmemişse Değişiklikleri otomatik önizleme'yi etkinleştirin.
  5. Kapat'ı tıklayın.

Actions SDK'sında, güncelleme niyetinizi İşlem paketinde bir tetikleme amacı olarak tanımlayın.

2. Güncellemeleri etkinleştir

Tetikleyici amacınız için günlük güncellemeleri açmak üzere aşağıdakileri yapın:

  1. Actions Console'da Geliştir > İşlemler'e gidin.
  2. Tetikleyici amacınızı seçin. Niyetiniz listede görünmüyorsa bunun tetikleyici amaç olarak yapılandırıldığından ve Dialogflow'un Asistan entegrasyonunun değişiklikleri otomatik önizlemeye ayarlandığından emin olun.
  3. Kullanıcı etkileşimi bölümüne gidin ve Kullanıcılara günlük güncellemeler sunmak ister misiniz? seçeneğini etkinleştirin.
  4. Bir İçerik başlığı girin.
  5. Kaydet'i tıklayın.

İşleminizi bir amaç için günlük güncelleme abonelikleri sunacak şekilde yapılandırdınız. Artık günlük güncellemelerinizi kendi mobil cihazınızda test edebilirsiniz.

Güncelleme kaydını özelleştirin (isteğe bağlı)

Öneri çipi ve Asistan tarafından yönetilen günlük güncelleme kaydı akışına ek olarak, kullanıcıları kendi iletişim kutunuz ve kayıt isteminizle günlük güncellemelere abone yapabilirsiniz.

İsteğe bağlı günlük güncelleme özelliklerini işleyen bir işlemin eksiksiz örneği için Actions on Google kullanıcı etkileşimi örneklerini (Node.js ve Java) inceleyin.

Sohbetinize özel bir günlük güncelleme kaydı istemi eklemek için şu talimatları uygulayın:

1. Kayıt istemi ekle

Kullanıcıları günlük güncellemelere abone olmaya teşvik etmek istediğinizde, görüşmeye diyalog ve öneri çipi ekleyin. Günlük güncellemelerinizin içeriğini anlaması için, kullanıcı güncelleme amacınızla etkileşimde bulunduktan sonra bu istemleri sunun.

Aşağıdaki örnek kod, kullanıcıdan her gün beklenen en düşük sıcaklığı sunan günlük güncellemelere abone olmasını ister:

Node.js
app.intent('Daily Lowest Temperature', (conv, params) => {
  const today = DAYS[new Date().getDay()];
  const lowestTemperature = lowestTemperatures[today];
  conv.ask(`The lowest temperature for today is ${lowestTemperature}`);
  conv.ask('I can send you daily updates with the lowest temperature' +
    ' of the day. Would you like that?');
  conv.ask(new Suggestions('Send daily updates'));
});
Java
@ForIntent("Daily Lowest Temperature")
public ActionResponse dailyLowestTemperature(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  Integer lowestTemperature =
      LOWEST_TEMPERATURES.get(LocalDate.now().getDayOfWeek());
  responseBuilder
      .add("The lowest temperature for today is " +  lowestTemperature + " degrees Fahrenheit.")
      .add("I can send you daily updates with the lowest temperature of " +
          "the day. Would you like that?")
      .addSuggestions(new String[] {
          "Send daily updates"
      });
  return responseBuilder.build();
}
Dialogflow JSON

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

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "The lowest temperature for today is 75 degrees Fahrenheit"
            }
          },
          {
            "simpleResponse": {
              "textToSpeech": "I can send you daily updates with the lowest temperature of the day. Would you like that?"
            }
          }
        ],
        "suggestions": [
          {
            "title": "Send daily updates"
          }
        ]
      }
    }
  }
}
Actions SDK JSON

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

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ],
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "The lowest temperature for today is 75 degrees Fahrenheit"
              }
            },
            {
              "simpleResponse": {
                "textToSpeech": "I can send you daily updates with the lowest temperature of the day. Would you like that?"
              }
            }
          ],
          "suggestions": [
            {
              "title": "Send daily updates"
            }
          ]
        }
      }
    }
  ]
}

2. Güncelleme kaydını işleme

Kullanıcı, kayıt isteminizi takip ettiğinde tetiklenen yeni bir niyet oluşturun. Bu yeni amacın yerine getirilmesinde, aşağıdaki parametrelerle actions_intent_CONFIGURE_UPDATES yerleşik niyeti tetikleyin:

  • intent: Yapılandırdığınız güncelleme niyetine ayarlanır.
  • frequency: "DAILY" olarak ayarlayın.

Aşağıdaki kod, "Günlük En Düşük Sıcaklık" amacı için günlük güncellemeleri kaydeder:

Dialogflow Node.js
app.intent('Subscribe to Daily Updates', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'Daily Lowest Temperature',
    frequency: 'DAILY',
  }));
});
Actions SDK Node.js
conv.ask(new RegisterUpdate({
  intent: 'Daily Lowest Temperature',
  frequency: 'DAILY',
}));
Dialogflow Java
@ForIntent("Subscribe to Daily Updates")
public ActionResponse subscribeToDailyUpdates(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  return responseBuilder.add(new RegisterUpdate()
      .setIntent("Daily Lowest Temperature")
      .setFrequency("DAILY"))
      .build();
}
Actions SDK Java
ResponseBuilder responseBuilder = getResponseBuilder(request);
return responseBuilder.add(new RegisterUpdate()
    .setIntent("Daily Lowest Temperature")
    .setFrequency("DAILY"))
    .build();
Dialogflow JSON
{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "systemIntent": {
        "intent": "actions.intent.REGISTER_UPDATE",
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
          "intent": "Daily Lowest Temperature",
          "triggerContext": {
            "timeContext": {
              "frequency": "DAILY"
            }
          }
        }
      }
    }
  }
}
Actions SDK JSON
{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.REGISTER_UPDATE",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
            "intent": "Daily Lowest Temperature",
            "triggerContext": {
              "timeContext": {
                "frequency": "DAILY"
              }
            }
          }
        }
      ]
    }
  ]
}

3. Sonucu yönetin

Asistan, görüşmenizi devralır ve kullanıcıya günlük güncelleme yapılandırmasının geri kalanında yol gösterir. Kayıt tamamlandığında Asistan, kaydın başarılı olup olmadığını belirten bir parametreyle niyet tetikler.

Bu adımla ilgili talimatlar, geliştirme için Dialogflowflow veya Actions SDK'yı kullanmanıza bağlı olarak farklılık gösterir.

Dialogflow

Kayıt sonucunu işleyen bir intent oluşturmak için şu adımları uygulayın:

  1. Dialogflow Console'da yeni bir amaç oluşturun.
  2. actions_intent_REGISTER_UPDATE etkinliğini ekleyin.
  3. Niyet için webhook karşılamayı etkinleştirin.
  4. Kaydet'i tıklayın.
Amacı yerine getirirken sonuç için registered parametresini kontrol edin ve görüşmeyi buna göre döndürün.
Dialogflow Node.js
app.intent('Confirm Daily Updates Subscription', (conv, params, registered) => {
  if (registered && registered.status === 'OK') {
    conv.close(`Ok, I'll start giving you daily updates.`);
  } else {
    conv.close(`Ok, I won't give you daily updates.`);
  }
});
Dialogflow Java
@ForIntent("Confirm Daily Updates Subscription")
public ActionResponse confirmDailyUpdatesSubscription(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  if (request.isUpdateRegistered()) {
    responseBuilder.add("Ok, I'll start giving you daily updates.");
  } else {
    responseBuilder.add("Ok, I won't give you daily updates.");
  }
  return responseBuilder.endConversation().build();
}
Dialogflow JSON
{
  "payload": {
    "google": {
      "expectUserResponse": false,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Ok, I'll start giving you daily updates."
            }
          }
        ]
      }
    }
  }
}
Actions SDK

Sipariş karşılama kodunuzda, actions.intent.REGISTER.UPDATE yerleşik amacı için işleme ekleyin. Sonuçla ilgili olarak registered parametresini kontrol edin ve konuşmayı buna göre döndürün.

Actions SDK Node.js
app.intent('actions.intent.REGISTER_UPDATE', (conv, params, registered) => {
  if (registered && registered.status === 'OK') {
    conv.close(`Ok, I'll start giving you daily updates.`);
  } else {
    conv.close(`Ok, I won't give you daily updates.`);
  }
});
Actions SDK Java
@ForIntent("actions.intent.REGISTER_UPDATE")
public ActionResponse confirmDailyUpdatesSubscription(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  if (request.isUpdateRegistered()) {
    responseBuilder.add("Ok, I'll start giving you daily updates.");
  } else {
    responseBuilder.add("Ok, I won't give you daily updates.");
  }
  return responseBuilder.endConversation().build();
}
Actions SDK JSON
{
  "expectUserResponse": false,
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "simpleResponse": {
            "textToSpeech": "Ok, I'll start giving you daily updates."
          }
        }
      ]
    }
  }
}

Güncellemeleri kişiselleştirin (isteğe bağlı)

Güncelleme amacınızı kişiselleştirmek için kullanıcılar günlük güncellemeleri kaydederken özel parametreler ekleyin. Güncelleme amacını yerine getirdiğinizde, söz konusu kullanıcı için günlük güncellemeyi özelleştirmek üzere bu parametrelere başvurun.

Bu özellikle ilgili talimatlar, geliştirme için Dialogflowflow veya Actions SDK'dan hangisini kullandığınıza bağlı olarak farklılık gösterir.

Dialogflow

Güncelleme için özel parametreleri işleyecek bir Dialogflow varlığı tanımlayın, ardından parametre değerini güncelleme amacınızın bağımsız değişkeni olarak aktarın. Dialogflow'da kişiselleştirilmiş güncellemeler oluşturmak için aşağıdaki adımları uygulayın:

  1. Dialogflow konsolunda yeni bir varlık oluşturun.
  2. Parametrenizle alakalı bazı girişler ve eş anlamlılar ekleyin.
  3. Kaydet'i tıklayın ve ardından güncelleme amacınızı açın.
  4. İşlemler ve parametreler bölümünde etkinlik olarak actions.intent.CONFIGURE_UPDATES değerini ayarlayın. Aynı bölümde, yeni öğeyle aynı türde bir parametre ekleyin.
  5. CONFIGURE_UPDATES yerleşik amacını işleyen "kayıt güncelleme" amacını açın.
  6. İşlemler ve parametreler bölümünde, gerekli bir parametre ekleyin ve türünü daha önce oluşturulan varlığa ayarlayın.
  7. Kayıt amacınızın istek karşılama kodunu, aşağıdaki içeriklere sahip bir arguments nesnesi içerecek şekilde güncelleyin:
    • name - Parametrenizin Dialogflow'da yapılandırılan adı.
    • textValue - Parametrenizin değeri.

Aşağıdaki kod, parametrenin değerini okur ve güncelleme kaydı isteğinde kullanır:

Dialogflow Node.js
app.intent('setup_update', (conv) => {
  conv.ask(new RegisterUpdate({
    intent: 'update_of_the_day',
    arguments: [
      {
        name: 'category',
        textValue: 'Daily_lowest_temperature',
      },
    ],
    frequency: 'DAILY',
  }));
});
Dialogflow Java
@ForIntent("setup_update")
public ActionResponse setupUpdate2(ActionRequest request) {
  List<Argument> args =
      Arrays.asList(
          new Argument()
              .setName("category")
              .setTextValue(request.getParameter("category").toString()));
  return getResponseBuilder(request)
      .add(new RegisterUpdate().setIntent("intent_name").setArguments(args).setFrequency("DAILY"))
      .build();
}
Dialogflow JSON
{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "PLACEHOLDER"
            }
          }
        ]
      },
      "userStorage": "{\"data\":{}}",
      "systemIntent": {
        "intent": "actions.intent.REGISTER_UPDATE",
        "data": {
          "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
          "intent": "update_of_the_day",
          "arguments": [
            {
              "name": "category",
              "textValue": "Daily_lowest_temperature"
            }
          ],
          "triggerContext": {
            "timeContext": {
              "frequency": "DAILY"
            }
          }
        }
      }
    }
  },
  "outputContexts": [
    {
      "name": "/contexts/_actions_on_google",
      "lifespanCount": 99,
      "parameters": {
        "data": "{}"
      }
    }
  ]
}
Actions SDK

Niyetinizin karşılanmasında kullanıcıdan ek bilgi isteyin, ardından bilgileri güncelleme amacınızın bağımsız değişkeni olarak aktarın. Actions SDK'sında kişiselleştirilmiş güncellemeleri ayarlamak için aşağıdaki adımları uygulayın:

  1. Kullanıcıdan, kişiselleştirme için kullanmak istediğiniz bilgileri isteyin.
  2. CONFIGURE UPDATES işlemini işleyen "kayıt güncelleme" amacınızın karşılama kodunda, aşağıdaki içeriğe sahip bir arguments nesnesi bulunuyor:
    • name - Bağımsız değişkeninizin adı.
    • textValue - Kullanıcıdan gelen ve bağımsız değişken olarak iletilecek bilgiler.

Aşağıdaki kod, kayıt güncelleme isteğiyle birlikte bir bağımsız değişken gönderir:

Actions SDK Node.js
app.intent('actions.intent.TEXT', (conv) => {
  if (conv.input.raw === 'Send daily') {
    conv.ask(new RegisterUpdate({
      intent: 'update_of_the_day',
      arguments: [
        {
          name: 'category',
          textValue: 'Daily_lowest_temperature',
        },
      ],
      frequency: 'DAILY',
    }));
  }
});
Actions SDK Java
@ForIntent("actions.intent.CONFIGURE_UPDATES")
public ActionResponse configureUpdatesActionsSdk(ActionRequest request) {
  List<Argument> args =
      Arrays.asList(
          new Argument()
              .setName("category")
              .setTextValue(request.getParameter("category").toString()));
  return getResponseBuilder(request)
      .add(new RegisterUpdate().setIntent("intent_name").setArguments(args).setFrequency("DAILY"))
      .build();
}

@ForIntent("actions.intent.TEXT")
public ActionResponse text(ActionRequest request) {
  ResponseBuilder rb = getResponseBuilder(request);
  String input = request.getRawInput().getQuery();
  if (input.equals("DAILY_NOTIFICATION_SUGGESTION")) {
    rb.add("For which category do you want to receive daily updates?");
  } else {
    rb.add("Sorry, I didn't get that. Please try again later").endConversation();
  }
  return rb.build();
}
Actions SDK JSON
{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "PLACEHOLDER"
              }
            }
          ]
        }
      },
      "possibleIntents": [
        {
          "intent": "actions.intent.REGISTER_UPDATE",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
            "intent": "update_of_the_day",
            "arguments": [
              {
                "name": "category",
                "textValue": "Daily_lowest_temperature"
              }
            ],
            "triggerContext": {
              "timeContext": {
                "frequency": "DAILY"
              }
            }
          }
        }
      ]
    }
  ],
  "conversationToken": "{\"data\":{}}",
  "userStorage": "{\"data\":{}}"
}

Kullanıcı günlük güncellemenizi çağırdığında, güncelleme amacınız artık kayıt sırasında kullanıcı tarafından verilen değerleri içeren bağımsız değişkenleri içerir. Güncellemeyi her kullanıcı için kişiselleştirmek amacıyla bu değerleri kullanın.

Günlük güncellemeleri test edin

Günlük güncellemelerinizi, İşleminizi oluşturmak için kullandığınız Google Hesabı ile bir mobil cihazda ve Google Asistan'la test edin. İşleminizi çağırın ve günlük güncellemelere abone olun, ardından güncelleme zamanı geldiğinde cihazınızın bildirimlerini kontrol edin.