Sipariş karşılama taşıma

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:

  1. İstemci kitaplığının en son sürümünü indirip yükleyin.

    npm install @assistant/conversation
    
  2. 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');
    
  3. Yeni yöntemleri kullanmak için kodunuzu yeniden düzenleyin.

    • Amaç işleyiciler: app.intentapp.handle
    • Yanıt/istemler: conv.askconv.add
    • Yüzey/cihaz özellikleri: conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT')conv.device.capabilities.includes('RICH_RESPONSE')
    • Veri depolama: conv.dataconv.session.params
    • Yanıt türleri:

      • SimpleResponseSimple
      • BasicCardCard
      • SuggestionsSuggestion
    • 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'

  4. 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:

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:

  1. Webhook'u çağırmak istediğiniz sahneyi seçin.
  2. 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
  3. Webhook'unuzu çağırın seçeneğini işaretleyin.

  4. Sipariş karşılama kodunuzda tanımladığınız webhook işleyiciyi girin.

  5. Kaydet'i tıklayın.

  6. 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: