Compartilhar via


Reutilizar variáveis entre tópicos

As variáveis armazenam as respostas de seus clientes às perguntas do seu agente. Por exemplo, você pode salvar o nome de um cliente em uma variável chamada UserName. O agente pode endereçar o cliente pelo nome enquanto a conversa continua.

Por padrão, o valor de uma variável só pode ser usado no tópico em que ela é criada. No entanto, é possível reutilizar o mesmo valor entre tópicos. Por exemplo, um tópico Bem-vindo solicita o nome e o email do cliente. No tópico Reserva de Compromisso, você deseja que o agente lembre o que o cliente inseriu e não pergunte novamente.

Uma maneira de reutilizar uma variável é transmitir a variável entre os tópicos. A outra maneira é tornar a variável global no escopo, e é isso que este artigo cobre. As variáveis globais são chamadas assim porque estão disponíveis em todos os tópicos em todo o agente.

As variáveis globais se aplicam durante uma única sessão do usuário. Você especifica quais variáveis são globais para distingui-las das variáveis no nível do tópico.

Criar uma variável global

Você cria uma variável global ao alterar o escopo de uma variável temática.

  1. Crie uma variável ou use o painel Variáveis para abrir uma variável existente.

  2. No painel Propriedades da variável, selecione Global (qualquer tópico pode acessar).

    O nome da variável receberá o prefixo Global. para diferenciá-lo das variáveis no nível do tópico. Por exemplo, a variável UserName é exibida como Global.UserName.

  3. Salve o tópico.

    O nome de uma variável global deve ser exclusivo em todos os tópicos.

Usar variáveis globais

Ao redigir uma mensagem em um nó de Mensagem ou em um nó de Pergunta, selecione o ícone {x} para exibir as variáveis que estão disponíveis no tópico. As variáveis globais são listadas na guia Personalizado, juntamente com quaisquer variáveis de tópico. As variáveis são classificadas em ordem alfabética.

Encontre todos os tópicos usando uma variável global

Você pode encontrar onde uma variável global é definida e que outros tópicos a estão usando. Este recurso pode ser útil se você estiver trabalhando em um novo agente ou se tiver várias variáveis e ramificação de tópicos complexos.

  1. Selecione a variável global desejada na tela de criação ou no painel Variáveis.

  2. No painel Propriedades da variável, na seção Referência, selecione Exibir todas as referências.

  3. Mude para a guia Outro e selecione qualquer tópico em que a variável seja usada para ir diretamente para esse tópico e nó.

Ciclo de vida de variáveis globais

Por padrão, o valor de uma variável global persiste até a sessão terminar. O nó Desmarcar valores de variáveis redefine os valores de variáveis globais e é usado no tópico do sistema Redefinir conversa. Esse tópico pode ser acionado por redirecionamento ou quando o usuário insere uma frase de gatilho como "Recomeçar". Nesse caso, todas as variáveis globais são redefinidas.

Definir o valor de uma variável global de origens externas

Se quiser garantir que o agente inicie uma conversa com algum contexto, você pode inicializar uma variável global com uma fonte externa. Digamos que seu site exija que os usuários façam login. Como seu agente já sabe o nome de um usuário, ele pode cumprimentar os clientes pelo nome antes que eles comecem a digitar a primeira pergunta.

  1. Selecione uma variável global.

  2. No painel Propriedades de variável, selecione Fontes externas podem definir valores.

Definir variáveis globais em um agente incorporado

Se estiver incorporando seu agente em uma página da Web simples, você poderá acrescentar variáveis e suas definições à URL do agente. Ou, se quiser um pouco mais de controle, você pode usar um bloco de código <script> para chamar e usar variáveis de forma programada.

O nome da variável na cadeia de consulta do URL deve corresponder ao nome da variável global sem o prefixo Global.. Por exemplo, uma variável global Global.UserName seria referida como UserName na consulta.

Os exemplos que se seguem usa uma declaração básica para as variáveis. Em um cenário de produção, é possível passar outra variável que já armazenou o nome do usuário como o parâmetro de consulta ou a definição de variável (por exemplo, se você tiver o nome de usuário em um script de entrada).

Anexe as variáveis e suas definições à URL do agente como parâmetros da cadeia de caracteres de consulta no formato de botURL?variableName1=variableDefinition1&variableName2=variableDefinition2.

Por exemplo:

O nome do parâmetro não faz distinção entre maiúsculas e minúsculas. username=Ana também funcionaria neste exemplo.

Adicionar variáveis globais a uma tela personalizada

Você também pode adicionar a variável a uma tela personalizada.

  1. Na seção <script> na página em que você tem seu agente, defina as variáveis da seguinte maneira, substituindo variableName1 pelo nome da variável sem o prefixo Global. e variableDefinition1 para a definição. Separe as muitas variáveis com vírgulas (,).

       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. Em sua seção <script>, ligue para store quando inserir seu agente, como no exemplo a seguir, store é chamado antes de onde styleOptions é chamado (você precisará substituir BOT_ID por sua ID do 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));