Actualmente, tu webhook usa datos codificados en la
función accountBalanceCheck
.
En este paso del instructivo,
crearás un
Spanner
de datos, propagarla con datos de saldo,
y actualiza tu función para consultar la base de datos.
Configuración del proyecto
Es importante que tu agente de Dialogflow y la base de datos están en el mismo proyecto. Esta es la manera más fácil de que tu función un acceso seguro a tu base de datos. Además, debes habilitar la API de Spanner.
Antes de crear la base de datos, selecciona tu proyecto en la consola de Google Cloud.
Habilitar la API de Spanner para el proyecto
Crear una instancia de Spanner
Cuando usas Spanner por primera vez, debes crear una instancia, que es una asignación de recursos que usan las bases de datos de Spanner en esa instancia.
En la consola de Google Cloud, ve a la página Instancias de Spanner.
Haz clic en Crear instancia.
Como nombre de la instancia, ingresa Tutorial Instance.
El ID de la instancia se ingresa automáticamente según el nombre de la instancia.
En Elige tu configuración conserva la opción predeterminada Regional y selecciona la misma región ubicación que elegiste cuando creaste la función.
En Asignar capacidad de procesamiento, ingresar 100 unidades de procesamiento. Esto proporciona una capacidad mínima para el instructivo.
Haz clic en Crear. En la consola de Google Cloud, se muestra la página Descripción general de la instancia que creaste.
Crear una base de datos de Spanner
Ahora que tienes una instancia, debes crear una base de datos. Para crear una base de datos, sigue estos pasos:
- En la página Descripción general de la instancia, haz clic en Crear base de datos.
- Como nombre de la base de datos, ingresa tutorial-database.
- Selecciona el dialecto de base de datos SQL estándar de Google.
- Haz clic en Crear. En la consola de Google Cloud, se muestra la página Descripción general de la base de datos que creaste.
Crea tablas para tu base de datos
Ahora que tienes una base de datos, debes crear tablas para la base de datos. Para crear tablas, sigue estos pasos:
- En la sección Tablas de la página Descripción general de la base de datos, haz lo siguiente: Haz clic en Crear tabla.
En la página Escribe declaraciones DDL, ingresa lo siguiente:
CREATE TABLE Checking ( AccountId INT64, Balance INT64, ) PRIMARY KEY(AccountId);
Haz clic en Enviar. La consola de Google Cloud regresa a la página Descripción general de la base de datos y muestra que las actualizaciones del esquema están en curso. Espera hasta que se complete la actualización.
En la sección Tablas de la página Descripción general de la base de datos, haz lo siguiente: Haz clic en Crear tabla.
En la página Escribe declaraciones DDL, ingresa lo siguiente:
CREATE TABLE Savings ( AccountId INT64, Balance INT64, ) PRIMARY KEY(AccountId);
Haz clic en Enviar. La consola de Google Cloud regresa a la página Descripción general de la base de datos y muestra que las actualizaciones del esquema están en curso. Espera hasta que se complete la actualización.
Inserta datos en tus tablas
Ahora que tu base de datos tiene tablas, debes agregar datos a las tablas. Para agregar datos, haz lo siguiente:
- En la lista de tablas de la página Descripción general de la base de datos, haz lo siguiente: haz clic en la tabla Comprobando. En la consola de Google Cloud, se muestra la página Esquema de la tabla.
- En el menú de navegación de la izquierda, Haz clic en Datos para mostrar la página Datos de la tabla.
Haga clic en Insert. La consola de Google Cloud muestra la página Consultas de la tabla con una Nueva pestaña de consulta que contiene sentencias
INSERT
ySELECT
. Reemplaza esas sentencias por lo siguiente:INSERT INTO Checking (AccountId, Balance) VALUES(1, 1000), (2, 2000);
Haz clic en Ejecutar.
En el menú de navegación de la izquierda, Vuelve a hacer clic en Datos para mostrar los datos de la tabla. Confirma que la tabla contiene los datos deseados.
Haz clic en el vínculo tutorial-database: Descripción general. para volver a la página de descripción general de la base de datos.
En la lista de tablas de la página Descripción general de la base de datos, haz lo siguiente: haz clic en la tabla de ahorros. En la consola de Google Cloud, se muestra la página Esquema de la tabla.
En el menú de navegación de la izquierda, Haz clic en Datos para mostrar la página Datos de la tabla.
Haga clic en Insert. La consola de Google Cloud muestra la página Consultas de la tabla con una Nueva pestaña de consulta que contiene sentencias
INSERT
ySELECT
. Reemplaza esas sentencias por lo siguiente:INSERT INTO Savings (AccountId, Balance) VALUES(1, 10000), (2, 20000);
Haz clic en Ejecutar.
En el menú de navegación de la izquierda, Vuelve a hacer clic en Datos para mostrar los datos de la tabla. Confirma que la tabla contiene los datos deseados.
Actualiza la Cloud Function para consultar la base de datos
La función accountBalanceCheck
en el código de webhook
verifica si se configuraron variables específicas
con información para conectarse a la base de datos.
Si estas variables de entorno no están configuradas,
la función usa un saldo de cuenta codificado.
Ahora que ya has configurado una base de datos, actualiza tu Cloud Function para establecer las variables de entorno necesarias:
Abre la página Descripción general de Cloud Functions:
Haz clic en la función tutorial-banking-webhook para ir a la página de detalles.
Haz clic en Edit.
Abre la sección Configuración de entorno de ejecución, compilación y conexiones.
Selecciona la pestaña Entorno de ejecución.
Agrega las siguientes variables en la sección Variables de entorno de ejecución:
PROJECT_ID
: El ID de tu proyectoSPANNER_INSTANCE_ID
: El ID de la instancia de Spanner (probablementetutorial-instance
)SPANNER_DATABASE_ID
: El ID de la base de datos de Spanner (probablementetutorial-database
)
Haz clic en Siguiente.
Haz clic en Implementar.
Espera hasta que el indicador de estado muestre que la función se implementó correctamente.
Prueba tu agente
Tu agente ya está listo para probarlo. Haz clic en el botón Test Agent de la consola de Dialogflow. para abrir el simulador. Intenta tener la siguiente conversación con el agente:
Turno de conversación | Tú | Agente |
---|---|---|
1 | Hola | Hola. Gracias por elegir ACME Bank. |
2 | Quiero conocer el saldo de mi cuenta | ¿Para qué cuenta quieres el saldo: cuenta corriente o caja de ahorro? |
3 | En verificación | Este es tu saldo más reciente: USD 10.00 |
Si examinas el código, $10 no es el valor codificado. Esto significa que el webhook se conectó correctamente a la base de datos que tiene un saldo de USD 10.
Soluciona problemas
El código de webhook incluye instrucciones de registro. Si tienes problemas, prueba visualiza los registros para tu Cloud Function.
Si tu función no se conecta a la base de datos,
y ves un error de permisos en los registros,
Es posible que debas corregir el rol para la cuenta de servicio predeterminada
que usa tu función.
Esta cuenta de servicio tiene el siguiente formato:
PROJECT_ID@appspot.gserviceaccount.com
Puedes solucionar este problema de una de las siguientes maneras:
Si la cuenta de servicio predeterminada se muestra en la página principal de IAM, cambiar los permisos de la cuenta de servicio Funcionará el rol de editor. pero es posible que desees un rol más detallado en una situación de producción.
Si una cuenta de servicio predeterminada no se muestra en la página principal de IAM, otorgar el rol necesario agregando la cuenta de servicio como una principal nueva.
Como alternativa, puedes Usar una cuenta de servicio que crees.
Más información
Para obtener más información sobre los pasos anteriores, consulta:
- Usa Cloud Spanner con Cloud Functions
- Crea y consulta una base de datos con la consola de Google Cloud
- Lenguaje de definición de datos de SQL estándar de Google
- Lenguaje de manipulación de datos de SQL estándar de Google