Niyetlerinizi ve düzenlerinizi oluşturduktan sonra, İşlem Oluşturucu'nun istek ve yanıt biçimlerindeki değişiklikleri hesaba katmak için istek karşılama kodunuzu güncellemeniz gerekir. Bu, Actions Builder'ın ek özelliklerini kullanmak için de bir fırsattır. Bu sayfada, sipariş karşılama kodunuzu güncellerken uygulanması gereken genel adımlar ve dikkat edilmesi gereken noktalar ele alınmaktadır.
Sipariş karşılama yaklaşımınızı düşünün
Projenizin istek karşılama kodu, sohbet modeline ve geliştirme platformunun özelliklerine bağlıdır. Actions Builder, görüşme oluşturma şeklinizi değiştiren ve projeyi karşılama yaklaşımınızı değiştirebilecek yeni bir sohbet modeli ve işlevi sunuyor. Bu bölümde Actions Builder'dan farklı olan Actions Builder özellikleri ve bu farklılıkların istek karşılama kodunuzu uygulama şeklinizi nasıl değiştirdiği açıklanmaktadır.
Görüşme uygulamasındaki değişiklikler
- Dialogflow, amaca yönelik, bağlamsal olarak yönlendirilen bir sohbet akışı kullanır. Bu akış sırasında niyetler, eğitim ifadeleri ve bir önceki niyetin giriş/çıkış bağlamlarına göre eşleştirilir.
- Actions Builder'ın sohbet akışı, konuşma dönüşleri için kapsayıcı olarak sahneleri kullanır. Bir sahnede Dialogflow'un bağlamlarında olduğu gibi, belirli amaçlar eşleştirilebilir. Geçişler, hangi amacın eşleştiğine bağlı olarak hangi sahneye geçileceğini tanımlar.
Yeniden kullanılabilir webhook işlevleri
- Dialogflow'da webhook işleyicileri bağımsız niyetlere bağlanır. Ek mantık gerekirse yeni işlevi işlemek için ayrı bir intent oluşturmanız gerekir.
- Webhook işleyicileri, Actions Builder'da özel işleyici adlarına sahiptir. Bu özellik proje boyunca birden çok sahneden bir fonksiyon çağırmanıza olanak tanır.
Webhook'ları çağırmanın diğer yolları
- Dialogflow'da niyet başına bir webhook yaklaşımı, projenizin karşılanmasında daha fazla konuşma mantığını kolaylaştırmak için ek intent'ler gerektirir.
- İşlem Oluşturucu, bir sahne içindeki birden fazla yerden webhook çağrıları yapmanıza olanak tanır: giriş yapma, koşullar ve slot doldurmaya dayalı olarak ve özel ile sistem amacı eşleştirme aracılığıyla.
Sipariş karşılama kodunuzu güncelleyin
Her İşlemin istek karşılama kodu işlemin karmaşıklığına ve amacına bağlı olarak farklılık gösterir ancak kodunuzu güncellerken uygulamanız gereken genel adımlar vardır:
İstemci kitaplığının en son sürümünü indirip yükleyin.
npm install @assistant/conversation
Kodunuzdaki
require
ifadelerini güncelleyin. Örneğin:const { SimpleResponse, BasicCard, Image, } = require('actions-on-google');
Yukarıdaki kod şu şekilde güncellenir:
const { conversation, Simple, Card, Image, } = require('@assistant/conversation');
Yeni yöntemleri kullanmak için kodunuzu yeniden düzenleyin.
- Amaç işleyiciler:
app.intent
→app.handle
- Yanıt/istemler:
conv.ask
→conv.add
- Yüzey/cihaz özellikleri:
conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT')
→conv.device.capabilities.includes('RICH_RESPONSE')
- Veri depolama:
conv.data
→conv.session.params
Yanıt türleri:
SimpleResponse
→Simple
BasicCard
→Card
Suggestions
→Suggestion
Amaç parametreleri:
conv.parameters[KEY]
→conv.intent.parameters[KEY].resolved
Bağlamlar/sahne geçişleri:
conv.contexts.set(content_name, 5);
→conv.scene.next.name = 'context_name'
Görüşmeyi sonlandır:
conv.close(response)
→conv.add.response; conv.scene.next.name = 'actions.page.END_CONVERSATION'
- Amaç işleyiciler:
Yanıt kodunu, Oluşturucu'nun yeni yanıt temel öğelerini kullanmak için güncelleyin. Örneğin:
conv.ask(new Suggestions (['a', 'b']));
Yukarıdaki kod şu şekilde güncellenir:
for (suggestion of ['a', 'b']) { conv.add.(new Suggestion({title: suggestion})) }
Yöntemlerin tam listesi için aşağıdaki sipariş karşılama kodu çeviri haritasına bakın.
İstek ve yanıt yüklerini karşılaştırmak için aşağıdaki sayfaları kullanın:
- İstek biçimleri
- Yanıt biçimleri
Webhook oluşturma
İstek karşılamanızı güncelledikten sonra projenizdeki sahneler genelinde webhook çağrılarını etkinleştirin. Taşıma aracı, Dialogflow niyetinizin webhook ayarlarını taşır ancak yeniden düzenlenen istek karşılama kodunuz ve webhook işlevleriniz değişebileceği için bu ayarları gözden geçirmeniz gerekir.
Dialogflow'da, webhook'lar niyetlerde etkinleştirilir ve istek karşılama kodunuz, amaç eşleştiğinde yürütülecek işleyiciler ve işlevler içerir. Actions Builder'da bir webhook, çağrı amaçları veya sahneleri içinde tetiklenebilir ve bu da istek karşılama uç noktanıza istek gönderir. İstek karşılama durumunuz, istekteki JSON yükünü işleyen webhook işleyicileri içeriyor. Webhook'ları aşağıdaki durumlarda tetikleyebilirsiniz:
- Bir çağrı amacı eşleşmesinden sonra
- Bir sahneye giriş sırasında
- Bir düzenin koşul aşamasında bir koşul doğru olarak değerlendirildikten sonra
- Sahnenin slot doldurma aşamasında
- Sahnenin giriş aşamasında intent eşleşmesi gerçekleştikten sonra
Dialogflow'dan Actions Builder'a geçiş yaparken, webhook çağrıları yaptığınız yer ve zamanda değişebileceğinden, görüşme akışınızdaki değişiklikleri dikkate almanız gerekir.
Webhook çağrısını etkinleştirmek için aşağıdaki adımları uygulayın:
- Webhook'u çağırmak istediğiniz sahneyi seçin.
Webhook'u etkinleştirmek istediğiniz durumu seçin. Bir webhook'u aşağıdaki durumlardan biri veya daha fazlası için etkinleştirebilirsiniz:
- Girişte
- Koşul
- Slot doldurma
- Kullanıcı amacını işleme
- Sistem amacını işleme
Webhook'unuzu çağırın seçeneğini işaretleyin.
Sipariş karşılama kodunuzda tanımladığınız webhook işleyiciyi girin.
Kaydet'i tıklayın.
Webhook çağrısı ve istek karşılama değişikliklerinizi denemek için Test'e gidin.
Sipariş karşılama kodu çeviri haritası
Aşağıdaki tabloda, Dialogflow'un istek karşılama kodu söz diziminin Actions Builder koduna nasıl dönüştürüldüğü gösterilmektedir. Yöntemlerin tam listesi için Actions Builder ve SDK referansları dokümanlarına bakın.
Dialogflow | İşlem Oluşturucu |
---|---|
conv.data |
conv.session.params |
conv.ask |
conv.add |
conv.close |
conv.scene.next.name = 'actions.scene.END_CONVERSATION' |
conv.user.storage |
conv.user.params |
conv.input.raw |
conv.intent.query |
conv.parameters |
conv.intent.params[key].resolved |
conv.arguments.get('MEDIA_STATUS') mediaStatus.status==='FINISHED' |
conv.intent.params['MEDIA_STATUS'] mediaStatus.resolved==='FINISHED' |
Etkinlikler | Sistem amacını işleme:MEDIA_STATUS_FINISHED MEDIA_STATUS_FAILED |
conv.device.capabilities.has("actions.capability.SCREEN_OUTPUT") |
conv.device.capabilities.includes("RICH_RESPONSE") |
app.intent |
app.handler |
app.middleware |
app.middleware |
Basit yanıt |
prompt
-firstSimple
|
Zengin yanıt |
prompt
-content
-card: object
-image: object
-table: object
-media: object
-suggestions
-link
|
Aşağıda ek araçlar hakkında bilgi bulabilirsiniz: