You are viewing the Portuguese (Brazil) site, but your language preference is set to English. Switch to English site →

Menu

Actions Framework

A documentação gerada automaticamente para o Flex UI (IU do Flex) agora está disponível como uma distribuição beta. A documentação gerada automaticamente é precisa e abrangente e, portanto, pode ser diferente do que você vê na documentação oficial do Flex UI (IU do Flex).

Flex UI constantly emits asynchronous events and event payloads that describe how the user is interacting with the platform. With the Flex UI Actions Framework, you can manually invoke certain actions such as completing tasks, transferring tasks, holding a current call, and many more. Each action fires a before and after event, which allows you to handle your own logic before and after the action occurs. You can also replace the default behavior of an Action with your own custom logic. As you develop Plugins, the Actions Framework will allow you to describe how you want to interact with Flex UI or any CRM Data.

Registrar e chamar uma ação

Actions.registerAction registers a named action and allows you to invoke the action later. The second argument is an ActionFunction to be executed when the action is invoked. You can implement your logic in the ActionFunction.

import { Actions } from "@twilio/flex-ui";

Actions.registerAction("AcceptTask", (payload) => {
   // Custom Logic Goes Here
});

Actions.invokeAction invokes actions that come out of the box with Flex, and the ones that you register. You can pass in an optional payload as a second parameter if the action needs any data when being invoked. When the named Action is invoked, it fires a before and after event.

import { Actions } from "@twilio/flex-ui";
Actions.invokeAction("AcceptTask", { sid: "WRXXXXXXXXXXXXXXXXX" });

Substituir uma ação

Actions.replaceAction replaces the default implementation of a named Action with your own. The replaced Action will be called with the same parameters as the original implementation, so you can add additional logic, then invoke the original action in your replacement function.

import { Actions } from "@twilio/flex-ui";

Actions.replaceAction("AcceptTask", (payload, original) => {
    return new Promise((resolve, reject) => {
        alert("I have replaced this Action");
        resolve();
    }).then(() => original(payload));
});

Adicionar e remover ouvintes de eventos

You can add and remove event listeners to events fired when an action is invoked. Every event name is the invoked Action’s name prefixed with either “before” or “after”.

import { Actions } from "@twilio/flex-ui";

Actions.addListener("beforeAcceptTask", (payload, cancelActionInvocation) => {
  // Implement logic before the AcceptTask action has been invoked
  if (someCondition) {
     // use this function to prevent the actual AcceptTask action from being invoked
     cancelActionInvocation();
  }
});

Actions.addListener("afterAcceptTask", (payload) => {
  // Implement logic after AcceptTask action has stopped executing
});

To remove a listener, you must provide the same function you used as an argument when registering the event. If you need to remove listeners, you should register your event listeners with a named function instead of an anonymous function.

Registering event listeners with named functions

import { Actions } from "@twilio/flex-ui";
const handleBeforeAcceptTask = (payload, cancelActionInvocation) => {
  // Implement logic before the AcceptTask action has been invoked
};

const handleAfterAcceptTask = (payload) => {
  // Implement logic after the AcceptTask action has stopped executing
};

// Register beforeAcceptTask and afterAcceptTask events

Actions.addListener("beforeAcceptTask", handleBeforeAcceptTask);
Actions.addListener("afterAcceptTask", handleAfterAcceptTask);

Removing event listeners with named functions

You can now remove the event listeners by passing the name of the event with the original function used to register the event.

Actions.removeListener("beforeAcceptTask", handleBeforeAcceptTask);
Actions.removeListener("afterAcceptTask", handleAfterAcceptTask);

Events Supported

For a list of all actions, visit the Actions part of the Flex UI 1.x docs. All event names take the name of the Action, prefixed with before or after. Every event name is also in camel case.

before[eventName] (for example "beforeAcceptTask")
Called when a named action is triggered, but before the action body is run. You can abort the action that is provided with event body.

after[eventName]
Chamado depois que a ação parou de ser executada.

O evento afterLogout não é suportado. Depois que o funcionário tiver se desconectado, ele retornará à tela de login do Flex.

Casos de uso comuns e exemplos

Adicionar uma ação depois que uma tarefa for aceita

Gera um alerta javascript depois que um agente clica para aceitar qualquer tarefa.

flex.Actions.addListener("afterAcceptTask", (payload) => alert("Triggered after event AcceptTask"));

Solicitar confirmação antes de aceitar uma tarefa

Gera um prompt antes da aceitação da tarefa. Impede que a ação seja executada com um comando de cancelamento se o usuário não confirmar.

flex.Actions.addListener("beforeAcceptTask", (payload, abortFunction) => {
    alert("Triggered before event AcceptTask");
        if (!window.confirm("Are you sure you want to accept the task?")) {
            abortFunction();
        }
});

Personalizar uma ação existente

Substitui a ação original para AcceptTask. Inclui lógica personalizada para alertar sobre a substituição, mas executa a ação original.

flex.Actions.replaceAction("AcceptTask", (payload, original) => {
    return new Promise<void>((resolve, reject) => {
        alert("I have replaced this Action");
        resolve();
    }).then(() => original(payload));
});

Registrar uma ação personalizada

Registra uma ação personalizada chamada MyAction, que faz uma solicitação HTTP. Em seguida, adicionamos um ouvinte à ação CompleteTask que chama essa ação personalizada. Por exemplo, isso pode ser usado para atualizar o sistema CRM.

flex.Actions.registerAction("MyAction", (payload) => {
    return 
        fetch("https://my.server.backend.com/test")
        .then(response => {
            alert("Triggered MyAction with response " + JSON.stringify(response));
        })
        .catch(error => {
            console.log(error);
            throw error;
        });       
});


flex.Actions.addListener("afterCompleteTask", (payload) => {return flex.Actions.invokeAction("MyAction")});

Enviar uma mensagem após a conclusão de uma tarefa

Envia uma mensagem pós‐conversa quando a tarefa está em um estado de encerramento. Pode ser usado para enviar uma pesquisa ou notificar um usuário de que o agente fechou a sessão.

flex.Actions.replaceAction("WrapupTask", (payload, original) => {
    // Only alter chat tasks:
    if( payload.task.taskChannelUniqueName !== "chat" ) {
        original(payload);
    } else {
        return new Promise(function(resolve, reject) {
          // Send the message:
          flex.Actions.invokeAction("SendMessage", {
            body: 'Thanks for chatting. Your session is now closed.',
            channelSid: payload.task.attributes.channelSid
          }).then(response => {
            // Wait until the message is sent to wrap-up the task:
            resolve(original(payload));
        });

     });

   }

 });

Próximas etapas

Classifique esta página:

Precisa de ajuda?

Às vezes, todos nós precisamos; a programação é difícil. Receba ajuda agora da nossa equipe de suporte, ou confie na sabedoria da multidão navegando pelo Stack Overflow Collective da Twilio ou buscando a tag Twilio no Stack Overflow.

Obrigado pelo seu feedback!

Selecione o(s) motivo(s) para seu feedback. As informações adicionais que você fornece nos ajudam a melhorar nossa documentação:

Enviando seu feedback...
🎉 Obrigado pelo seu feedback!
Algo deu errado. Tente novamente.

Obrigado pelo seu feedback!

thanks-feedback-gif