Actualmente, tu webhook usa datos codificados en la función cruisePlanCoverage.
En este paso del instructivo,
crearás una base de datos de
Spanner,
la propagarás con destinos cubiertos
y actualizarás tu función para consultar la base de datos.
Configuración de proyectos
Es importante que tu agente de Dialogflow y la base de datos estén en el mismo proyecto. Esta es la forma más fácil 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 de Spanner para el proyecto.
Crear una instancia de Spanner
Cuando uses Spanner por primera vez, deberás crear una instancia, que es una asignación de recursos que usan las bases de datos de Spanner en la instancia.
En la consola de Google Cloud , ve a la página Instancias de Spanner.
Haz clic en Crear instancia.
En el nombre de la instancia, ingresa Instancia del instructivo.
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 ubicación de región que elegiste cuando creaste la función.
En Asignar capacidad de procesamiento, ingresa 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.
- En el nombre de la base de datos, escribe tutorial-database.
- Selecciona el dialecto de la base de datos SQL estándar de Google.
- Haz clic en Crear. La consola de Google Cloud muestra la página Descripción general de la base de datos que creaste.
Crea una tabla para tu 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 Descripción general de la base de datos, haz clic en Crear tabla.
En la página Escribe declaraciones DDL, ingresa lo siguiente:
CREATE TABLE Destinations ( Destination STRING(1024), Covered BOOL, ) PRIMARY KEY(Destination);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 tu tabla
Ahora que tu base de datos tiene una tabla, debes agregarle datos. Para agregar datos, haz lo siguiente:
- En la lista de tablas de la página Descripción general de la base de datos, haz clic en la tabla de destino. La consola de Google Cloud muestra la página Esquema de la tabla de destino.
- En el menú de navegación de la izquierda, haz clic en Datos para mostrar la página Datos de la tabla de destino.
Haz clic en Insertar. La consola de Google Cloud muestra la página Consulta de la tabla de destino de Destinations con una pestaña de consulta nueva que contiene las sentencias
INSERTySELECT. Reemplaza esas declaraciones por las siguientes: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, vuelve a hacer clic en Datos para mostrar los datos de la tabla de destino. Confirma que la tabla contenga los datos deseados.
Actualiza la Cloud Function para consultar la base de datos
La función cruisePlanCoverage en el código del webhook
verifica si se establecieron variables de entorno específicas
con información para conectarse a la base de datos.
Si no se establecen estas variables de entorno,
la función usa una lista de destinos codificada.
Ahora que configuraste una base de datos, actualiza tu Cloud Function para establecer las variables de entorno requeridas:
Abre la página Descripció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 del entorno de ejecución, la compilación, las conexiones y la seguridad.
Selecciona la pestaña Entorno de ejecución.
Agrega las siguientes variables en la sección Variables de entorno de ejecución:
PROJECT_ID: Es el ID del proyecto.SPANNER_INSTANCE_ID: el ID de tu instancia de Spanner (probablementetutorial-instance)SPANNER_DATABASE_ID: Es 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 que lo pruebes. Haz clic en el botón Probar agente en la consola de Dialogflow para abrir el simulador. Intenta tener la siguiente conversación con el agente:
| Turno conversacional | Tú | Agente |
|---|---|---|
| 1 | Hola | ¡Hola! Soy el agente virtual de telecomunicaciones. Puedo ayudarte a resolver preguntas sobre la facturación y los planes, solucionar problemas y agregar planes de viaje y de crucero. ¿En qué puedo ayudarte hoy? |
| 2 | Quiero agregar un plan para cruceros | Déjame echarle un vistazo. ¿Cuál es tu número de teléfono con nosotros? |
| 3 | 123-123-1234 | ¿Cuántos días dura tu crucero? |
| 4 | 7 | La opción 1 incluye llamadas y mensajes de texto. Cuesta USD [XX] por día. Obtén más información aquí [URL]. La opción 2 incluye llamadas, mensajes de texto y datos. Cuesta USD [XX] por día. Obtén más información aquí [URL]. ¿Qué plan de crucero quieres agregar? |
| 5 | Opción 1 | Entendido. Agregué ese plan a tu cuenta. Mientras estés en el crucero, es posible que también necesites cobertura en tierra. ¿En qué puerto te detendrás? |
| 6 | Italia | ¿Y cuántos días pasarás allí? |
| 7 | 3 | ¡Excelentes noticias! Italia tiene cobertura gratuita en tierra. ¡Listo! ¿Hay algo más con lo que pueda ayudarte? |
Si examinas el código, Italia no está en la lista codificada de destinos cubiertos. Esto significa que tu webhook se conectó correctamente a la base de datos, que incluye a Italia.
Soluciona problemas
El código del webhook incluye instrucciones de registro. Si tienes problemas, intenta ver los registros de tu Cloud Function.
Si tu función no se conecta a la base de datos
y ves un error de permiso en los registros,
es posible que debas corregir el rol de la cuenta de servicio predeterminada
que usa tu función.
Esta cuenta de servicio tiene el formato
PROJECT_ID@.
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, cambia los permisos de la cuenta de servicio. El rol de editor funcionará, pero es posible que desees un rol más detallado en un entorno de producción.
Si la cuenta de servicio predeterminada no se muestra en la página principal de IAM, otorga el rol requerido 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 los siguientes recursos: