Editor de código

Aprenda como direcionar a conversa escrevendo código JavaScript com a Ação de Código.

A ação de código permite que desenvolvedores criem rapidamente lógica personalizada sobre seu bot escrevendo seus próprios blocos de código Javascript. Normalmente, o editor de código é usado para realizar requisições a sistemas externos ou para fazer operações com variáveis.

Por favor, note que o termo estado do diálogo refere-se à mesma coisa que bloco, no contexto de ferramentas de desenvolvimento.

Primeiros passos

Para começar com a Ação de Código, crie um novo 'Action Dialogstate' e selecione o Código plugin como uma ação.

Argumentos no Editor de Código

Você pode passar argumentos para suas Ações de Código atribuindo-lhes chaves. Suas chaves estarão disponíveis para a args variável dentro do Editor de Código.

Função ChatlayerResponseBuilder

O ChatlayerResponseBuilder função retorna uma instância auxiliar que permite direcionar sua conversa enviando mensagens como bot, navegando para blocos ou até criando dados de sessão.

Para começar a manipular dados da conversa em sua ação de código, simplesmente chame a função ChatlayerResponseBuilder() que retornará uma ChatlayerResponseBuilder instância.

O ChatlayerResponseBuilder possui uma interface fluente, isso significa que toda função que você chamar retornará a mesma instância. Isso facilita encadear múltiplas chamadas de função quando, por exemplo, você deseja mostrar uma mensagem e manipular dados de sessão ao mesmo tempo.

Sempre que quiser publicar suas alterações na conversa, você deve chamar a send() função.

ChatlayerResponseBuilder()
    .addSessionVariable("user", { address: { ... } })
    .addMessage("Obrigado por compartilhar seu endereço!")
    .send();

Outra forma de alcançar o mesmo resultado:

const builder = ChatlayerResponseBuilder();
builder.addSessionVariable("user", { address: { ... } });
builder.addMessage("Obrigado por compartilhar seu endereço!");
builder.send();

Definir variáveis ou enviar mensagens

O ChatlayerResponseBuilder possui a capacidade de definir variáveis ou adicionar mensagens ao chatbot. Ambos são mostrados no exemplo abaixo:

addSessionVariable(namespace: string, data: any): Insere uma variável em um determinado namespace dentro da sessão.

addMessage(message: string): Adiciona uma mensagem de texto a ser enviada pelo bot.

ChatlayerResponseBuilder()
    .addSessionVariable("user", 'Joachim')
    .addMessage("addSessionVariable concluído.")
    .send();

Para aprimorar ainda mais suas variáveis, você pode armazenar múltiplas variáveis sobre o usuário em um objeto.

ChatlayerResponseBuilder()
    .addSessionVariable("user", { firstName: "Joachim", lastName: "Chatbot" })
    .send();

Se você quiser usar essa informação em uma mensagem do bot, simplesmente digite {user.lastName} e a informação ficará visível no chatbot!

Próximos ou blocos anteriores

Com base em código, variáveis ou outra entrada, você pode direcionar a conversa para outros dialogstates. Com o código abaixo você pode ir para um próximo dialogstate.

setNextDialogState(dialogstateId: string)

Encaminha a conversa para o ID do dialogstate fornecido.

const { introductionDialogstate } = args;

const chatlayer = ChatlayerResponseBuilder();
chatlayer.setNextDialogState(introductionDialogstate);
chatlayer.send();

Funcionalidades de Mensagem do Bot

No editor de código, algumas funcionalidades de 'mensagem do bot' também estão disponíveis, como respostas rápidas ou botões. Para funcionalidades mais aprofundadas, essas mesmas opções podem ser criadas usando código.

addCarousel

No Editor de Código também é possível adicionar um carrossel, assim como em Mensagens. Isso pode agregar valor quando conteúdo dinâmico precisa ser exibido ou para combinar um bloco de Mensagem e Ação em um só.

ChatlayerResponseBuilder().addCarousel([
    {
        title: 'Item 1',
        imageUrl: 'https://st.depositphotos.com/1708346/1858/i/600/depositphotos_18582903-stock-photo-carousel-at-night.jpg',
        buttons: [
            { type: 'web_url', url: 'https://docs.chatlayer.ai', title: 'Docs' }
        ]
    },
    {
        title: 'Item 2',
        // Isto é opcional
        subTitle: 'Legenda do Item 2',
        // Isto também é opcional, redirecionará o usuário para um certo site quando clicarem na imagem do carrossel
        webUrl: 'https://docs.chatlayer.ai',
        imageUrl: 'https://st.depositphotos.com/1708346/1858/i/600/depositphotos_18582903-stock-photo-carousel-at-night.jpg',
        buttons: [
            { type: 'web_url', url: 'https://docs.chatlayer.ai', title: 'Docs' }
        ]
    }
]).send();

addQuickReplies

Assim como o exemplo acima, Respostas Rápidas também podem ser criadas no editor de código. Ao copiar o código abaixo você pode adicionar quantos botões de Resposta Rápida forem necessários.

