Cómo consultar una base de datos

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 del proyecto

Es importante que el agente de Dialogflow y la base de datos estén en el mismo proyecto. Esta es la forma más fácil para 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. Habilitar la API de Spanner para el proyecto

    Habilitar la API de Spanner

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 esa instancia.

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

    Ir a Instancias de Spanner

  2. Haz clic en Crear instancia.

  3. Como nombre de la instancia, ingresa Tutorial Instance.

  4. El ID de la instancia se ingresa automáticamente según el nombre de la instancia.

  5. En Elige tu configuración, retén la opción predeterminada Regional y selecciona la misma región ubicación que elegiste cuando creaste la función.

  6. En Asignar capacidad de procesamiento, ingresa 100 unidades de procesamiento. Esto proporciona una capacidad mínima para el instructivo.

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

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

  1. 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.
  2. En la página Escribe declaraciones DDL, ingresa lo siguiente:

    CREATE TABLE Destinations (
      Destination STRING(1024),
      Covered BOOL,
    ) PRIMARY KEY(Destination);
    
  3. 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 se están realizando las Actualizaciones del esquema. Espera hasta que se complete la actualización.

Cómo insertar datos en tu tabla

Ahora que tu base de datos tiene una tabla, debes agregarle datos. Para agregar datos, haz lo siguiente:

  1. 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 destinos. En la consola de Google Cloud, se muestra la página Esquema de la tabla de destinos.
  2. En el menú de navegación de la izquierda, haz clic en Datos para mostrar la página Datos de la tabla Destinos.
  3. Haga clic en Insert. La consola de Google Cloud muestra la página Consulta de la tabla Destinations con una pestaña de consulta nueva que contiene sentencias INSERT y SELECT. Reemplaza esas sentencias por 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, haz clic en Datos de nuevo para mostrar los datos de la tabla de destino. Confirma que la tabla contiene los datos deseados.

Actualiza la función de Cloud Functions para consultar la base de datos

La función cruisePlanCoverage en el código de webhook verifica si se configuraron variables 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 codificados.

Ahora que tienes una base de datos configurada, actualiza tu Cloud Function para establecer las variables de entorno necesarias:

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

    Ir a la descripción general de Cloud Functions

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

  3. Haz clic en Edit.

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

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

  6. Agrega las siguientes variables en la sección Variables de entorno de ejecución:

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

  8. Haz clic en Implementar.

  9. Espera hasta que el indicador de estado muestre que la función se implementó correctamente.

Prueba tu agente

Ya puedes probar el agente. 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 Agente
1 Hola ¡Hola! Soy el agente virtual de telecomunicaciones. Puedo ayudarte a resolver preguntas sobre facturación y planes, solucionar problemas y agregar planes de viajes y cruceros. ¿En qué puedo ayudarte?
2 Quiero agregar un plan de crucero Déjame revisarlo por ti. ¿Cuál es tu número de teléfono registrado con nosotros?
3 123-123-1234 ¿Cuántos días dura el crucero?
4 7 La opción 1 incluye las llamadas y los 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 te gustaría agregar?
5 Opción 1 Entendido. Agregué ese plan a tu cuenta. Es posible que también necesites cobertura en tierra durante el crucero. ¿En qué puerto te detendrás?
6 Italia Y, ¿cuántos días pasas ahí?
7 3 ¡Excelentes noticias! Italia tiene cobertura gratuita por tierra. ¡Listo! ¿Hay algo más con lo que pueda ayudarte?

Si examinas el código, Italia no está en la lista hard-coded de destinos cubiertos. Esto significa que el webhook se conectó correctamente a la base de datos que sí incluye a Italia.

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 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@appspot.gserviceaccount.com. Puedes solucionar este problema de una de las siguientes maneras:

Más información

Para obtener más información sobre los pasos anteriores, consulta: