Membangun aplikasi Google Chat Dialogflow CX yang memahami dan merespons dengan bahasa alami

Halaman ini menjelaskan cara membuat aplikasi Google Chat yang dapat memahami dan merespons dengan bahasa alami menggunakan Dialogflow. Panduan ini menggunakan Dialogflow CX, yang memiliki integrasi langsung dengan Google Chat yang tersedia di Pratinjau Developer. Anda juga dapat menggunakan Dialogflow ES untuk membangun aplikasi Google Chat Dialogflow ES dengan mengikuti panduan Google Chat Dialogflow ES.

Misalnya, pertimbangkan aplikasi Chat yang membantu orang menyewa mobil. Pengguna mungkin menulis, "Saya ingin menyewa mobil". Aplikasi Chat mungkin merespons dengan pertanyaan seperti "Di mana Anda ingin mengambil kendaraan?" yang memulai percakapan mirip manusia dengan pengguna. Aplikasi Chat dapat memahami dan merespons ucapan manusia saat memesan rental mobil.

Ini hanyalah salah satu contoh. Aplikasi Chat Dialogflow berguna dalam semua jenis interaksi. Jika memerlukan ucapan manusia yang alami, aplikasi Chat Dialogflow akan dipanggil. Agen bawaan membantu Anda memulai dengan cepat, dan menunjukkan apa yang dapat dilakukan Dialogflow, seperti:

  • Pesan penerbangan
  • Jadwalkan janji temu dokter
  • Pesan antar makanan
  • Menjawab pertanyaan tentang katalog produk retail, seperti apakah item tersedia dalam warna lain atau tidak
  • Halaman pemilihan agen Dialogflow bawaan.
    Gambar 1. Memilih agen bawaan untuk aplikasi Chat Dialogflow.
  • Menguji agen di Dialogflow CX.
    Gambar 2. Menguji agen di Dialogflow CX untuk memastikan logika dan konfigurasi agen berfungsi sebagaimana mestinya. Diagram menunjukkan serangkaian halaman sesuai topik yang berkaitan dengan langkah-langkah tertentu dalam percakapan, seperti menetapkan lokasi pengambilan dan pengembalian untuk mobil sewaan, dan mengonfigurasi logika yang menghubungkannya. Percakapan diuji dalam simulator.
  • Mengonfigurasi aplikasi Chat Dialogflow.
    Gambar 3. Mengonfigurasi aplikasi Chat untuk memproses respons menggunakan agen Dialogflow CX di halaman konfigurasi Chat API di konsol Google Cloud.
  • Menguji aplikasi Chat Dialogflow CX
    Gambar 4. Melakukan percakapan tentang pemesanan mobil rental dengan aplikasi Chat Dialogflow di Google Chat.

Tujuan

  • Menyiapkan lingkungan Anda.
  • Membuat dan men-deploy agen Dialogflow CX.
  • Buat dan deploy aplikasi Chat yang didukung oleh agen Dialogflow CX.
  • Menguji aplikasi Chat.

Prasyarat

Arsitektur

Diagram berikut menunjukkan arsitektur aplikasi Chat yang di-build dengan Dialogflow:

Arsitektur aplikasi Chat yang diimplementasikan dengan Dialogflow.

Pada diagram sebelumnya, pengguna yang berinteraksi dengan aplikasi Chat Dialogflow memiliki alur informasi berikut:

  1. Pengguna mengirim pesan di Chat ke aplikasi Chat, baik dalam pesan langsung maupun di ruang Chat.
  2. Agen virtual Dialogflow, yang berada di Google Cloud, menerima dan memproses pesan untuk menghasilkan respons.
  3. Secara opsional, dengan menggunakan hook Dialogflow, agen Dialogflow dapat berinteraksi dengan layanan pihak ketiga eksternal, seperti sistem pengelolaan project atau alat penjualan tiket.
  4. Agen Dialogflow mengirimkan respons kembali ke layanan aplikasi Chat di Chat.
  5. Respons akan dikirim ke ruang Chat.

