Panduan memulai: Fulfillment

Panduan ini menunjukkan cara mengintegrasikan agen dengan layanan Anda menggunakan fulfillment. Dengan mengintegrasikan layanan, Anda dapat mengambil tindakan berdasarkan ekspresi pengguna akhir dan mengirim respons dinamis kembali ke pengguna akhir.

Sebelum memulai

Jika tidak berencana menggunakan fulfillment, Anda dapat melewati panduan memulai ini.

Langkah-langkah ini menggunakan Cloud Functions dan mengasumsikan pengetahuan dasar Node.js. Jika ingin membuat fulfillment menggunakan server Anda sendiri atau bahasa lain, lihat dokumentasi fulfillment yang lebih mendetail.

Anda harus melakukan hal berikut sebelum membaca panduan ini:

  1. Baca Dasar-dasar Dialogflow.
  2. Lakukan langkah-langkah penyiapan.
  3. Lakukan langkah-langkah dalam panduan memulai Membangun agen. Langkah-langkah di bawah ini akan dilanjutkan dengan agen yang sama. Jika tidak lagi memiliki agen tersebut, Anda dapat mendownload build-agent-quickstart.zip dan mengimpor file.

Editor inline

Konsol Dialogflow memiliki editor kode bawaan, yang disebut editor inline yang dapat Anda gunakan untuk membuat kode fulfillment dan men-deploy kode ke Cloud Functions. Cloud Functions memiliki biaya terkait, tetapi layanan ini tersedia tanpa biaya hingga jumlah pemanggilan bulanan yang signifikan. Perhatikan bahwa Anda tetap harus mendaftar dan memberikan akun penagihan yang valid. Batalkan kapan saja.

Saat Anda pertama kali mengaktifkan editor inline, kode fulfillment Node.js akan diisi otomatis dengan pengendali default untuk intent default yang disertakan bagi semua agen. Kode tersebut juga berisi komentar petunjuk guna menambahkan pengendali untuk intent yang ditentukan developer.

Editor inline ditujukan untuk pengujian fulfillment dan pembuatan prototipe yang sederhana. Setelah siap membangun aplikasi produksi, Anda harus membuat layanan webhook.

Mengaktifkan dan men-deploy fulfillment dengan Editor Inline

Untuk mengaktifkan dan men-deploy kode fulfillment default menggunakan Inline Editor:

  1. Klik Fulfillment di menu sidebar kiri.
  2. Alihkan Editor Inline ke Diaktifkan.
  3. Jika tidak mengaktifkan penagihan pada langkah-langkah penyiapan, Anda akan diminta untuk mengaktifkan penagihan sekarang. Cloud Functions memiliki biaya terkait, tetapi layanan ini tersedia tanpa biaya hingga jumlah pemanggilan bulanan yang signifikan. Perhatikan bahwa Anda tetap harus mendaftar dan memberikan akun penagihan. Batalkan kapan saja.
  4. Klik Deploy di bagian bawah formulir, dan tunggu hingga dialog menunjukkan bahwa ia telah di-deploy.

Untuk setiap intent yang memerlukan fulfillment, Anda harus mengaktifkan fulfillment untuk intent tersebut. Untuk mengaktifkan fulfillment Intent Selamat Datang Default:

  1. Klik Intent di menu sidebar kiri.
  2. Klik Default Welcome Intent.
  3. Scroll ke bawah ke bagian Fulfillment, lalu aktifkan Aktifkan panggilan webhook untuk intent ini.

  4. Klik tombol Save dan tunggu hingga dialog Agent Training menunjukkan bahwa pelatihan telah selesai.

Sekarang Anda dapat menguji fulfillment Anda di simulator. Masukkan Hi di simulator, dan simulator akan merespons dengan Welcome to my agent!. Respons ini dikirim dari webhook fulfillment yang baru saja Anda deploy. Secara khusus, responsnya berasal dari kode berikut:

function welcome(agent) {
  agent.add(`Welcome to my agent!`);
}

Membuat pengendali fulfillment kustom

Langkah-langkah di atas menggunakan pengendali yang disediakan oleh kode editor inline default. Untuk membuat pengendali kustom:

  1. Aktifkan fulfillment untuk intent get-agent-name yang Anda buat di langkah sebelumnya.
  2. Klik Fulfillment di menu sidebar kiri, dan periksa kode di editor inline.
  3. Cari baris ini:

    exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
    

    Fungsi onRequest menangani semua permintaan dari Dialogflow. Dalam isi fungsi ini, fungsi pengendali tertentu telah ditentukan. Fungsi pengendali ini dipanggil saat intent terkait cocok. Misalnya, fungsi yang digunakan di bagian sebelumnya adalah function welcome(agent).

  4. Di bawah pengendali yang ada, tambahkan fungsi ini untuk intent get-agent-name:

    function getAgentNameHandler(agent) {
      agent.add('From fulfillment: My name is Dialogflow!');
    }
    
  5. Di bawah definisi fungsi pengendali, ada panggilan intentMap.set(). Panggilan ini mengaitkan pengendali tertentu dengan intent berdasarkan nama. Misalnya, intentMap.set('Default Welcome Intent', welcome) mengaitkan pengendali welcome dengan intent yang bernama Default Welcome Intent.

  6. Di bawah panggilan intentMap.set yang ada, tambahkan baris berikut untuk intent get-agent-name:

    intentMap.set('get-agent-name', getAgentNameHandler);
    
  7. Klik Deploy di bagian bawah formulir.

  8. Masukkan What's your name? di simulator. Respons From fulfillment: My name is Dialogflow! dikirim dari pengendali baru.

Nilai parameter akses

Pada langkah sebelumnya, Anda membuat intent set-language untuk mengidentifikasi bahasa manusia dan pemrograman. Intent menggunakan parameter language dan language-programming. Di bagian ini, Anda akan mengakses nilai untuk parameter ini di pengendali fulfillment Anda.

Untuk menambahkan pengendali:

  1. Aktifkan fulfillment untuk intent set-language.
  2. Klik Fulfillment di menu sidebar kiri.
  3. Serupa dengan langkah-langkah di atas, tambahkan pengendali dan panggilan intentMap berikut:

    function languageHandler(agent) {
        const language = agent.parameters.language;
        const programmingLanguage = agent.parameters['language-programming'];
        if (language) {
            agent.add(`From fulfillment: Wow! I didn't know you knew ${language}`);
        } else if (programmingLanguage) {
            agent.add(`From fulfillment: ${programmingLanguage} is cool`);
        } else {
            agent.add(`From fulfillment: What language do you know?`);
        }
    }
    
    intentMap.set('set-language', languageHandler);
    
  4. Klik Deploy.

Pengendali ini mengambil parameter language dan language-programming, lalu menyimpannya dalam variabel. Metode tersebut akan mengambil nilai ini dari atribut agent.parameters, yang merupakan objek yang berisi semua nama dan nilai parameter yang ditentukan pengguna akhir dalam permintaan mereka.

Untuk mencobanya, masukkan I know how to speak German di simulator.