const quickReplies = [
[
  {
    title: "Opção 1",
    payload: {
      nextDialogstateId: args.setNextDialogstateDs,
      params: [
        // Isto será definido na sessão.0
        { key: "choice", value: "option1" },
      ],
    },
  },
  {
    title: "Opção 2",
    payload: {
      nextDialogstateId: args.addHtmlDs,
      params: [
        // Isto será definido na sessão.
        { key: "choice", value: "option1" },
      ],
    },
  },
];

ChatlayerResponseBuilder()
    .addQuickReplies({
        title: 'Como podemos ajudá-lo?', // este é o título das Respostas Rápidas
        quickReplies,
    })
    .send();

addButtonGroup

Com mensagens do bot também podemos adicionar botões, mas com código há mais variedade do que na mensagem do bot.

Esses botões são criados com o código abaixo
const invoices = [
 "123",
 "456",
 "789"
]

const buttons = invoices.map((invoiceNumber, index) => ({
    type: 'postback',
    title: 'Escolher ' + invoiceNumber,
    payload: {
        nextDialogstateId: args.nextDialogstate,
        params: [
            { key: 'chosenNumber', value: invoiceNumber },
        ],
    },
}));

ChatlayerResponseBuilder()
    .addButtonGroup({
        title: "Estes botões 'postback' podem ser usados para navegar para um determinado diálogo do bot e definir uma variável quando um usuário clicar neles.",
        buttons,
    })
    .addButtonGroup({
        title: 'Você também pode adicionar botões de URL.',
        buttons: [
            { type: 'web_url', title: 'docs', url: 'https://docs.chatlayer.ai' },
            { type: 'phone_number', title: 'Ligar 1207', payload: '1207'}
        ]
    })
    .send();

Aqui, os 'invoices' são as diferentes opções de botão exibidas. Com o .addButtonGroup você pode adicionar esses botões ou criar botões de URL.

Adicionar HTML ou Iframe

HTML pode ser adicionado no chatbot para mostrar uma saída mais diversa ao usuário.

ChatlayerResponseBuilder()
    .addHtml(`
        <h1>Este é um cabeçalho</h1>
        <p>Infelizmente, mensagens em html só funcionarão no widget web.</p>
    `, { withBalloon: true })
    .send();

Iframes podem ser usados para incorporar outras páginas no chatbot. Um exemplo perfeito de por que você precisaria de um iframe é incorporar vídeos do Youtube.

ChatlayerResponseBuilder()
    .addIframe("https://www.youtube.com/watch?v=yaYzSQn9rL4", {
        withBalloon: false,
        height: "200px"
    })
    .send();

Adicionar mídia

O addMediaMessage o método suporta o envio de imagens, arquivos de áudio e vídeo através de ações de código.

// Enviar uma imagem
ChatlayerResponseBuilder()
    .addMediaMessage({
        type: "image",
        url: "<IMAGE_URL>"
    })
    .send();

// Enviar um arquivo de áudio
ChatlayerResponseBuilder()
    .addMediaMessage({
        type: "audio",
        url: "<AUDIO_URL>"
    })
    .send();

// Enviar um vídeo
ChatlayerResponseBuilder()
    .addMediaMessage({
        type: "video",
        url: "<VIDEO_URL>"
    })
    .send();

Biblioteca utilitária e chamadas de API

A funcionalidade a seguir existe dentro do escopo da Ação de Código:

lodash (_)

Lodash é uma biblioteca utilitária JavaScript. Você pode encontrar mais informações aqui.

const introductionDialogstate = _.get(args, 'introductionDialogstate');

const chatlayer = ChatlayerResponseBuilder();
chatlayer.setNextDialogState(introductionDialogstate);
chatlayer.send();

fetch

Fetch permite que você realize chamadas de API. Por favor, consulte sua documentação para saber mais.

const url = 'https://gorest.co.in/public/v1/users';
const response = await fetch(url).then((res) => {
    // res.status >= 200 && res.status < 300
    if (res.ok) {
        return res;
    } else {
        throw new Error(res.statusText);
    }
});

const json = await response.json();

const person = _.get(json, 'results[0]');

const chatlayer = ChatlayerResponseBuilder();
chatlayer.addSessionVariable('profile', userProfile);
chatlayer.send();

CryptoJS

CryptoJS é uma coleção de algoritmos criptográficos padrão e seguros implementados em JavaScript. Por favor, acesse seu documentação para saber mais.

Criando um pequeno atraso entre diálogos do bot

Recomendamos usar o bloco de delay para criar um atraso entre diálogos do bot. Você pode aprender mais sobre como isso funciona aqui: Ação

Para criar um atraso entre os segundos inteiros, como 1500 milissegundos ou 1,5 segundos, adicione um widget de Código à sua ação em vez do Delay mostrado acima e cole o código a seguir:

const builder = ChatlayerResponseBuilder();

await new Promise((resolve)=>{_.delay(resolve,1500)});
builder.send();

Você pode ajustar a duração do atraso substituindo 1500 por 2500 (2,5 segundos) etc.

Last updated

Was this helpful?