Sipariş karşılama taşıma

Amaçlarınızı ve sahnelerinizi oluşturduktan sonra, İşlem Oluşturucu'nun istek ve yanıt biçimlerindeki değişiklikleri hesaba katacak şekilde sipariş 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 dikkat edilmesi gereken genel adımlar ve dikkat edilmesi gereken noktalar ele alınmaktadır.

Sipariş karşılama yaklaşımınızı düşünün

Projenizin sipariş karşılama kodu, konuşma modeline ve geliştirme platformunun özelliklerine bağlıdır. Actions Builder, konuşma oluşturma şeklinizi değiştiren ve projeyi gerçekleştirme konusundaki yaklaşımınızı değiştirebilecek yeni bir diyalog modeli ve işlevi sunar. Bu bölümde, Actions Builder'ın Dialogflow'dan farklı özellikleri ve bu farkların sipariş karşılama kodunuzu uygulama şeklinizi nasıl değiştirdiği açıklanmaktadır.

  • Görüşme uygulamasında yapılan değişiklikler

    • Dialogflow, eğitim ifadelerine ve önceki amacın giriş/çıkış bağlamlarına göre tekil amaçların eşleştirildiği amaç odaklı, bağlamsal bir konuşma akışı kullanır.
    • Actions Builder'ın konuşma akışı, konuşma dönüşleri için kapsayıcı olarak sahneleri kullanır. Bir sahne içinde belirli amaçlar, Dialogflow'un bağlamları gibi eşleştirilebilir. Geçişler, hangi niyetin eşleştiğine bağlı olarak hangi sahneye geçiş yapılacağını tanımlar.
  • Yeniden kullanılabilir webhook işlevleri

    • Dialogflow'da webhook işleyicileri bağımsız niyetlere bağlıdır. Ek mantık gerekiyorsa yeni işlevi işlemek için ayrı bir intent oluşturmanız gerekir.
    • Webhook işleyicilerin, Actions Builder'da özel işleyici adlarına sahiptir. Bu özellik, projenizdeki birden fazla sahneden bir işlev çağırmanıza olanak tanır.
  • Webhook'ları çağırmanın diğer yolları

    • Dialogflow'da intent başına bir webhook yaklaşımı, projenizin istek karşılama sürecinde daha fazla konuşma mantığını kolaylaştırmak için ek intent'ler gerektirir.
    • İşlem Oluşturucu, bir sahnedeki birden fazla yerden webhook çağrıları yapmanıza olanak tanır: girişte, koşullara göre, alan doldurmaya göre ve özel ve sistem amaç eşleştirme aracılığıyla.

Sipariş karşılama kodunuzu güncelleyin

Her bir İşlemin sipariş karşılama kodu, işlemin karmaşıklığına ve amacına bağlı olarak farklılık gösterir ancak kodunuzu güncellerken uyulması 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 aşağıdaki ş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ğlam/sahne geçişleri: conv.contexts.set(content_name, 5);conv.scene.next.name = 'context_name'

    • İleti dizisini sonlandır: conv.close(response)conv.add.response; conv.scene.next.name = 'actions.page.END_CONVERSATION'

  4. Oluşturucu'nun yeni yanıt temel öğelerini kullanmak için yanıt kodunu güncelleyin. Örneğin:

    conv.ask(new Suggestions (['a', 'b']));
    

    Yukarıdaki kod aşağıdaki ş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:

ziyaret edin.

Webhook ayarlama

İstek karşılamayı güncelledikten sonra, projenizdeki sahnelerde webhook çağrılarını etkinleştirin. Taşıma aracı, Dialogflow niyetinizin webhook ayarlarını taşır ancak yeniden düzenlenen sipariş karşılama kodunuz ve webhook işlevleriniz değişebileceğinden bu ayarları gözden geçirmeniz gerekir.

Dialogflow'da webhook'lar intent'lerde etkinleştirilir ve sipariş karşılama kodunuz, intent eşleştiğinde yürütülecek işleyicileri ve işlevleri içerir. Actions Builder'da, çağrı amaçları veya sahneleri içinde bir webhook tetiklenebilir. Bu sayede, istek karşılama uç noktanıza bir istek gönderilir. Karşılamanız, istekteki JSON yükünü işleyen webhook işleyicileri içeriyor. Webhook'ları aşağıdaki durumlarda tetikleyebilirsiniz:

  • Çağrı amacı eşleşmesinden sonra
  • Bir sahnenin giriş sahnesinde
  • Bir sahnenin koşul aşamasında bir koşul doğru olarak değerlendirildikten sonra
  • Bir sahnenin slot dosyalama aşaması sırasında
  • Bir 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ının ne zaman ve nerede yapılacağını değiştirebileceğinden görüşme akışınızdaki değişiklikleri dikkate almanız gerekir.

Bir 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. Aşağıdaki durumlardan biri veya daha fazlası için webhook'u etkinleştirebilirsiniz:

    • Girişte
    • Koşul
    • Yuvayı doldurma
    • Kullanıcı niyeti işleme
    • Sistem amacı işleme
  3. Webhook'unuzu arayın seçeneğini işaretleyin.

  4. Karşılama kodunuzda tanımladığınız webhook işleyicisini girin.

  5. Kaydet'i tıklayın.

  6. Webhook çağrınızı ve karşılama değişikliklerini denemek için Test'e gidin.

Sipariş karşılama kodu çeviri haritası

Aşağıdaki tabloda, Dialogflow'un sipariş karşılama kodu söz diziminin Actions Builder koduna nasıl dönüştüğü gösterilmektedir. Yöntemlerin tam listesi için Actions Builder ve SDK referans belgelerine 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ı 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

Ek araçlarla ilgili bilgileri aşağıda bulabilirsiniz: