Panduan memulai: Fulfillment

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

Sebelum memulai

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

Langkah-langkah ini menggunakan Cloud Functions dan mengasumsikan pengetahuan dasar Node.js. Jika Anda ingin membuat pemenuhan menggunakan server Anda sendiri atau bahasa lain, lihat dokumentasi pemenuhan 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 di panduan memulai cepat Membangun agen. Langkah-langkah di bawah ini akan terus berfungsi di agen yang sama. Jika Anda 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 sejumlah besar pemanggilan bulanan. Perhatikan bahwa Anda tetap harus mendaftar dan memberikan akun penagihan yang valid. Batalkan kapan saja.

Saat Anda pertama kali mengaktifkan editor inline, kode pemenuhan Node.js akan diisi otomatis dengan handler default untuk intent default yang disertakan untuk semua agen. Kode ini juga memiliki petunjuk yang diberi komentar untuk menambahkan handler bagi maksud yang ditentukan developer.

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

Mengaktifkan dan men-deploy fulfillment dengan Editor Inline

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

  1. Klik Pemenuhan di menu sidebar kiri.
  2. Alihkan Inline Editor ke Enabled.
  3. Jika Anda tidak mengaktifkan penagihan di langkah-langkah penyiapan, Anda akan diminta untuk mengaktifkan penagihan sekarang. Cloud Functions memiliki biaya terkait, tetapi layanan ini tersedia tanpa biaya hingga sejumlah besar pemanggilan bulanan. 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 fungsi telah di-deploy.

Untuk setiap maksud yang memerlukan pemenuhan, Anda harus mengaktifkan pemenuhan untuk maksud tersebut. Untuk mengaktifkan pemenuhan untuk Maksud Selamat Datang Default:

  1. Klik Maksud di menu sidebar kiri.
  2. Klik Default Welcome Intent.
  3. Scroll ke bawah ke bagian Fulfillment dan aktifkan Enable webhook call for this intent.

  4. Klik tombol Simpan dan tunggu hingga dialog Pelatihan Agen menunjukkan bahwa pelatihan telah selesai.

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

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

Membuat handler pemenuhan kustom

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

  1. Aktifkan pemenuhan untuk intent get-agent-name yang Anda buat pada langkah sebelumnya.
  2. Klik Pemenuhan di menu sidebar kiri, lalu periksa kode di editor inline.
  3. Temukan baris ini:

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

    Fungsi onRequest menangani semua permintaan dari Dialogflow. Dalam isi fungsi ini, fungsi handler tertentu ditentukan. Fungsi handler 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 handler tertentu dengan maksud berdasarkan nama. Misalnya, intentMap.set('Default Welcome Intent', welcome) mengaitkan handler welcome dengan intent bernama Default Welcome Intent.

  6. Di bawah panggilan intentMap.set yang ada, tambahkan baris ini 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 Anda.

Mengakses nilai parameter

Pada langkah sebelumnya, Anda telah membuat maksud set-language untuk mengidentifikasi bahasa manusia dan bahasa pemrograman. Maksud menggunakan parameter language dan language-programming. Di bagian ini, Anda mengakses nilai untuk parameter ini di handler pemenuhan.

Untuk menambahkan pengendali:

  1. Aktifkan pemenuhan untuk intent set-language.
  2. Klik Pemenuhan di menu sidebar kiri.
  3. Mirip 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.

Handler ini mengambil parameter language dan language-programming serta menyimpannya dalam variabel. Tindakan ini mengambil nilai tersebut dari atribut agent.parameters, yang merupakan objek yang berisi semua nama dan nilai parameter yang ditentukan pengguna akhir dalam permintaannya.

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