Menyiapkan lingkungan

Sebelum menggunakan Google API, Anda harus mengaktifkannya di project Google Cloud. Anda dapat mengaktifkan satu atau beberapa API dalam satu project Google Cloud.
  1. Di konsol Google Cloud, aktifkan Google Chat API dan Dialogflow API.

    Aktifkan API

  2. Pastikan Anda mengaktifkan API di project Cloud yang benar, lalu klik Next.

  3. Pastikan Anda mengaktifkan API yang benar, lalu klik Enable.

Membuat agen Dialogflow CX

Agen Dialogflow CX adalah agen virtual yang menangani percakapan serentak dengan pengguna akhir Anda. Modul pemahaman bahasa alami yang memahami nuansa bahasa manusia. Dialogflow menerjemahkan teks pengguna akhir selama percakapan menjadi data terstruktur yang dapat dipahami oleh aplikasi dan layanan Anda. Anda mendesain dan membangun agen Dialogflow untuk menangani jenis percakapan yang diperlukan untuk sistem Anda.

Agen Dialogflow seperti agen pusat panggilan manusia. Anda melatih keduanya untuk menangani skenario percakapan yang diharapkan, dan pelatihan Anda tidak perlu terlalu eksplisit.

Berikut cara membuat agen Dialogflow CX:

  1. Pada konsol Dialogflow CX, buka Konsol Dialogflow CX. Klik Menu > Dialogflow CX.

    Buka konsol Dialogflow CX

  2. Pilih project Google Cloud. Untuk menemukan project, Anda mungkin perlu mengklik All, lalu menelusurinya.

  3. Sekarang Anda memiliki opsi untuk memilih agen siap pakai atau membuat agen sendiri. Jika Anda ingin mempelajari penyesuaian agen secara mendetail nanti, pilih salah satu agen bawaan, yang juga berguna untuk mempelajari hal-hal yang dapat dilakukan agen.

    Untuk memilih agen prebuilt, ikuti langkah-langkah berikut:

    1. Klik Use prebuilt agent.
    2. Pilih agen siap pakai. Untuk panduan ini, pilih Perjalanan: rental mobil.

      Agen dinilai sebagai pemula, menengah, atau lanjutan berdasarkan jumlah fitur yang digunakan dan kecanggihan logika percakapannya. Memilih agen perantara atau lanjutan mungkin memerlukan penyesuaian dan setelan khusus agen, termasuk mengaktifkan fitur dan API di Konsol Google Cloud.

    3. Klik Import as agent.

    Untuk membuat agen Anda sendiri, ikuti langkah-langkah berikut:

    1. Klik Buat agen.
    2. Pilih Auto-generate untuk membuat agen penyimpanan data atau pilih Build your own untuk membuat jenis agen lain.

    Untuk panduan terperinci proses pembuatan agen, lihat Membuat agen Dialogflow CX.

  4. Konfigurasi setelan agen dasar:

    1. Di bagian Nama tampilan, masukkan nama tampilan.
    2. Pilih lokasi yang diinginkan. Jika Anda ingin mengubah setelan lokasi lanjutan, klik Edit.
    3. Pilih zona waktu yang Anda inginkan.
    4. Pilih bahasa default untuk agen Anda. Anda tidak dapat mengubah bahasa default untuk agen setelah dibuat.
  5. Klik Create. Dialogflow CX mulai membuat agen, lalu menampilkan alur awal default agen.

  6. Secara opsional, sesuaikan agen. Untuk panduan mendetail tentang proses penyesuaian agen, lihat Membuat agen Dialogflow CX.

  7. Sebagai praktik terbaik, uji agen:

    1. Klik Uji agen.
    2. Pilih Agen pengujian di lingkungan.
    3. Di Lingkungan, pilih Draf.
    4. Dalam Flow, pilih Default Start Flow.
    5. Di Halaman, pilih Halaman Awal.
    6. Di kolom tulis Bicara dengan agen, ketik Hello, lalu tekan Enter. Agen merespons dengan memperkenalkan dirinya sendiri.
    7. Selesaikan pengujian dengan melakukan contoh percakapan uji coba.
  8. Agen Dialogflow CX telah dibuat. Kembali ke konsol Dialogflow CX. Klik Menu > Dialogflow CX.

    Buka konsol Dialogflow CX

  9. Di bagian Agen, klik > Salin nama. Simpan nama ini saat Anda menggunakannya saat mengonfigurasi aplikasi Chat.

Membuat aplikasi Chat dan menghubungkannya dengan agen Dialogflow

Setelah membuat agen Dialogflow CX, ikuti langkah-langkah berikut untuk mengubahnya menjadi aplikasi Chat:

  1. Di konsol Google Cloud, buka Google Chat API. Telusuri "Google Chat API" dan klik Google Chat API, lalu klik Manage.

    Buka Chat API

  2. Klik Configuration, lalu siapkan aplikasi Chat:

    1. Di App name, masukkan Dialogflow App.
    2. Di Avatar URL, masukkan https://developers.google.com/workspace/chat/images/quickstart-app-avatar.png.
    3. Pada Description, masukkan Responds to real human conversation.
    4. Di bagian Functionality, pilih Receive 1:1 messages dan Join spaces and group conversations.
    5. Di bagian Connection settings, pilih Dialogflow.
    6. Di bagian Setelan dialogflow, pilih Dialogflow CX.
    7. Di Agent or Environment resource name, tempel nama agen Dialogflow CX yang Anda salin di akhir Create a Dialogflow CX agent.
    8. Buat aplikasi Chat ini tersedia untuk orang dan grup tertentu di domain Anda, lalu masukkan alamat email Anda.
    9. Di bagian Logs, pilih Log errors to Logging.
  3. Klik Save.

Aplikasi Chat siap menerima dan merespons pesan di Chat.

Menguji aplikasi Chat

Uji aplikasi Chat Dialogflow CX dengan mengirim pesan di Google Chat.

  1. Buka Google Chat menggunakan akun Google Workspace yang Anda berikan saat menambahkan diri Anda sebagai penguji tepercaya.

    Buka Google Chat

  2. Klik Chat baru.
  3. Di kolom Tambahkan 1 orang atau lebih, ketik nama aplikasi Chat Anda.
  4. Pilih aplikasi Chat Anda dari hasil tersebut. Pesan langsung akan terbuka.

  5. Di pesan langsung yang baru dengan aplikasi, ketik Hello, lalu tekan enter.

    Aplikasi Chat Dialogflow merespons dengan memperkenalkan dirinya sendiri.

  6. Selesaikan pengujian dengan mengikuti contoh percakapan uji coba.

Contoh percakapan percobaan

Untuk menguji aplikasi Dialogflow CX Chat di konsol Dialogflow CX atau di Google Chat, lakukan percakapan berikut. Penjelasan ini membantu Anda memahami cara agen Dialogflow CX menafsirkan bahasa alami pengguna dan menghasilkan respons natural language sendiri pada setiap langkah dalam percakapan. Contoh percakapan ini didasarkan pada agen bawaan yang disebut Perjalanan: rental mobil.

Dialog Penjelasan
Pengguna akhir: Halo
Agen: Halo! Saya adalah agen penyewaan mobil virtual. Saya dapat membantu Anda memulai reservasi rental mobil baru. Ada yang bisa saya bantu?
  1. Rute Intent Selamat Datang Default di Alur Mulai Default dipanggil.
  2. Fulfillment untuk pengendali status ini ("Halo! Saya...") akan ditambahkan ke antrean respons.
  3. Agen mengirim antrean respons kepada pengguna akhir.
Pengguna akhir: Saya ingin menyewa mobil.
Agen: Di mana Anda ingin mengambil kendaraannya?
  1. Rute intent car_rental.reservation_create di car_rental.reservation_create cocok.
  2. Sesi akan bertransisi ke halaman Lokasi Pengambilan.
  3. Formulir halaman Lokasi Pengambilan tidak lengkap, sehingga agen menggunakan parameter pickup_location untuk meminta pengguna ("Di mana Anda ingin mengambil..."), yang ditambahkan ke antrean respons.
  4. Agen mengirim antrean respons kepada pengguna akhir.
Pengguna akhir: Las Vegas
Agen: Oke, pengambilan akan dilakukan di Las Vegas.
Agen: Apakah lokasi pengantaran berbeda dengan lokasi penjemputan Anda?
  1. Input pengguna akhir mengisi parameter pickup_location yang diminta oleh agen pada giliran percakapan sebelumnya.
  2. Rute intent car_rental.return_different_location pada Alur Mulai Default cocok.
  3. Rute penyelesaian formulir di halaman Pengambilan Lokasi dievaluasi dan dipanggil. Objek ini memiliki fulfillment ("Ok, pengambilan Anda..."), yang ditambahkan ke antrean respons dengan referensi parameternya di-resolve ke nilai sebenarnya yang disediakan oleh pengguna akhir.
  4. Sesi akan bertransisi ke halaman Konfirmasi Lokasi.
  5. Halaman Confirm Location memiliki fulfillment entri ("Apakah lokasi penurunan Anda berbeda..."), yang ditambahkan ke antrean respons.
  6. Agen mengirim antrean respons kepada pengguna akhir.
Pengguna akhir: Ya. Saya akan menurunkan mobilnya di Surabaya.
Agen: Oke, pengantaran Anda akan ada di Los Angeles.
Agen: Kapan Anda ingin mengambil kendaraannya?
  1. Rute intent car_rental.return_different_location pada Alur Mulai Default cocok.
  2. Sesi beralih ke halaman Lokasi Batalkan.
  3. Input pengguna akhir akan mengisi parameter drop_off_location yang diminta oleh agen pada giliran percakapan sebelumnya.
  4. Rute penyelesaian formulir di halaman Drop Off Location dievaluasi dan dipanggil. Objek ini memiliki fulfillment ("Ok, penurunan Anda..."), yang ditambahkan ke antrean respons.
  5. Sesi beralih ke halaman Durasi Rental.
  6. Halaman Durasi Sewa memiliki nilai formulir yang tidak lengkap, sehingga meminta pengguna untuk memasukkan parameter pickup_date_time ("Tanggal dan waktu mana yang ingin Anda ambil..."), yang ditambahkan ke antrean respons.
  7. Agen mengirim antrean respons kepada pengguna akhir.
Pengguna akhir: Saya ingin mengambil mobil pada 5 Maret pukul 12.00.
Agen: Pada tanggal dan jam berapa Anda ingin menurunkan kendaraan?
  1. Input pengguna akhir mengisi parameter pickup_date_time yang diminta oleh agen pada giliran percakapan sebelumnya.
  2. Halaman Durasi Rental memiliki nilai formulir lain yang tidak ada, sehingga meminta pengguna untuk memasukkan parameter drop_off_date_time ("Tanggal dan waktu berapa Anda ingin turun..."), yang ditambahkan ke antrean respons.
  3. Agen mengirim antrean respons kepada pengguna akhir.
Pengguna akhir: 15 Maret pukul 12.00.
Agen: Jadi, untuk mengonfirmasi:

Anda akan mengambil kendaraan di Las Vegas 05-03-2024 12:00:00 dan mengantarkannya di Los Angeles 15-03-2024 12:00:00

Apakah itu benar?
  1. Input pengguna akhir mengisi parameter drop_off_date_time yang diminta oleh agen pada giliran percakapan sebelumnya.
  2. Sesi akan bertransisi ke halaman Konfirmasi Durasi Rental.
  3. Halaman Konfirmasi Durasi Rental memiliki fulfillment entri ("Jadi untuk mengonfirmasi..."), yang ditambahkan ke antrean respons.
  4. Agen mengirim antrean respons kepada pengguna akhir.
