Compartir vía


Reutilizar variables en temas

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 pasar la variable entre temas. 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.

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.

  1. Cree una variable o use el panel 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.

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

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 aprecedn en la pestaña Personalizado junto con cualquier variable 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.

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 tema. Ese tema se puede desencadenar mediante una redirección o cuando el usuario escribe una frase desencadenante, como "Empezar de nuevo". En ese caso, se restablecen todas las variables globales.

Establecer el valor de una variable global desde orígenes externos

Si desea asegurarse de que el agente inicia una conversación con algún contexto, puede inicializar una variable global con una fuente externa. Digamos que su sitio requiere que los usuarios inicien sesión. Dado que su agente ya conoce el nombre de un usuario, puede saludar a los clientes por su nombre antes de que comiencen a escribir su primera pregunta.

  1. Seleccione un avariable global.

  2. En el panel Propiedades de variable, seleccione Las fuentes externas pueden establecer valores.

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));