Trabalhar com variáveis globais

As variáveis armazenam as respostas dos seus clientes às perguntas do seu agente. Por exemplo, poderá guardar o nome de um cliente numa variável chamada UserName. Em seguida, o agente pode dirigir-se ao cliente pelo nome quando a conversa continua.

Por defeito, só podes usar o valor de uma variável no tópico onde criaste a variável. No entanto, pode querer reutilizar um valor em vários tópicos. Por exemplo, num tópico Bem-vindo pede o nome e o endereço de e-mail do cliente. No tópico de Marcação de Consultas, quer que o agente se lembre do que o cliente já forneceu e não volte a perguntar.

Podes reutilizar uma variável passando a variável de um tema para outro. Também podes definir a variável com âmbito global. Este artigo aborda variáveis globais. Chamam-se variáveis globais porque estão disponíveis em todos os tópicos em todo o agente. O seu agente também pode defini-los a partir de fontes externas.

As variáveis globais aplicam-se durante uma única sessão de utilizador. Especifica que variáveis são globais para as distinguir das variáveis ao nível do tópico.

Criar uma variável global

Cria uma variável global ao alterar o âmbito de uma variável de tópico.

Note

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

  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 aceder). O nome da variável recebe o prefixo Global. para a diferenciar das variáveis ao nível do tópico. Por exemplo, a variável UserName torna-se Global.UserName.

  3. Guardar o tema.

Utilizar variáveis globais

Quando compor uma mensagem num nó Mensagem ou num nó Pergunta , selecione o ícone {x} para visualizar as variáveis a que o tópico pode aceder. Também pode utilizar variáveis globais em nós de Ferramenta que chamam pedidos ou fluxos de trabalho. As variáveis globais aparecem no separador Personalizado juntamente com quaisquer variáveis do tópico. As variáveis estão listadas por ordem alfabética.

Encontre todos os tópicos que utilizem uma variável global

Podes encontrar onde uma variável global está definida e que outros tópicos a utilizam. Esta funcionalidade é útil se estiveres a trabalhar num novo agente ou se tiveres múltiplas variáveis e ramificações de temas complexos.

  1. Seleciona a variável global que queres no canvas de autoria ou no painel de Variáveis .

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

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

Eliminar variáveis globais

Se remover uma variável global usada noutros tópicos, as referências a essa variável nos tópicos mostram como Unknown. Recebes um aviso sobre a eliminação da variável global antes de poderes confirmar a operação.

Nós que contêm referências a uma variável global eliminada indicam que contêm uma variável desconhecida.

Tópicos com nós que contenham referências a variáveis globais eliminadas podem parar de funcionar. Certifique-se de que remove ou corrige todos os tópicos que utilizaram a variável agora eliminada antes de publicar o seu agente.

Ciclo de vida das variáveis globais

Por defeito, um valor global de variável persiste até ao fim da sessão . O nó Limpar valores de variáveis repõe os valores das variáveis globais. O tópico de sistema Repor Conversação utiliza este nó. Quando um redirecionamento aciona esse tópico (ou quando o utilizador introduz uma frase como "Começar novamente"), todas as variáveis globais são repostas.

Definir variáveis globais de origens externas

Para garantir que o agente inicia uma conversa com algum contexto, use uma variável global e defina o seu valor a partir de uma fonte externa. Suponha que o seu site exige que os utilizadores iniciem sessão. Se armazenar o nome de um utilizador numa variável global e transmiti-lo ao seu agente, o agente poderá cumprimentar os clientes pelo nome antes que estes comecem a escrever a primeira pergunta. Outro exemplo de cenário é passar o contexto do Dynamics 365 Customer Service para um agente, para que este possa iniciar a conversa com conhecimento do que o cliente quer alcançar.

Para evitar latência indesejável, especifique quanto tempo o seu agente pode esperar por um valor. Também pode definir um valor predefinido a usar quando a origem externa não responder em atempadamente.

Note

Os agentes publicados no canal do Dynamics 365 Contact Center para casos de uso IVR não suportam valores de timeout configurados para variáveis globais definidas por fontes externas.

  1. Crie um tópico dedicado para manter a configuração de todas as variáveis destinadas a serem definidas a partir de origens externas. Poderá nomear este tópico como "Definir variáveis de contexto", por exemplo. Este tópico não serve para outros fins, por isso não precisa de ter frases acionadores definidas.

  2. Adicione um nó Definir valor da variável ao seu tópico dedicado.

  3. Em Definir variável, abra o seletor de variáveis e selecione Criar uma nova variável.

  4. Selecione o nome predefinido da nova variável. O painel Propriedades da variável aparece.

  5. Substitua o nome padrão por um que corresponda exatamente ao nome da variável que está a ser passada pelo sistema externo.

  6. Em Utilização, selecione Global (qualquer tópico pode aceder) e Origens externas podem definir valores.

  7. Em Referência, selecione os três pontos () no canto superior direito e selecione Obter valor deste nó se estiver vazio.

  8. (Opcional) Defina um atraso de timeout, em milissegundos. Este valor determina quanto tempo o agente pode aguardar até que a variável seja definida por uma origem externa antes de atingir o tempo limite e continuar com o valor predefinido definido no nó Definir valor da variável . Esta definição é relevante em cenários em que a variável depende de um processo assíncrono ou de longa duração, mas o seu agente tem de respeitar uma latência máxima para garantir uma boa experiência de utilizador.

    Para variáveis provenientes do Omnicanal para Atendimento ao Cliente, use um valor de 10 segundos (10.000 ms) como tempo máximo de espera.

  9. No nó Definir valor da variável, introduza o valor predefinido a utilizar se o tempo limite for atingido. Em tempo de execução, o seu agente espera valores com o mesmo tipo de dado. Se pretender que este valor predefinido seja uma cadeia vazia, use Text("") como uma fórmula.

    Captura de ecrã da configuração de uma variável global a ser definida a partir de uma origem externa.

  10. Para quaisquer outros valores que espera que venham de um sistema externo, adicione mais nós Definir valor da variável ao seu tópico dedicado e configure as variáveis globais necessárias da mesma maneira.

Quando configuras o teu agente desta forma, ele está pronto para testar. Quando o agente é invocado, em vez de esperar indefinidamente que todas as variáveis sejam preenchidas, o agente pode começar imediatamente a enviar quaisquer mensagens que não dependam das variáveis que estão a ser transmitidas. Quando o seu agente tenta aceder a uma variável que está a ser definida externamente, ele pausa até o valor chegar ou ocorrer o timeout. Saiba mais em Otimizar agentes para minimizar a latência.

Importante

Durante o fluxo normal de uma conversação, se o agente definir uma variável que, de outra forma, viria de um valor externo, o valor definido dentro do seu agente prevalece. Qualquer valor transmitido em contexto é ignorado. Esta regra impede que o agente substitua valores intencionalmente definidos em tópicos.

Definir variáveis globais num agente incorporado

Se estiver a incorporar o seu agente numa página Web simples, poderá anexar variáveis e as respetivas definições ao URL do agente. Ou, se quiser um pouco mais de controlo, pode usar um bloco de código <script> para chamar e usar variáveis programaticamente.

O nome da variável na cadeia de consulta do URL tem de corresponder ao nome da variável global, sem o prefixo Global.. Por exemplo, para uma variável Global.UserName global use apenas UserName na consulta.

Os exemplos seguintes usam uma declaração básica para as variáveis. Num cenário de produção, pode passar outra variável que já armazene o nome do utilizador (por exemplo, se tiver o nome de utilizador a partir de um script de início de sessão) como parâmetro de consulta ou definição de variável.

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

Por exemplo:

O nome do parâmetro não distingue maiúsculas de minúsculas: username=Ana também funciona neste exemplo.

Adicionar variáveis globais a uma tela personalizada

Também pode adicionar a variável a uma tela personalizada.

  1. Na secção <script> na página onde tem o seu agente, defina as variáveis da seguinte forma, substituindo variableName1 pelo nome da variável sem o prefixo Global. e variableDefinition1 para a definição. Separe várias 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. Na sua secção <script>, ligue para store quando incorpora o seu agente, como no exemplo seguinte onde store é chamado logo antes de onde styleOptions é chamado (tem de substituir BOT_ID pelo seu ID 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));
    

Dependendo da configuração de autenticação do agente, tem um conjunto de variáveis globais associadas ao fornecedor de autenticação selecionado. Para obter detalhes sobre que conjunto de variáveis está disponível e como usá-las, consulte Adicionar autenticação de utilizador a tópicos.