Migrasi fulfillment

Setelah menyiapkan intent dan scene, Anda harus memperbarui kode fulfillment untuk memperhitungkan perubahan dalam format permintaan dan respons Action Builder. Ini juga merupakan peluang untuk mempertimbangkan penggunaan fitur tambahan Actions Builder. Halaman ini membahas langkah-langkah dan pertimbangan umum, saat memperbarui kode fulfillment Anda.

Pertimbangkan pendekatan pemenuhan pesanan Anda

Kode fulfillment project Anda bergantung pada model percakapan dan fitur platform pengembangan. Actions Builder memperkenalkan model dan fungsi percakapan baru yang mengubah cara Anda membangun percakapan dan kemungkinan akan mengubah cara Anda mendekati penyelesaian proyek. Bagian ini menjelaskan fitur Action Builder yang berbeda dengan Dialogflow, dan bagaimana perbedaan ini mengubah cara Anda menerapkan kode fulfillment Anda.

  • Perubahan pada penerapan percakapan

    • Dialogflow menggunakan alur percakapan berbasis intent-ke-intent, yang didorong secara kontekstual, di mana setiap intent dicocokkan berdasarkan frasa pelatihan dan konteks input/output dari intent sebelumnya.
    • Alur percakapan Action Builder menggunakan adegan sebagai penampung untuk percakapan. Dalam scene, intent tertentu dapat dicocokkan, seperti konteks Dialogflow. Transisi menentukan scene yang menjadi tujuan transisi, berdasarkan intent mana yang cocok.
  • Fungsi webhook yang dapat digunakan kembali

    • Di Dialogflow, pengendali webhook terikat dengan intent individual. Jika logika tambahan diperlukan, Anda harus membuat intent terpisah untuk menangani fungsi baru.
    • Pengendali webhook memiliki nama pengendali kustom di Action Builder. Fitur ini memberi Anda kemampuan untuk memanggil fungsi dari beberapa scene di seluruh project.
  • Cara lain untuk memanggil webhook

    • Satu webhook per pendekatan intent di Dialogflow memerlukan intent tambahan untuk memfasilitasi lebih banyak logika percakapan dalam fulfillment project Anda.
    • Action Builder memungkinkan Anda melakukan panggilan webhook dari beberapa tempat dalam scene: saat enter, berdasarkan kondisi, berdasarkan pengisian slot, serta melalui pencocokan intent kustom dan sistem.

Memperbarui kode fulfillment Anda

Setiap kode fulfillment Action akan berbeda bergantung pada kompleksitas dan tujuan Action, tetapi ada langkah-langkah umum yang harus diambil saat memperbarui kode Anda:

  1. Download dan instal library klien versi terbaru.

    npm install @assistant/conversation
    
  2. Perbarui pernyataan require dalam kode Anda. Contoh:

    const {
      SimpleResponse,
      BasicCard,
      Image,
    } = require('actions-on-google');
    

    Kode di atas diupdate menjadi:

    const {
      conversation,
      Simple,
      Card,
      Image,
    } = require('@assistant/conversation');
    
  3. Faktorkan ulang kode Anda untuk menggunakan metode baru.

    • Pengendali intent: app.intentapp.handle
    • Respons/perintah: conv.askconv.add
    • Kemampuan permukaan/perangkat: conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT')conv.device.capabilities.includes('RICH_RESPONSE')
    • Penyimpanan data: conv.dataconv.session.params
    • Jenis respons:

      • SimpleResponseSimple
      • BasicCardCard
      • SuggestionsSuggestion
    • Parameter intent: conv.parameters[KEY]conv.intent.parameters[KEY].resolved

    • Transisi konteks/adegan: conv.contexts.set(content_name, 5);conv.scene.next.name = 'context_name'

    • Akhiri percakapan: conv.close(response)conv.add.response; conv.scene.next.name = 'actions.page.END_CONVERSATION'

  4. Mengupdate kode respons untuk menggunakan primitif respons baru Builder. Contoh:

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

    Kode di atas diupdate menjadi:

    for (suggestion of ['a', 'b']) {
      conv.add.(new Suggestion({title: suggestion}))
    }
    

Lihat peta terjemahan kode fulfillment di bawah untuk mengetahui daftar lengkap metode.

Gunakan halaman berikut untuk membandingkan payload permintaan dan respons:

Menyiapkan webhook

Setelah memperbarui fulfillment Anda, aktifkan panggilan webhook di seluruh scene dalam project Anda. Meskipun alat migrasi memigrasikan setelan webhook intent Dialogflow, Anda perlu meninjau setelan ini, karena fungsi webhook dan kode fulfillment yang telah difaktorkan ulang dapat berubah.

Di Dialogflow, webhook diaktifkan di intent, dan kode fulfillment Anda menyertakan pengendali dan fungsi untuk dieksekusi, saat intent cocok. Di Action Builder, webhook dapat dipicu dalam scene atau intent pemanggilan, yang mengirimkan permintaan ke endpoint fulfillment Anda. Fulfillment Anda berisi pengendali webhook yang memproses payload JSON dalam permintaan. Anda dapat memicu webhook dalam situasi berikut:

  • Setelah intent pemanggilan cocok
  • Selama adegan berada di panggung
  • Setelah kondisi bernilai benar (true) pada tahap kondisi scene
  • Selama tahap pengajuan slot adegan
  • Setelah pencocokan intent terjadi di tahap input scene

Saat bermigrasi dari Dialogflow ke Action Builder, Anda perlu mempertimbangkan perubahan pada alur percakapan, karena hal ini dapat berubah pada waktu dan tempat Anda melakukan panggilan webhook.

Untuk mengaktifkan panggilan webhook, ikuti langkah-langkah berikut:

  1. Pilih scene yang webhooknya ingin Anda panggil.
  2. Pilih status yang webhooknya ingin Anda aktifkan. Anda dapat mengaktifkan webhook untuk satu atau beberapa status berikut:

    • Saat masuk
    • Kondisi
    • Pengisian slot
    • Penanganan intent pengguna
    • Penanganan intent sistem
  3. Centang opsi Call your webhook.

  4. Masukkan pengendali webhook yang Anda tentukan dalam kode fulfillment.

  5. Klik Simpan.

  6. Buka Test untuk mencoba perubahan fulfillment dan panggilan webhook Anda.

Peta terjemahan kode pemenuhan pesanan

Tabel di bawah menunjukkan bagaimana sintaksis kode fulfillment Dialogflow diterjemahkan menjadi kode Action Builder. Lihat dokumen referensi Actions Builder dan SDK untuk mengetahui daftar lengkap metodenya.

Dialogflow Pembuat Tindakan
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'
Peristiwa Penanganan intent sistem:
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
Respons sederhana prompt -firstSimple
Respons yang beragam prompt -content -card: object -image: object -table: object -media: object -suggestions -link

Anda dapat menemukan informasi terkait alat tambahan di bawah: