Bab 9: Bagaimana untuk membina App Home Google dengan DialogFlow | Penyempurnaan melalui Editor Inline

Kini kami telah menyediakan persekitaran, mewujudkan ejen, niat dan entiti yang diperlukan dan mengujinya. Mari kita pergi ke modul pemenuhan dimana kita akan menggunakan editor sebaris untuk membuat tindak balas yang berkaitan berdasarkan entiti (QuoteType)

Kandungan siri:

Bab 6: Tutorial Aplikasi Laman Utama Google: Gambaran Keseluruhan

Bab 7: Tutorial Aplikasi Laman Utama Google: Reka Bentuk Perbualan

Bab 8: Tutorial Aplikasi Laman Utama Google: Setup Persekitaran

Bab 9: Tutorial Aplikasi Laman Utama Google: Penyempurnaan melalui Editor Dalam Talian

Bab 10: Tutorial Aplikasi Laman Utama Google: Pemenuhan melalui Dataran Tinggi Awan

Bab 11: Tutorial Aplikasi Laman Utama Google: Pemenuhan melalui Webhook

Bab 12: Tutorial Aplikasi Laman Utama Google: App Deployment

Recap dan bahagian mana gambar besar yang kita sedang menangani sekarang.

Langkah 1: Mengaktifkan Pemadanan untuk tujuan MencariQuote.

Langkah 2: - Penyempurnaan melalui editor inline [Dikuasakan oleh fungsi Cloud untuk Firebase]

Keluarkan segalanya dalam editor dalam talian. Mari cuba tulis dari awal satu baris pada satu masa. Tidak perlu takut, tinggal bersama saya.

Di sini pergi. Baris pertama.

'gunakan ketat';

Ketat:

Tujuan "menggunakan ketat" adalah untuk menunjukkan bahawa kod tersebut perlu dilaksanakan dalam "mod ketat". Dengan mod yang ketat, anda tidak boleh, contohnya, menggunakan pembolehubah yang tidak diisytiharkan.

Semua penyemak imbas moden menyokong "menggunakan ketat" kecuali Internet Explorer (IE) 9 dan lebih rendah: Siapa yang menggunakan IE ...

ok bergerak.

fungsi const = memerlukan ('firebase-functions');

Const pada asasnya mentakrifkan sesuatu yang tidak akan berubah dalam program ini selama-lamanya. Kami akan mengimport modul fungsi firebase di sini.

Kemudian beberapa lagi yang masing-masing akan memegang maksud kita. String ini sepadan dengan nama niat.

'gunakan ketat';
fungsi const = memerlukan ('firebase-functions');
const {dialogflow} = requires ('actions-on-google');
const WELCOME_INTENT = 'Selamat Datang Selamat Datang';
const FALLBACK_INTENT = 'Tujuan lalai lalai';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';

...

Sekarang kita akan menyimpan objek dialog aliran dalam sebutan aplikasi yang dipanggil.

const app = dialogflow ();

Seterusnya, kami akan menentukan maksud dan menyuarakan objek "conv" yang akan menggunakan fungsi bertanya untuk bercakap dengan pengguna.

app.intent (WELCOME_INTENT, (conv) => {
    conv.ask ("selamat datang ke Dr.Motivation! Dapatkan petikan mengenai persahabatan atau percintaan atau motivasi");
});

Ingat untuk membolehkan webhook di bawah bahagian pemenuhan dalam "maksud selamat datang lalai".

Begitu juga kita akan menentukan kedua-dua niat lain juga .. jangan bimbang tentang ini yang mudah, kerana matlamat kami adalah untuk membuat pemenuhan ini berjalan tanpa kesilapan terlebih dahulu.

satu untuk maksud jatuh

app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask ("Berhenti bergumam & bersuara");
});

satu untuk tujuan peribadi kami

app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     conv.ask ("Rakan-rakan terapis, kita boleh minum dengan");
});

akhirnya kita akan mengembalikan aplikasi objek dialog semasa pemenuhan dipanggil

exports.dialogflowFirebaseFulfillment = functions.https.onRequest (app);

kod penuh kelihatan seperti ini

'gunakan ketat';
 
fungsi const = memerlukan ('firebase-functions');
const {dialogflow} = requires ('actions-on-google');
const WELCOME_INTENT = 'Selamat Datang Selamat Datang';
const FALLBACK_INTENT = 'Tujuan lalai lalai';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';
const app = dialogflow ();
app.intent (WELCOME_INTENT, (conv) => {
    conv.ask ("selamat datang ke Dr.Motivation! Dapatkan petikan mengenai persahabatan atau percintaan atau motivasi");
});
app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask ("Berhenti bergumam & bersuara");
});
app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     conv.ask ("Rakan-rakan terapis, kita boleh minum dengan");
});
exports.dialogflowFirebaseFulfillment = functions.https.onRequest (app);

Langkah 3: Gunakan fungsi ini

Langkah 4: Uji fungsi

semak tindak balas Pemenuhan dengan mengklik

Mari cuba mundur balik lalai tanpa membolehkan pemenuhan melalui webhook dan dengannya.

Tanpa Webhook Enabled:

Maklumat diagnostik pada dasarnya hanya mempunyai satu respons RAW API

Sekarang, mari kita teruskan dan membolehkan pemenuhan melalui webhook untuk niat mundur .. jika anda belum melakukannya.

pengeluaran:

sekarang bahawa panggilan webhook diaktifkan kita mendapat sambutan yang memuaskan juga.

Langkah 5: Mari tambahkan fungsi lebih kepada kod.

Memandangkan kami mendapat QuoteType sebagai parameter, mari kita cuba dan menggunakannya dalam kod kami melalui mudah Jika kenyataan lain.

mula-mula menentukan entiti QuoteType

const QUOTE_TYPE_ENTITY = 'QuoteType';

kemudian ekstrak nilai parameter, simpannya dalam pembolehubah ... padankan dengan nilai-nilai dan tolak petikan yang berbeza setiap kali.

app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     const quote_type = conv.parameters (QUOTE_TYPE_ENTITY). toLowerCase ();
     jika (quote_type == "motivasi") {
     conv.ask ("Jangan menjadi keldai malas");
     } else if (quote_type == "frienship") {
     conv.ask ("Rakan-rakan terapis, kita boleh minum dengan");
     } lain jika (quote_type == "romantis") {
     conv.ask ("sesuatu yang romantis");
     } else {
         conv.ask ("lepaskan keldai kamu dan kerja bukannya bercakap dengan saya");
     }
});

Uji ia:

Anda juga boleh menyemak konsol firebase untuk log kesalahan.

pergi ke konsol asas api anda .. atau di bawah editor sebaris klik pada pautan

ok .. jadi conv.parameters bukan fungsi tetapi array objek jadi perubahan () ke []

conv.parameters (QUOTE_TYPE_ENTITY)

kepada

conv.parameters [QUOTE_TYPE_ENTITY]

Kod Akhir diberikan di bawah:

'gunakan ketat';
 
fungsi const = memerlukan ('firebase-functions');
const {dialogflow} = requires ('actions-on-google');
const WELCOME_INTENT = 'Selamat Datang Selamat Datang';
const FALLBACK_INTENT = 'Tujuan lalai lalai';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';
const QUOTE_TYPE_ENTITY = 'QuoteType';
const app = dialogflow ();
app.intent (WELCOME_INTENT, (conv) => {
    conv.ask ("selamat datang ke Dr.Motivation! Dapatkan petikan mengenai persahabatan atau percintaan atau motivasi");
});
app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask ("Berhenti bergumam & bersuara");
});
app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     const quote_type = conv.parameters [QUOTE_TYPE_ENTITY] .toLowerCase ();
     jika (quote_type == "motivasi") {
     conv.ask ("Jangan menjadi keldai malas");
     } else if (quote_type == "frienship") {
     conv.ask ("Rakan-rakan terapis, kita boleh minum dengan");
     } lain jika (quote_type == "romantis") {
     conv.ask ("sesuatu yang romantis");
     } else {
         conv.ask ("turun keldai dan kerja anda, bukannya bercakap dengan saya");
     }
});
exports.dialogflowFirebaseFulfillment = functions.https.onRequest (app);

Langkah 6: Menggunakan & Ujian:

Jelas sekali, ini tidak boleh menjadi versi akhir, jika anda perlu membuatnya benar-benar dinamik, anda harus menyambungnya ke pangkalan data untuk menarik data berdasarkan input pengguna.

Dalam bab seterusnya, kami akan menggunakan datastore awan Google yang merupakan jenis pangkalan data untuk menarik data dari mereka dan memberikan sebut harga kepada pengguna kami.

Kisah ini diterbitkan dalam penerbitan keusahawanan terbesar The Startup, Medium diikuti oleh 358,974+ orang.

Langgan untuk menerima cerita teratas kami di sini.