Membuat kueri database

Webhook Anda saat ini menggunakan data yang dikodekan secara permanen dalam fungsi cruisePlanCoverage. Dalam langkah tutorial ini, Anda akan membuat database Spanner, mengisinya dengan tujuan yang dilindungi, dan mengupdate fungsi untuk mengkueri database.

Konfigurasi project

Penting agar agen Dialogflow dan database Anda berada dalam project yang sama. Ini adalah cara termudah agar fungsi Anda memiliki akses yang aman ke database Anda. Selain itu, Anda harus mengaktifkan Spanner API.

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

    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 Google Cloud konsol, 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 region yang sama lokasi 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 akan menampilkan halaman Overview untuk instance yang Anda buat. Google Cloud

Membuat database Spanner

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

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

Membuat tabel untuk database Anda

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

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

    CREATE TABLE Destinations (
      Destination STRING(1024),
      Covered BOOL,
    ) PRIMARY KEY(Destination);
    
  3. Klik Submit. Konsol akan kembali ke halaman Overview database dan menunjukkan bahwa Schema updates sedang berlangsung. Google Cloud 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 Overview database, klik tabel Destinations. Konsol akan menampilkan halaman Schema tabel Destinations. Google Cloud
  2. Di menu navigasi sebelah kiri, klik Data untuk menampilkan halaman Data tabel Destinations.
  3. Klik Insert. Konsol akan menampilkan halaman Query tabel Destinations dengan tab kueri baru yang berisi pernyataan INSERT dan SELECT. Google Cloud 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 Destination. Pastikan tabel berisi data yang diinginkan.

Mengupdate Cloud Function untuk mengkueri 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 dikodekan secara permanen.

Setelah menyiapkan database, update Cloud Function 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 Runtime, build and connections settings.

  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 Next.

  8. Klik Deploy.

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

Menguji agen Anda

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. Saya dapat membantu Anda menyelesaikan pertanyaan terkait penagihan dan paket, memecahkan masalah, serta menambahkan paket perjalanan dan pelayaran. Bagaimana saya dapat membantu Anda hari ini?
2 Saya ingin menambahkan paket pelayaran Izinkan saya memeriksanya untuk Anda. Berapa nomor telepon Anda?
3 123-123-1234 Berapa hari pelayaran Anda?
4 7 Opsi 1 mencakup panggilan dan SMS. Biayanya $[XX]/hari. Info selengkapnya di sini [URL]. Opsi 2 mencakup panggilan, SMS, dan data. Biayanya $[XX]/hari. Info selengkapnya di sini [URL]. Paket pelayaran mana yang ingin Anda tambahkan?
5 Opsi 1 Oke. Saya telah menambahkan paket tersebut ke akun Anda. Saat berlayar, Anda mungkin juga memerlukan perlindungan di darat. Di pelabuhan mana Anda akan berhenti?
6 Italia Dan, berapa hari Anda akan menghabiskan waktu di sana?
7 3 Kabar baik! Italia memiliki perlindungan gratis di darat. Anda sudah siap. Apa ada hal lain yang bisa saya bantu?

Jika Anda memeriksa kode, Italia tidak ada dalam daftar tujuan yang dilindungi yang dikodekan secara permanen. 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 Function Anda.

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

Informasi selengkapnya

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