Partilhar via


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 predefinição, o valor de uma variável só pode ser usado no tópico onde a variável é criada. No entanto, é possível reutilizar o mesmo valor entre tópicos. Por exemplo, num tópico Bem-vindo pede o nome e o endereço de e-mail do cliente. No tópico Reserva de Compromisso, deseja que o agente se lembre do que o cliente introduziu e não pergunte novamente.

Uma maneira de reutilizar uma variável é transmitir a variável de um tópico para outro. A outra maneira é tornar a variável global em âmbito, e é isso que este artigo aborda. As variáveis globais são chamadas assim porque estão disponíveis em todos os tópicos em todo o agente. Também podem ser definidas a partir de origens 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.

Observação

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 diferenciá-la das variáveis ao nível do tópico. Por exemplo, a variável UserName é apresentada como Global.UserName.

  3. Guarde o tópico.

Utilizar variáveis globais

Quando estiver a compor uma mensagem num nó de Mensagem ou de Pergunta, selecione o ícone {x} para ver as variáveis disponíveis para o tópico. As variáveis globais aparecem no separador Personalizado juntamente com quaisquer variáveis de tópico. As variáveis estão listadas por ordem alfabética.

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

Pode encontrar onde uma variável global é definida e que outros tópicos estão a usá-la. Esta caraterística pode ser útil se estiver a trabalhar num novo agente, ou se tiver múltiplas variáveis e ramificação de tópico complexa.

  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 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 utilizada noutros tópicos, as referências a essa variável nos tópicos são marcadas como Unknown. Recebe um aviso sobre a eliminação da variável global antes de poder 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 estavam a utilizar a variável eliminada antes de publicar o seu agente.

Ciclo de vida das variáveis globais

Por predefinição, o valor de uma variável global persiste até que a sessão termine. O nó Limpar valores de variáveis repõe os valores de variáveis globais e é usado no tópico de sistema Repor Conversa. 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, pode usar uma variável global e definir o valor a partir de uma origem externa. Digamos que o seu site requer 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 cenário de exemplo é transmitir o contexto do Dynamics 365 Customer Service para um agente para que este possa iniciar a conversa com conhecimento do que o cliente deseja alcançar.

Para evitar latência indesejável, pode especificar 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.

Observação

Os agentes publicados no canal do Dynamics 365 Contact Center para casos de uso de IVR não suportam valores de tempo limite configurados para variáveis globais definidas por origens 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 predefinido por um que corresponda exatamente ao nome da variável que está a ser transmitida do 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 tempo limite, 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 Customer Service, sugerimos 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 usar se o tempo limite for atingido. Em runtime, o seu agente esperará valores com o mesmo tipo de dados. 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.

Assim configurado, o seu agente está pronto a ser testado. 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 agente tenta aceder a uma variável que está a ser definida externamente, é colocado em pausa até que o valor chegue ou o tempo limite ocorra. Obtenha mais informações sobre como otimizar agentes para minimizar a latência.

Importante

Durante o fluxo normal de uma conversa, se o agente definir uma variável que, de outra forma, viria para um valor externo, o valor definido de dentro do agente prevalecerá. 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, uma variável global Global.UserName seria referida como UserName na consulta.

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

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 é sensível às maiúsculas e minúsculas. username=Ana também funcionaria 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.