Compartir a través de


Trabajar con variables globales

Las variables almacenan las respuestas de sus clientes a las preguntas de su agente. Por ejemplo, puede guardar el nombre de un cliente en una variable llamada UserName. El agente puede dirigirse al cliente por su nombre a lo largo de la conversación.

De forma predeterminada, el valor de una variable solo se puede usar en el tema donde se crea la variable. Sin embargo, es posible reutilizar el mismo valor en todos los temas. Por ejemplo, en un tema de Bienvenida, el bot solicita el nombre y el correo electrónico del cliente. En el tema Reserva de citas, desea que el agente recuerde lo que el cliente ha escrito y no vuelva a preguntar.

Una forma de reutilizar una variable es pasarla de un tema a otro. La otra forma es hacer que la variable tenga un alcance global, y eso es lo que cubre este artículo. Las variables globales se llaman así porque están disponibles en todos los temas de todo el agente. También se pueden configurar desde fuentes externas.

Las variables globales se aplican durante una sola sesión de usuario. Debe especificar qué variables son globales para distinguirlas de las variables de nivel de tema.

Creación de una variable global

Puede crear una variable global cambiando el alcance de una variable de tema.

Nota

El nombre de una variable global debe ser único en todos los temas.

  1. Cree una variable o utilice el panel de Variables para abrir una variable existente.

  2. En el panel Propiedades de variable, en Uso, seleccione Global (cualquier tema puede acceder).

    Se agregará al nombre de la variable una cadena de prefijo Global. para diferenciarla de las variables de nivel de tema. Por ejemplo, ahora la variable UserName se muestra como Global.UserName.

  3. Guarde el tema.

Uso de variables globales

Cuando compone un mensaje en un nodo Mensaje o Pregunta, seleccione el icono {x} para ver las variables disponibles para el tema. Las variables globales aparecen en la pestaña Personalizado junto con cualquier variable de tema. Las variables se enumeran en orden alfabético.

Buscar todos los temas mediante una variable global

Puede encontrar dónde se definió por primera vez y qué otros temas la están utilizando. Esta característica puede ser útil si está trabajando en un agente nuevo, o si tiene múltiples variables y una ramificación de temas compleja.

  1. Seleccione la variable global deseada en el lienzo de creación o en el panel Variables.

  2. En el panel Propiedades de la variable, en la sección Referencia , seleccione Ver todas las referencias.

  3. Cambie a la pestaña Otros y seleccione cualquier tema en el que se utilice la variable para ir directamente a ese tema y nodo.

Eliminación de variables globales

Al eliminar una variable de bot utilizada en otros temas, las referencias a esa variable en los temas se marcarán como Unknown. Recibirá una advertencia sobre la eliminación de la variable global antes de poder confirmar la operación.

Los nodos que contienen referencias a la variable global eliminada le indicarán que contienen una variable desconocida.

Los temas con nodos que contienen referencias a variables globales eliminadas pueden dejar de funcionar. Asegúrese de eliminar o corregir todos los temas que estaban usando la variable eliminada antes de publicar su agente.

Ciclo de vida de las variables globales

De forma predeterminada, el valor de una variable global persiste hasta que finaliza la sesión. El nodo Borrar valores de variables restablece los valores de las variables globales y se utiliza en el tema del sistema Restablecer conversación. Cuando una redirección desencadena ese tema (o cuando el usuario escribe una frase como "Empezar de nuevo"), se restablecen todas las variables globales.

Establecer variables desde orígenes externos

Para asegurarse de que el agente inicia una conversación con cierto contexto, puede utilizar una variable global y establecer su valor desde una fuente externa. Digamos que su sitio requiere que los usuarios inicien sesión. Si almacena el nombre de un usuario en una variable global y se lo pasa al agente, este podrá saludar a los clientes por su nombre antes de que empiecen a escribir su primera pregunta. Otro escenario de ejemplo es pasar el contexto de Dynamics 365 Customer Service a un agente para que pueda iniciar la conversación con conocimiento de lo que el cliente quiere lograr.

Para evitar latencias no deseadas, puede especificar cuánto tiempo puede esperar el agente por un valor. También puede establecer un valor predeterminado para usar cuando la fuente externa no responda de manera oportuna.

Nota

Los agentes que se publican en el canal Dynamics 365 Contact Center para casos de uso de IVR no admiten valores de tiempo de espera configurados para variables globales establecidas por fuentes externas.

  1. Cree un tema dedicado para contener la configuración de todas las variables destinadas a establecerse desde fuentes externas. Podría llamar a este tema "Establecer variables de contexto", por ejemplo. Este tema no sirve para ningún otro propósito, por lo que no es necesario que tenga frases desencadenadoras establecidas.

  2. Agregue un nodo Establecer valor de variable al tema dedicado.

  3. En Establecer variable, abra el selector de variable y seleccione Crear una nueva variable.

  4. Seleccione el nombre predeterminado de la nueva variable. Aparece el panel de Propiedades de variables.

  5. Reemplace el nombre predeterminado por uno que coincida exactamente con el nombre de la variable que se pasa desde el sistema externo.

  6. En Uso, seleccione Global (cualquier tema puede acceder) y Fuentes externas pueden establecer valores.

  7. En Referencia, seleccione los tres puntos () en la esquina superior derecha y seleccione Obtener valor de este nodo si está vacío.

  8. (Opcional) Establezca un retardo de tiempo de espera, en milisegundos. Este valor determina cuánto tiempo puede esperar el agente a que una fuente externa establezca la variable antes de agotar el tiempo de espera y continuar con el valor predeterminado establecido en el nodo Establecer valor de variable. Esta configuración es pertinente en escenarios en los que la variable depende de un proceso asincrónico o de larga duración, pero el agente debe respetar una latencia máxima para garantizar una buena experiencia de usuario.

    Para las variables procedentes de Omnicanal para Customer Service, sugerimos un valor de 10 segundos (10 000 ms) como tiempo de espera máximo.

  9. En el nodo Establecer valor de variable, introduzca el valor predeterminado que se utilizará si se alcanza el tiempo de espera. En tiempo de ejecución, el agente esperará valores con el mismo tipo de datos. Si desea que este valor predeterminado sea una cadena vacía, use Text("") como fórmula.

    Captura de pantalla de la configuración de una variable global que se establecerá desde un origen externo

  10. Para cualquier otro valor que espere que provenga de un sistema externo, agregue más nodos Establecer valor de variable a su tema dedicado y configure las variables globales requeridas de la misma manera.

Así configurado, el agente está listo para realizar pruebas. Cuando se invoca el agente, en lugar de esperar indefinidamente a que se rellenen todas las variables, el agente puede comenzar a enviar inmediatamente cualquier mensaje que no dependa de las variables que se pasan. Cuando el agente intenta acceder a una variable que se está configurando externamente, se detiene hasta que llega el valor o se agota el tiempo de espera. Obtenga más información sobre cómo optimizar los agentes para minimizar la latencia.

Importante

Durante el flujo normal de una conversación, si su agente establece una variable que de otro modo vendría por un valor externo, prevalece el valor establecido desde dentro de su agente. Se omiten los valores que se pasan en contexto. Esta regla evita que el agente sobrescriba los valores establecidos intencionadamente en los temas.

Establecer variables globales en un agente incrustado

Si va a insertar el agente en una página web sencilla, puede anexar variables y sus definiciones a la URL del agente. O, si desea tener un poco más de control, puede usar un bloque de código <script> para llamar y usar variables programáticamente.

El nombre de la variable en la cadena de consulta de la URL debe coincidir con el nombre de la variable global, sin el prefijo Global.. Por ejemplo, una variable global Global.UserName se denominaría UserName en la consulta.

En los ejemplos siguientes se utiliza una declaración básica para las variables. En un escenario de producción, puede pasar como parámetro de consulta o definición de variable otra variable que ya ha almacenado el nombre del usuario (por ejemplo, si tiene el nombre de usuario de un script de inicio de sesión).

Anexe las variables y sus definiciones a la URL del agente como parámetros de cadena de consulta con el formato botURL?variableName1=variableDefinition1&variableName2=variableDefinition2.

Por ejemplo:

En el nombre de parámetro no se distinguen mayúsculas de minúsculas. username=Ana también funcionaría en este ejemplo.

Agregar la variable a un lienzo personalizado

También puede agregar la variable a un lienzo personalizado.

  1. En la sección <script> de la página en la que está el agente, defina las variables de la siguiente manera, sustituyendo variableName1 por el nombre de la variable sin el prefijo Global. y variableDefinition1 por la definición. Separe múltiples variables con comas (,).

       const store = WebChat.createStore({}, ({ dispatch }) => next => action => {
         if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
           dispatch({
              type: "WEB_CHAT/SEND_EVENT",
              payload: {
                name: "pvaSetContext",
                value: {
                   "variableName1": "variableDefinition1",
                   "variableName2": "variableDefinition2"
                }
              },
            });
          }
            return next(action);
        });
    
  2. En la sección <script>, llame a store al insertar el agente, como en el siguiente ejemplo en el que se llama a store justo antes de donde se llama a styleOptions (debe reemplazar BOT_ID por su identificación de agente):

    const BOT_ID = "12345-5678";
    const theURL = "https://powerva.microsoft.com/api/botmanagement/v1/directline/directlinetoken?botId=" + BOT_ID;
    
    fetch(theURL)
        .then(response => response.json())
        .then(conversationInfo => {
            window.WebChat.renderWebChat(
                {
                    directLine: window.WebChat.createDirectLine({
                        token: conversationInfo.token,
                    }),
                    store,
                    styleOptions
                },
                document.getElementById('webchat')
            );
        })
        .catch(err => console.error("An error occurred: " + err));
    

Dependiendo de la configuración de la autenticación del agente, tendrá disponible un conjunto de variables globales asociadas con el proveedor de autenticación seleccionado. Para obtener detalles sobre qué conjunto de variables están disponibles y cómo usarlas, consulte el tema de la documentación Agregar autenticación de usuario a temas.