Pengguna akhir: Ya, terima kasih.
Agen: Bagus. Sekarang mari kita pilih kendaraan.
Agen: Apakah Anda menginginkan kendaraan ekonomi atau mewah?
  1. Rute intent small_talk.confirmation.yes di halaman Konfirmasi Durasi Sewa cocok.
  2. Agen mengonfirmasi pilihan pengguna dengan pesan ("Bagus! Sekarang mari kita pilih...") yang ditambahkan ke antrean respons.
  3. Sesi akan bertransisi ke halaman Disambiguasi Kendaraan.
  4. Formulir halaman Disambiguasi Kendaraan tidak lengkap, sehingga agen menggunakan parameter vehicle_type untuk meminta informasi kepada pengguna ("Apakah Anda menginginkan model ekonomi atau mewah..."), yang ditambahkan ke antrean respons.
  5. Agen mengirim antrean respons kepada pengguna akhir.
Pengguna akhir: Ekonomi.
Agen: Mau Mobil Cymbal atau Truk Cymbal?
  1. Rute intent $session.params.vehicle_type="economy_vehicle" cocok.
  2. Sesi akan bertransisi ke halaman Opsi Ekonomi.
  3. Halaman Economy Options memiliki fulfillment entri ("Would you like the..."), yang ditambahkan ke antrean respons.
  4. Agen mengirim antrean respons kepada pengguna akhir.
Pengguna akhir: Truk Cymbal.
Agen: Harga Truk Cymbal adalah $50,33 per hari. Speaker ini berkapasitas 4 orang dan dilengkapi dengan radio AM/FM. Ingin melanjutkan ke pembayaran?
Pengguna akhir: Ya.
  1. Rute intent $session.params.vehicle_type="Cymbal Car" cocok dan parameter vehicle_model diisi.
  2. Sesi akan bertransisi ke halaman Confirm Cymbal Car.
  3. Halaman Confirm Cymbal Car memiliki fulfillment entri ("The Cymbal Car is $50,33 per day..."), yang ditambahkan ke antrean respons.
  4. Agen mengirim antrean respons kepada pengguna akhir.
  5. Respons pengguna cocok dengan rute small_talk.confirmation.yes.
Agen: Jenis kartu apa yang akan Anda gunakan?
Pengguna akhir: Altostrat
Agen: Masukkan nomor kartu.
Pengguna akhir: 1234 1234 1234 1234
Agen: Apa nama pada kartu?
Pengguna akhir: Candra
Agen: Apa alamat penagihannya?
Pengguna akhir: 1800 Amphibious Blvd. Mountain View, CA
Agen: Apa kode pos penagihannya?
Pengguna akhir: 94045
Agen: Anda akan mengambil Mobil Cymbal di Las Vegas, 05-03-2024 12.00.00 dan mengantarnya, 15-03-2024 pukul 12.00.00. Total untuk perjalanan ini adalah $175,38.
Agen: Terima kasih telah menyewa kami. Semoga hari Anda menyenangkan.
  1. Sesi akan bertransisi ke halaman Pembayaran.
  2. Formulir Payment belum lengkap sehingga agen meminta pengguna untuk memasukkan parameter card_type, card_number, billing_name, billing_street_address, dan billing_zip_code ("Apa jenis kartu yang akan..."), yang secara berurutan ditambahkan ke antrean respons dan dikirim saat pengguna merespons. Respons pengguna menetapkan setiap nilai parameter.
  3. Sesi beralih ke halaman Konfirmasi Rental.
  4. Halaman Konfirmasi Rental memiliki pemenuhan pesanan entri ("Oke, pengambilan Anda akan dilakukan..."), yang ditambahkan ke antrean respons.
  5. Agen mengirim antrean respons kepada pengguna akhir.
  6. Sesi akan bertransisi ke halaman Akhiri Sesi.

Mengirim pesan kartu dari Dialogflow

Dialogflow dapat merespons dengan pesan teks atau kartu. Untuk merespons dengan pesan kartu, tentukan pesan tersebut sebagai payload kustom di fulfillment.

JSON berikut menunjukkan cara mengirim pesan kartu sebagai payload kustom dalam fulfillment:

json

