Membuat kueri database

Webhook Anda saat ini menggunakan data hardcode dalam fungsi cruisePlanCoverage. Pada langkah tutorial ini, Anda akan membuat database Spanner, mengisinya dengan tujuan yang tercakup, dan memperbarui fungsi untuk membuat kueri database.

Konfigurasi project

Pastikan agen Dialogflow dan database berada di project yang sama. Ini adalah cara termudah bagi fungsi Anda untuk memiliki akses yang aman ke database. Selain itu, Anda harus mengaktifkan Spanner API.

  1. Sebelum membuat database, pilih project Anda dari konsol Google Cloud.

    Buka pemilih project

  2. Aktifkan Spanner API untuk project.

    Mengaktifkan Spanner API

Membuat instance Spanner

Saat pertama kali menggunakan Spanner, Anda harus membuat instance, yang merupakan alokasi resource yang digunakan oleh database Spanner dalam instance tersebut.

  1. Di konsol Google Cloud, buka halaman Spanner Instances.

    Buka instance Spanner

  2. Klik Create instance.

  3. Untuk nama instance, masukkan Tutorial Instance.

  4. ID instance akan otomatis dimasukkan berdasarkan nama instance.

  5. Di Choose your configuration, pertahankan opsi default Regional dan pilih location region yang sama dengan yang Anda pilih saat membuat fungsi.

  6. Di Allocate compute capacity, masukkan 100 unit pemrosesan. Hal ini memberikan kapasitas minimal untuk tutorial.

  7. Klik Create. Konsol Google Cloud akan menampilkan halaman Ringkasan untuk instance yang Anda buat.

Membuat database Spanner

Setelah memiliki instance, Anda perlu membuat database. Untuk membuat database:

  1. Di halaman Ringkasan instance, klik Buat database.
  2. Untuk nama database, masukkan tutorial-database.
  3. Pilih dialek database Google Standard SQL.
  4. Klik Create. Konsol Google Cloud akan menampilkan halaman Ringkasan untuk database yang Anda buat.

Membuat tabel untuk database Anda

Setelah memiliki database, Anda perlu membuat tabel untuk database tersebut. Untuk membuat tabel:

  1. Di bagian Tables pada halaman Overview database, klik Create table.
  2. Di halaman Tulis pernyataan DDL, masukkan:

    CREATE TABLE Destinations (
      Destination STRING(1024),
      Covered BOOL,
    ) PRIMARY KEY(Destination);
    
  3. Klik Kirim. Konsol Google Cloud akan kembali ke halaman Ringkasan database dan menunjukkan bahwa Pembaruan skema sedang berlangsung. Tunggu hingga update selesai.

Menyisipkan data ke dalam tabel

Setelah database memiliki tabel, Anda perlu menambahkan data ke tabel. Untuk menambahkan data:

  1. Dalam daftar tabel di halaman Ringkasan database, klik tabel Tujuan. Konsol Google Cloud menampilkan halaman Skema tabel Tujuan.
  2. Di menu navigasi sebelah kiri, klik Data untuk menampilkan halaman Data tabel Tujuan.
  3. Klik Sisipkan. Konsol Google Cloud menampilkan halaman Kueri tabel Tujuan dengan tab kueri baru yang berisi pernyataan INSERT dan SELECT. Ganti pernyataan tersebut dengan pernyataan berikut:

    INSERT INTO Destinations (Destination, Covered)
    VALUES('anguilla', TRUE),
          ('canada', TRUE),
          ('china', TRUE),
          ('italy', TRUE),
          ('mexico', TRUE),
          ('spain', FALSE);
    
  4. Klik Run.

  5. Di menu navigasi sebelah kiri, klik Data lagi untuk menampilkan data tabel Tujuan. Pastikan tabel berisi data yang diinginkan.

Memperbarui Cloud Function untuk membuat kueri database

Fungsi cruisePlanCoverage dalam kode webhook memeriksa apakah variabel lingkungan tertentu ditetapkan dengan informasi untuk terhubung ke database. Jika variabel lingkungan ini tidak ditetapkan, fungsi akan menggunakan daftar tujuan yang di-hardcode.

Setelah menyiapkan database, update Cloud Functions untuk menetapkan variabel lingkungan yang diperlukan:

  1. Buka halaman ringkasan Cloud Functions.

    Buka ringkasan Cloud Functions

  2. Klik fungsi tutorial-telecommunications-webhook untuk membuka halaman detailnya.

  3. Klik Edit.

  4. Buka bagian Setelan runtime, build, dan koneksi.

  5. Pilih tab Runtime.

  6. Tambahkan variabel berikut di bagian Variabel lingkungan runtime:

    • PROJECT_ID: project ID Anda
    • SPANNER_INSTANCE_ID: ID instance Spanner Anda (mungkin tutorial-instance)
    • SPANNER_DATABASE_ID: ID database spanner Anda (mungkin tutorial-database)
  7. Klik Berikutnya.

  8. Klik Deploy.

  9. Tunggu hingga indikator status menunjukkan bahwa fungsi tersebut telah berhasil di-deploy.

Menguji agen

Agen Anda kini siap untuk dicoba. Klik tombol Test Agent dari konsol Dialogflow untuk membuka simulator. Coba lakukan percakapan berikut dengan agen:

Giliran percakapan Anda Agen
1 Halo Halo! Saya adalah agen telekomunikasi virtual. Kami dapat membantu Anda menyelesaikan pertanyaan terkait penagihan dan rencana, memecahkan masalah, serta menambahkan rencana perjalanan dan pelayaran. Ada yang bisa kami bantu?
2 Saya ingin menambahkan paket pelayaran Izinkan kami memeriksanya. Berapa nomor telepon Anda yang terdaftar di kami?
3 123-123-1234 Berapa lama pelayaran Anda?
4 7 Opsi 1 mencakup menelepon dan SMS. Biayanya $[XX]/hari. Info selengkapnya di sini [URL]. Opsi 2 mencakup menelepon, SMS, dan data. Biayanya $[XX]/hari. Info selengkapnya di sini [URL]. Paket kapal pesiar mana yang ingin Anda tambahkan?
5 Opsi 1 Oke. Kami telah menambahkan paket tersebut ke akun Anda. Saat berlayar, Anda mungkin juga memerlukan cakupan di darat. Di pelabuhan mana Anda akan berhenti?
6 Italia Dan, berapa hari Anda akan berada di sana?
7 3 Kabar baik! Italia memiliki cakupan gratis di darat. Anda sudah siap. Apakah ada hal lain yang dapat saya bantu hari ini?

Jika Anda memeriksa kode, Italia tidak ada dalam daftar hardcode tujuan yang tercakup. Artinya, webhook Anda telah berhasil terhubung ke database, yang mencakup Italia.

Pemecahan masalah

Kode webhook menyertakan pernyataan logging. Jika Anda mengalami masalah, coba lihat log untuk Cloud Functions Anda.

Jika fungsi Anda tidak terhubung ke database, dan Anda melihat error izin dalam log, Anda mungkin perlu memperbaiki peran untuk akun layanan default yang digunakan oleh fungsi Anda. Akun layanan ini memiliki format PROJECT_ID@. Anda dapat memperbaikinya dengan salah satu cara berikut:

Informasi selengkapnya

Untuk informasi selengkapnya tentang langkah-langkah di atas, lihat: