Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Webhook Anda saat ini menggunakan data hardcode dalam
fungsi accountBalanceCheck.
Pada langkah tutorial ini,
Anda akan membuat database
Spanner, mengisinya dengan data saldo,
dan memperbarui fungsi untuk membuat kueri database.
Konfigurasi project
Pastikan agen Dialogflow dan database Anda 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.
Sebelum membuat database,
pilih project Anda dari konsol Google Cloud .
Saat pertama kali menggunakan Spanner,
Anda harus membuat instance,
yang merupakan alokasi resource
yang digunakan oleh database Spanner dalam instance tersebut.
Di Google Cloud console, buka halaman Spanner Instances.
Klik Kirim.
Google Cloud Konsol akan kembali ke halaman Ringkasan database dan menunjukkan bahwa Pembaruan skema sedang berlangsung.
Tunggu hingga update selesai.
Di bagian Tables pada halaman Overview database,
klik Create table.
Klik Kirim.
Google Cloud Konsol 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:
Dalam daftar tabel di halaman Ringkasan database,
klik tabel Pemeriksaan.
Konsol Google Cloud akan menampilkan halaman Schema tabel.
Di menu navigasi sebelah kiri,
klik Data untuk menampilkan halaman Data tabel.
Klik Sisipkan.
Konsol Google Cloud menampilkan halaman Kueri tabel dengan tab kueri baru yang berisi pernyataan INSERT dan SELECT.
Ganti pernyataan tersebut dengan pernyataan berikut:
Di menu navigasi sebelah kiri,
klik Data lagi untuk menampilkan data tabel.
Pastikan tabel berisi data yang diinginkan.
Klik link tutorial-database: Overview untuk kembali ke halaman ringkasan database.
Dalam daftar tabel di halaman Ringkasan database,
klik tabel Savings.
Konsol Google Cloud akan menampilkan halaman Schema tabel.
Di menu navigasi sebelah kiri,
klik Data untuk menampilkan halaman Data tabel.
Klik Sisipkan.
Konsol Google Cloud menampilkan halaman Kueri tabel dengan tab kueri baru yang berisi pernyataan INSERT dan SELECT.
Ganti pernyataan tersebut dengan pernyataan berikut:
Di menu navigasi sebelah kiri,
klik Data lagi untuk menampilkan data tabel.
Pastikan tabel berisi data yang diinginkan.
Memperbarui Cloud Function untuk membuat kueri database
Fungsi accountBalanceCheck dalam kode webhook
memeriksa apakah variabel lingkungan tertentu ditetapkan
dengan informasi untuk terhubung ke database.
Jika variabel lingkungan ini tidak ditetapkan, fungsi akan menggunakan saldo akun yang di-hardcode.
Setelah menyiapkan database, update Cloud Functions untuk menetapkan variabel lingkungan yang diperlukan:
Klik fungsi tutorial-banking-webhook untuk membuka halaman detailnya.
Klik Edit.
Buka bagian Setelan runtime, build, dan koneksi.
Pilih tab Runtime.
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)
Klik Berikutnya.
Klik Deploy.
Tunggu hingga indikator status menunjukkan bahwa fungsi 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, terima kasih telah memilih ACME Bank.
2
Saya ingin mengetahui saldo akun saya
Untuk akun mana Anda ingin mengetahui saldo: tabungan atau giro?
3
Giro
Berikut saldo terbaru Anda: Rp100.000
Jika Anda memeriksa kode,
$10 bukan nilai hardcode.
Artinya, webhook Anda berhasil terhubung ke database,
yang memiliki saldo $10.
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 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:
Jika akun layanan default ditampilkan di halaman utama IAM, ubah izin untuk akun layanan.
Peran Editor akan berfungsi, tetapi Anda mungkin menginginkan peran yang lebih terperinci dalam skenario produksi.
Jika akun layanan default tidak ditampilkan di halaman utama IAM,
berikan peran yang diperlukan
dengan menambahkan akun layanan sebagai akun utama baru.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-09-04 UTC."],[[["\u003cp\u003eThis tutorial guides you through replacing hardcoded data in a webhook's \u003ccode\u003eaccountBalanceCheck\u003c/code\u003e function with a Spanner database.\u003c/p\u003e\n"],["\u003cp\u003eYou will learn how to create a Spanner instance and database, and populate it with account balance data in \u003ccode\u003eChecking\u003c/code\u003e and \u003ccode\u003eSavings\u003c/code\u003e tables.\u003c/p\u003e\n"],["\u003cp\u003eThe process includes enabling the Spanner API, setting up project configurations, defining the database schema with tables, and inserting data into those tables.\u003c/p\u003e\n"],["\u003cp\u003eThe final steps cover updating the Cloud Function's runtime environment variables to connect to the newly created database and deploying these changes.\u003c/p\u003e\n"],["\u003cp\u003eAfter deployment, the tutorial provides instructions to test your agent and details on troubleshooting connection or permission errors using the function's logs and the IAM page.\u003c/p\u003e\n"]]],[],null,["# Query a database\n\nYour webhook currently uses hardcoded data in the\n`accountBalanceCheck` function.\nIn this step of the tutorial,\nyou will create a\n[Spanner](/spanner/docs)\ndatabase, populate it with balance data,\nand update your function to query the database.\n\nProject configuration\n---------------------\n\nIt is important that your Dialogflow agent and the database\nare both in the same project.\nThis is the easiest way for your function to have\nsecure access to your database.\nAlso, you must enable the Spanner API.\n\n1. Before creating the database,\n select your project from the Google Cloud console.\n\n [Go to project selector](https://console.cloud.google.com/projectselector2/home/dashboard)\n2. Enable the Spanner API for the project.\n\n [Enable the Spanner API](https://console.cloud.google.com/flows/enableapi?apiid=spanner.googleapis.com)\n\nCreate a Spanner instance\n-------------------------\n\nWhen you first use Spanner,\nyou must create an instance,\nwhich is an allocation of resources\nthat are used by Spanner databases in that instance.\n\n1. In the Google Cloud console, go to the **Spanner Instances** page.\n\n [Go to Spanner instances](https://console.cloud.google.com/spanner/instances)\n2. Click **Create instance**.\n\n3. For the instance name, enter **Tutorial Instance**.\n\n4. The instance ID is automatically entered based on the instance name.\n\n5. In **Choose your configuration** ,\n retain the default option **Regional** and select the same region\n [location](/dialogflow/es/docs/how/region)\n that you chose when creating the function.\n\n6. In **Allocate compute capacity**,\n enter 100 processing units.\n This provides a minimal capacity for the tutorial.\n\n7. Click **Create** .\n The Google Cloud console displays the **Overview** page for the instance\n you created.\n\nCreate a Spanner database\n-------------------------\n\nNow that you have an instance,\nyou need to create a database.\nTo create a database:\n\n1. In the instance **Overview** page, click **Create database**.\n2. For the database name, enter **tutorial-database**.\n3. Select the **Google Standard SQL** database dialect.\n4. Click **Create** . The Google Cloud console displays the **Overview** page for the database you created.\n\nCreate tables for your database\n-------------------------------\n\nNow that you have a database,\nyou need to create tables for the database.\nTo create tables:\n\n1. In the Tables section of the database **Overview** page, click **Create table**.\n2. In the **Write DDL statements** page, enter:\n\n CREATE TABLE Checking (\n AccountId INT64,\n Balance INT64,\n ) PRIMARY KEY(AccountId);\n\n3. Click **Submit** .\n The Google Cloud console returns to the database **Overview** page and\n shows that **Schema updates** are underway.\n Wait until the update is complete.\n\n4. In the Tables section of the database **Overview** page,\n click **Create table**.\n\n5. In the **Write DDL statements** page, enter:\n\n CREATE TABLE Savings (\n AccountId INT64,\n Balance INT64,\n ) PRIMARY KEY(AccountId);\n\n6. Click **Submit** .\n The Google Cloud console returns to the database **Overview** page and\n shows that **Schema updates** are underway.\n Wait until the update is complete.\n\nInsert data into your tables\n----------------------------\n\nNow that your database has tables,\nyou need to add data to the tables.\nTo add data:\n\n1. In the list of tables on the database **Overview** page, click the Checking table. The Google Cloud console displays the table's **Schema** page.\n2. In the left navigation menu, click **Data** to display the table's **Data** page.\n3. Click **Insert** .\n The Google Cloud console displays the table's **Query** page with a\n new query tab that contains `INSERT` and `SELECT` statements.\n Overwrite those statements with the following:\n\n INSERT INTO Checking (AccountId, Balance)\n VALUES(1, 1000),\n (2, 2000);\n\n4. Click **Run**.\n\n5. In the left navigation menu,\n click **Data** again to display the table's data.\n Confirm that the table contains the desired data.\n\n6. Click the **tutorial-database: Overview** link\n to return to the database overview page.\n\n7. In the list of tables on the database **Overview** page,\n click the Savings table.\n The Google Cloud console displays the table's **Schema** page.\n\n8. In the left navigation menu,\n click **Data** to display the table's **Data** page.\n\n9. Click **Insert** .\n The Google Cloud console displays the table's **Query** page with a\n new query tab that contains `INSERT` and `SELECT` statements.\n Overwrite those statements with the following:\n\n INSERT INTO Savings (AccountId, Balance)\n VALUES(1, 10000),\n (2, 20000);\n\n10. Click **Run**.\n\n11. In the left navigation menu,\n click **Data** again to display the table's data.\n Confirm that the table contains the desired data.\n\nUpdate the Cloud Function to query the database\n-----------------------------------------------\n\nThe `accountBalanceCheck` function in the webhook code\nchecks whether specific environment variables are set\nwith information for connecting to the database.\nIf these environment variables are not set,\nthe function uses a hardcoded account balance.\n\nNow that you have a database set up,\nupdate your Cloud Function to set required environment variables:\n\n1. Open the Cloud Functions overview page.\n\n [Go to Cloud Functions overview](https://console.cloud.google.com/functions/list)\n2. Click the tutorial-banking-webhook function to go to its details page.\n\n3. Click **Edit**.\n\n4. Open the **Runtime, build and connections settings** section.\n\n5. Select the **Runtime** tab.\n\n6. Add the following variables in the Runtime environment variables section:\n\n - `PROJECT_ID`: your project ID\n - `SPANNER_INSTANCE_ID`: your Spanner instance ID (probably `tutorial-instance`)\n - `SPANNER_DATABASE_ID`: your spanner database ID (probably `tutorial-database`)\n7. Click **Next**.\n\n8. Click **Deploy**.\n\n9. Wait until the status indicator shows that the function\n has successfully deployed.\n\nTest your agent\n---------------\n\nYour agent is now ready to try.\nClick the **Test Agent** button from the Dialogflow console\nto open the simulator.\nAttempt to have the following conversation with the agent:\n\nIf you examine the code,\n$10 is not the hardcoded value.\nThis means that your webhook has successfully connected to the database,\nwhich does have a balance of $10.\n\nTroubleshooting\n---------------\n\nThe webhook code includes logging statements.\nIf you are having issues, try viewing the logs for your Cloud Function.\n\nIf your function is not connecting to the database,\nand you see a permission error in the logs,\nyou may need to fix the role for the default service account\nused by your function.\nThis service account is of the form\n\u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e`@appspot.gserviceaccount.com`.\nYou can fix this in one of the following ways:\n\n- If the default service account is shown on the IAM main page,\n [change permissions for the service account](/functions/docs/securing/function-identity#default).\n The *Editor* role will work,\n but you may want a more granular role in a production scenario.\n\n [Go to the IAM main page](https://console.cloud.google.com/iam-admin/iam)\n- If the a default service account is not shown on the IAM main page,\n [grant the required role](/iam/docs/grant-role-console#grant_an_iam_role)\n by adding the service account as a new principal.\n\n- Alternatively, you can\n [use a service account that you create](/functions/docs/securing/function-identity#individual).\n\nMore information\n----------------\n\nFor more information about the steps above, see:\n\n- [Using Cloud Spanner with Cloud Functions](/functions/docs/tutorials/use-cloud-spanner)\n- [Create and query a database by using the Google Cloud console](/spanner/docs/create-query-database-console)\n- [Google Standard SQL data definition language](/spanner/docs/reference/standard-sql/data-definition-language)\n- [Google Standard SQL data manipulation language](/spanner/docs/reference/standard-sql/dml-syntax)"]]