{
  'cardsV2': [{
    'cardId': 'createCardMessage',
    'card': {
      'header': {
        'title': 'A card message!',
        'subtitle': 'Sent from Dialogflow',
        'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png',
        'imageType': 'CIRCLE'
      },
      'sections': [
        {
          'widgets': [
            {
              'buttonList': {
                'buttons': [
                  {
                    'text': 'Read the docs!',
                    'onClick': {
                      'openLink': {
                        'url': 'https://developers.google.com/workspace/chat'
                      }
                    }
                  }
                ]
              }
            }
          ]
        }
      ]
    }
  }]
}

Batasan dan pertimbangan

  • Peristiwa interaksi chat memiliki dukungan terbatas dan beberapa pertimbangan:
    • Jenis peristiwa interaksi berikut didukung:
      • MESSAGE
      • ADDED_TO_SPACE
    • Input kueri yang dikirim ke agen Dialogflow sesuai dengan nilai kolom argumentText dalam pesan Chat. Jika pesan menyertakan perintah garis miring, nilai kolom text akan digunakan.
    • Payload JSON lengkap dari setiap peristiwa interaksi Chat dikirim ke Dialogflow sebagai payload kustom di parameter kueri, dan dapat diakses menggunakan Webflow Dialogflow dengan membuat kueri nilai kolom WebhookRequest.payload.
  • Perintah garis miring memiliki dukungan terbatas:
    • Perintah garis miring yang membuka dialog tidak didukung oleh aplikasi Dialogflow Chat.
    • Saat aplikasi Chat Dialogflow menerima pesan dengan perintah garis miring, input kueri hanya berisi nilai kolom text. Kolom text dimulai dengan nama perintah garis miring (misalnya, /command), yang dapat Anda gunakan untuk mengonfigurasi intent agen Dialogflow untuk mendeteksi perintah garis miring.
    • Jika agen Dialogflow perlu memproses payload JSON peristiwa interaksi Chat perintah garis miring, agen tersebut dapat melakukannya dengan menggunakan webhook Dialogflow untuk memeriksa payload kustom dalam parameter kueri.
  • Pratinjau link tidak didukung.
  • Jika agen Dialogflow hanya merespons dengan satu pesan, pesan akan dikirim ke Google Chat secara sinkron. Jika agen Dialogflow merespons dengan beberapa pesan, semua pesan akan dikirim ke Chat secara asinkron dengan memanggil metode create pada resource spaces.messages di Chat API satu kali untuk setiap pesan.

Memecahkan masalah

Saat aplikasi atau kartu Google Chat menampilkan error, antarmuka Chat akan menampilkan pesan yang menyatakan "Terjadi masalah". atau "Tidak dapat memproses permintaan Anda". Terkadang UI Chat tidak menampilkan pesan error apa pun, tetapi aplikasi atau kartu Chat memberikan hasil yang tidak diharapkan; misalnya, pesan kartu mungkin tidak muncul.

Meskipun pesan error mungkin tidak ditampilkan di UI Chat, pesan error deskriptif dan data log tersedia untuk membantu Anda memperbaiki error saat logging error untuk aplikasi Chat diaktifkan. Untuk mendapatkan bantuan dalam melihat, men-debug, dan memperbaiki error, lihat Memecahkan masalah dan memperbaiki error Google Chat.

Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, sebaiknya hapus project Cloud.

  1. Pada Konsol Google Cloud, buka halaman Kelola resource Klik Menu > IAM & Admin > Manage Resources.

    Buka Resource Manager

  2. Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Delete .
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
  • Dialogflow CX menggunakan pendekatan state machine terhadap desain agen Dialogflow, yang memberi Anda kontrol yang jelas dan eksplisit atas percakapan, pengalaman pengguna akhir yang lebih baik, dan alur kerja pengembangan yang lebih baik. Saat membangun aplikasi Chat Dialogflow, sebaiknya gunakan Dialogflow CX.
  • Dialogflow ES adalah cara lain untuk menggunakan Dialogflow dengan aplikasi Chat.