Tu webhook usa datos codificados en la función cruisePlanCoverage
.
En este paso del tutorial, crearás una base de datos de Spanner, la rellenarás con destinos cubiertos y actualizarás 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. Es la forma más sencilla de que tu función tenga 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 .
Habilita la API Spanner en el proyecto.
Crear una instancia de Spanner
La primera vez que uses Spanner, debes crear una instancia, que es una asignación de recursos que usan las bases de datos de Spanner en esa instancia.
En la Google Cloud consola, ve a la página Instancias de Spanner.
Haz clic en Crear instancia.
En el nombre de la instancia, escribe Tutorial Instance.
El ID de instancia se introduce automáticamente en función del nombre de la instancia.
En Elige tu configuración, mantén la opción predeterminada Regional y selecciona la misma ubicación que elegiste al crear la función.
En Asignar capacidad de computación, introduce 100 unidades de procesamiento. Esto proporciona una capacidad mínima para el tutorial.
Haz clic en Crear. La consola Google Cloud muestra la página Información general de la instancia que has creado.
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 Resumen de la instancia, haz clic en Crear base de datos.
- En el nombre de la base de datos, escribe tutorial-database.
- Selecciona el dialecto de base de datos SQL estándar de Google.
- Haz clic en Crear. La consola muestra la página Información general de la base de datos que has creado. Google Cloud
Crear una tabla para la base de datos
Ahora que tienes una base de datos, debes crear una tabla para ella. Para crear una tabla, sigue estos pasos:
- En la sección Tablas de la página Resumen de la base de datos, haz clic en Crear tabla.
En la página Escribir instrucciones DDL, introduce lo siguiente:
CREATE TABLE Destinations ( Destination STRING(1024), Covered BOOL, ) PRIMARY KEY(Destination);
Haz clic en Enviar. La consola Google Cloud vuelve a la página Resumen de la base de datos y muestra que se están realizando actualizaciones del esquema. Espera a que se complete la actualización.
Insertar datos en una tabla
Ahora que tu base de datos tiene una tabla, debes añadirle datos. Para añadir datos, sigue estos pasos:
- En la lista de tablas de la página Resumen de la base de datos, haga clic en la tabla Destinations. La consola muestra la página Esquema de la tabla Destinations. Google Cloud
- En el menú de navegación de la izquierda, haga clic en Datos para que se muestre la página Datos de la tabla Destinos.
Haz clic en Insertar. La consola muestra la página Consulta de la tabla Destinos con una nueva pestaña de consulta que contiene las instrucciones
INSERT
ySELECT
. Google Cloud Sobrescribe esas declaraciones con lo siguiente:INSERT INTO Destinations (Destination, Covered) VALUES('anguilla', TRUE), ('canada', TRUE), ('china', TRUE), ('italy', TRUE), ('mexico', TRUE), ('spain', FALSE);
Haz clic en Ejecutar.
En el menú de navegación de la izquierda, vuelva a hacer clic en Datos para ver los datos de la tabla Destino. Confirma que la tabla contiene los datos que quieres.
Actualizar la función de Cloud para consultar la base de datos
La función cruisePlanCoverage
del código del webhook comprueba si se han definido variables de entorno específicas con información para conectarse a la base de datos.
Si estas variables de entorno no se definen, la función usa una lista de destinos codificada.
Ahora que has configurado una base de datos, actualiza tu función de Cloud para definir las variables de entorno necesarias:
Abre la página de información general de Cloud Functions.
Haz clic en la función tutorial-telecommunications-webhook para ir a su página de detalles.
Haz clic en Editar.
Abre la sección Configuración de tiempo de ejecución, compilación y conexiones.
Selecciona la pestaña Tiempo de ejecución.
Añade las siguientes variables en la sección Variables de entorno de ejecución:
PROJECT_ID
: tu ID de proyectoSPANNER_INSTANCE_ID
: el ID de tu instancia de Spanner (probablementetutorial-instance
)SPANNER_DATABASE_ID
: el ID de tu base de datos de Spanner (probablementetutorial-database
)
Haz clic en Siguiente.
Haz clic en Desplegar.
Espera hasta que el indicador de estado muestre que la función se ha implementado correctamente.
Probar tu agente
Tu agente ya está listo para probarse. En la consola de Dialogflow, haz clic en el botón Probar agente para abrir el simulador. Intenta mantener la siguiente conversación con el agente:
Turno de conversación | Tú | Agente |
---|---|---|
1 | Hola | ¡Hola! Soy el agente virtual de telecomunicaciones. Puedo ayudarte a resolver dudas sobre la facturación y los planes, solucionar problemas y añadir planes de viaje y crucero. ¿En qué puedo ayudarte hoy? |
2 | Quiero añadir un plan de crucero | Déjame echar un vistazo. ¿Cuál es tu número de teléfono con nosotros? |
3 | 123-123-1234 | ¿Cuántos días dura el crucero? |
4 | 7 | La opción 1 incluye llamadas y mensajes de texto. Cuesta $[XX] al día. Consulta más información aquí: [URL]. La opción 2 incluye llamadas, mensajes de texto y datos. Cuesta $[XX] al día. Consulta más información aquí: [URL]. ¿Qué plan de crucero quieres añadir? |
5 | Opción 1 | Entendido. He añadido ese plan a tu cuenta. Durante el crucero, es posible que también necesites cobertura en tierra. ¿En qué puerto harás una parada? |
6 | Italia | ¿Cuántos días vas a pasar allí? |
7 | 3 | ¡Buenas noticias! Italia tiene cobertura terrestre gratuita. Y ya habrás acabado. ¿Puedo ayudarte en algo más? |
Si examinas el código, verás que Italia no está en la lista codificada de destinos cubiertos. Esto significa que tu webhook se ha conectado correctamente a la base de datos, que incluye Italia.
Solución de problemas
El código del webhook incluye instrucciones de registro. Si tienes problemas, prueba a ver los registros de tu función de Cloud.
Si tu función no se conecta a la base de datos y ves un error de permiso en los registros, puede que tengas que corregir el rol de la cuenta de servicio predeterminada que usa tu función.
Esta cuenta de servicio tiene el formato
PROJECT_ID@appspot.gserviceaccount.com
.
Puedes solucionar este problema de una de las siguientes formas:
Si la cuenta de servicio predeterminada se muestra en la página principal de IAM, cambia los permisos de la cuenta de servicio. El rol Editor funcionará, pero puede que quieras un rol más granular en un entorno de producción.
Ir a la página principal de gestión de identidades y accesos
Si no se muestra una cuenta de servicio predeterminada en la página principal de gestión de identidades y accesos, concede el rol necesario añadiendo la cuenta de servicio como un nuevo principal.
También puedes usar una cuenta de servicio que crees.
Más información
Para obtener más información sobre los pasos anteriores, consulta los siguientes artículos:
- Usar Cloud Spanner con Cloud Functions
- Crear y consultar 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