Consultar una base de datos

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.

  1. Antes de crear la base de datos, selecciona tu proyecto en la consola de Google Cloud .

    Ir al selector de proyectos

  2. Habilita la API Spanner en el proyecto.

    Habilitar la API de Spanner

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.

  1. En la Google Cloud consola, ve a la página Instancias de Spanner.

    Ir a instancias de Spanner

  2. Haz clic en Crear instancia.

  3. En el nombre de la instancia, escribe Tutorial Instance.

  4. El ID de instancia se introduce automáticamente en función del nombre de la instancia.

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

  6. En Asignar capacidad de computación, introduce 100 unidades de procesamiento. Esto proporciona una capacidad mínima para el tutorial.

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

  1. En la página Resumen de la instancia, haz clic en Crear base de datos.
  2. En el nombre de la base de datos, escribe tutorial-database.
  3. Selecciona el dialecto de base de datos SQL estándar de Google.
  4. 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:

  1. En la sección Tablas de la página Resumen de la base de datos, haz clic en Crear tabla.
  2. En la página Escribir instrucciones DDL, introduce lo siguiente:

    CREATE TABLE Destinations (
      Destination STRING(1024),
      Covered BOOL,
    ) PRIMARY KEY(Destination);
    
  3. 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:

  1. 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
  2. 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.
  3. 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 y SELECT. 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);
    
  4. Haz clic en Ejecutar.

  5. 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:

  1. Abre la página de información general de Cloud Functions.

    Ir a la información general sobre Cloud Functions

  2. Haz clic en la función tutorial-telecommunications-webhook para ir a su página de detalles.

  3. Haz clic en Editar.

  4. Abre la sección Configuración de tiempo de ejecución, compilación y conexiones.

  5. Selecciona la pestaña Tiempo de ejecución.

  6. Añade las siguientes variables en la sección Variables de entorno de ejecución:

    • PROJECT_ID: tu ID de proyecto
    • SPANNER_INSTANCE_ID: el ID de tu instancia de Spanner (probablemente tutorial-instance)
    • SPANNER_DATABASE_ID: el ID de tu base de datos de Spanner (probablemente tutorial-database)
  7. Haz clic en Siguiente.

  8. Haz clic en Desplegar.

  9. 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 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:

Más información

Para obtener más información sobre los pasos anteriores, consulta los siguientes artículos: