İş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:
- Kullanıcı, günlük güncelleme olarak yapılandırdığınız İşleminizin amaçlarından birini çağırır.
- 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.
- Kullanıcı, gün içinde günlük güncellemenizi almak istediği bir saati planlayarak güncellemenizi Google Asistan'a kaydeder.
- Kullanıcı, her gün planlanan saatinde mobil cihazında bir Asistan bildirimi alır.
- 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:
- Bir temsilci adı girin ve örnek için yeni bir Dialogflow aracısı oluşturun.
- Temsilci içe aktarma işlemini tamamladıktan sonra Temsilciye git'i tıklayın.
- Ana gezinme menüsünden Karşılama'ya gidin.
- Satır İçi Düzenleyici'yi etkinleştirin ve ardından Dağıt'ı tıklayın. Düzenleyici, örnek kodu içerir.
- Ana gezinme menüsünden Entegrasyonlar'a gidin ve Google Asistan'ı tıklayın.
- 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.
- Örneği test etmek için simülasyon aracında
Talk to my test app
ifadesini girin.
İş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:
- Dialogflow Console'da Integrations'ı (Entegrasyonlar) tıklayın.
- Google Asistan bölümünde Entegrasyon Ayarları'nı tıklayın.
- Bulunma > Örtülü çağrı altında Amaç ekle'yi tıklayın ve zaten yoksa tetikleme niyetinizi seçin.
- Daha önce etkinleştirilmemişse Değişiklikleri otomatik önizleme'yi etkinleştirin.
- 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:
- Actions Console'da Geliştir > İşlemler'e gidin.
- 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.
- 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.
- Bir İçerik başlığı girin.
- 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:
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')); });
@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(); }
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" } ] } } } }
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:
app.intent('Subscribe to Daily Updates', (conv) => { conv.ask(new RegisterUpdate({ intent: 'Daily Lowest Temperature', frequency: 'DAILY', })); });
conv.ask(new RegisterUpdate({ intent: 'Daily Lowest Temperature', frequency: 'DAILY', }));
@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(); }
ResponseBuilder responseBuilder = getResponseBuilder(request); return responseBuilder.add(new RegisterUpdate() .setIntent("Daily Lowest Temperature") .setFrequency("DAILY")) .build();
{ "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" } } } } } } }
{ "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.
Kayıt sonucunu işleyen bir intent oluşturmak için şu adımları uygulayın:
- Dialogflow Console'da yeni bir amaç oluşturun.
actions_intent_REGISTER_UPDATE
etkinliğini ekleyin.- Niyet için webhook karşılamayı etkinleştirin.
- Kaydet'i tıklayın.
registered
parametresini kontrol edin ve görüşmeyi buna göre döndürün.
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.`); } });
@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(); }
{ "payload": { "google": { "expectUserResponse": false, "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "Ok, I'll start giving you daily updates." } } ] } } } }
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.
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.`); } });
@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(); }
{ "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.
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:
- Dialogflow konsolunda yeni bir varlık oluşturun.
- Parametrenizle alakalı bazı girişler ve eş anlamlılar ekleyin.
- Kaydet'i tıklayın ve ardından güncelleme amacınızı açın.
- İş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. CONFIGURE_UPDATES
yerleşik amacını işleyen "kayıt güncelleme" amacını açın.- İşlemler ve parametreler bölümünde, gerekli bir parametre ekleyin ve türünü daha önce oluşturulan varlığa ayarlayın.
- 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:
app.intent('setup_update', (conv) => { conv.ask(new RegisterUpdate({ intent: 'update_of_the_day', arguments: [ { name: 'category', textValue: 'Daily_lowest_temperature', }, ], frequency: 'DAILY', })); });
@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(); }
{ "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": "{}" } } ] }
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:
- Kullanıcıdan, kişiselleştirme için kullanmak istediğiniz bilgileri isteyin.
CONFIGURE UPDATES
işlemini işleyen "kayıt güncelleme" amacınızın karşılama kodunda, aşağıdaki içeriğe sahip birarguments
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:
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', })); } });
@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(); }
{ "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.