SDK - Chatbot
Funções do SDK
Esta seção reúne as principais funcionalidades disponíveis para integração com o Tatodesk, incluindo recursos do SDK, envio de mensagens via WhatsApp e SMS, além de operações relacionadas a notificações, CRM e metadados de sessão. Abaixo, você encontrará um menu interativo que facilita a navegação entre os tópicos, permitindo acesso rápido às descrições e exemplos de uso de cada funcionalidade.
Clique nos tópicos abaixo para navegar rapidamente entre os assuntos:
CRM;
Envio de textos e multimídias
Essas funções são utilizadas para interagir com o SDK e enviar mensagens formatadas de diferentes tipos, como texto, imagem, arquivo, vídeo, áudio e link.
sdk.send.text("seu texto")
sdk.send.image(url)
sdk.send.file(url)
sdk.send.video(url)
sdk.send.audio(url)
sdk.send.link("Texto","Url")Envio de multimídia passando Headers - Criação de URL
sdk.chatbot.externalMedia(method, url, options, body)Aqui é feito uma chamada à uma api externa e utiliza-se dos parâmetros (method, url, options e body) para requisitar os dados dessa api.
Exemplo de caso de uso:
const method = 'GET'
const url = `https://www.backendcliente.xx.gov.br/certidao/pdf idProfissional=${idProfissional}`
const options = {
headers: {
'Authorization': token,
'Application': 4
}
}
const res = await sdk.chatbot.externalMedia(method, url, options, body)
{ chatbotExternalMedia, error } = res
chatbotExternalMedia: String | null (Link de acesso à mídia externa)
error: Error | nullNeste exemplo, por meio do método GET (solicitação de dados), é feita uma requisição de um link externo passando um parâmetro pela URL, e através das 'options' são incluídos os cabeçalhos (headers) com informações de autorização.
A constante 'res' faz a chamada à API, que possui o link externo solicitado.
O resultado da chamada à API pode ter duas propriedades: 'chatbotExternalMedia', que pode ser uma string ou nulo. Se a resposta for bem-sucedida, será retornado o link. Caso contrário, a propriedade 'error', que é um objeto de erro ou nulo, conterá informações sobre o erro ocorrido.
Construção dinâmica de botões
const mensagemDoBotao = `Titulo acima dos botões`
const botoes = [
{
title: "Primeiro botão",
payload: "Primeiro botão",
without_bold: true
},
{
title: "Segundo botão",
payload: "Segundo botão",
without_bold: true
}
]
sdk.send.buttons(mensagemDoBotao, botoes)A função buttons é chamada a partir do objeto send do SDK e recebe dois argumentos. O primeiro é uma string, que define o título exibido acima dos botões. O segundo é um array de objetos, onde cada objeto representa um botão.
Cada objeto pode conter as seguintes propriedades:
title: texto exibido no botão;
payload: valor que identifica o botão quando ele é clicado;
without_bold: valor booleano (true ou false) que define se o texto será exibido sem negrito;
Registrando e capturando variáveis na sessão
await sdk.session.setAttribute(key,value)
let minhaVariavel = await sdk.session.getAttribute(key)
await sdk.session.deleteAttribute(key)Em sdk.session.setAttribute(key, value), a função setAttribute é chamada no objeto session do SDK para definir um atributo na sessão, onde key representa a chave do atributo e value o valor associado a essa chave.
Já em sdk.session.getAttribute(key), é chamada a função getAttribute no mesmo objeto para recuperar o valor armazenado na chave informada. O resultado retornado é armazenado na variável minhaVariavel.
Por fim, em sdk.session.deleteAttribute(key), a função deleteAttribute é usada para remover um atributo da sessão, identificado pela chave key.
Assim, uma expressão define, outra recupera e outra exclui informações específicas do usuário durante a sessão.
Request Get
const config = {
headers: {
'Convenio':convenio,
'Origem':origem,
'Authorization': authorization
}
}
const res = await sdk.net.get(`https://seudominio.com`,config)No exemplo, o objeto config contém a propriedade headers, que reúne três cabeçalhos compostos por pares de chave e valor:
Convenio: chave
'Convenio'e valor da variávelconvenio;Origem: chave
'Origem'e valor da variávelorigem;Authorization: chave
'Authorization'e valor da variávelauthorization.
A constante res armazena o resultado da requisição, e o uso do await faz com que o código aguarde a conclusão da chamada get antes de prosseguir com a execução.
Dessa forma, o programa só continua após o término da requisição e o recebimento da resposta do servidor.
Request Post
const config = {
headers: {
'Convenio':convenio,
'Origem':origem,
'Authorization': authorization
}
}O objeto config possui a propriedade headers, que contém três cabeçalhos definidos em pares de chave e valor:
Convenio: chave
'Convenio'e valor da variávelconvenio;Origem: chave
'Origem'e valor da variávelorigem;Authorization: chave
'Authorization'e valor da variávelauthorization.
Response
const req = {
nome_campo: valor_compo,
nome_campo_2: valor_campo_2
}Aqui é criado um objeto que possui as propriedades nome_campo e nome_campo_2, cada uma recebendo um valor correspondente de mesmo nome.
Request
const res = await sdk.net.post(`https://seudominio.com`, req, config);Em sdk.net.post(https://seudominio.com`, req, config) esta sendo utilizada a função post do objeto net do sdk para realizar uma requisição HTTP POST para a url.
Canais
sdk.channel.isWebchat()
sdk.channel.isWhatsapp()
sdk.channel.isInstagram()
sdk.channel.isTelegram()
sdk.channel.isFacebookMessenger()As funções do SDK são utilizadas para identificar o canal em uso.
Cada uma delas retorna um valor booleano (true ou false), informando se o canal específico está ativo.
Registrando Informações Adicionais
Info Chatbot:
await sdk.chatbot.addInfo(key, value)Info Atendimento Digital:
await sdk.contactCenter.setDataItem(key, value)
const objZap = sdk.session.getMetadataWhatsapp()
await sdk.chatbot.addInfo('NUMERO_WHATSAPP', objZap['phone'])A função getMetadataWhatsapp é chamada no objeto session do SDK para capturar informações da sessão atual do WhatsApp e armazenar o resultado na variável objZap.
Em seguida, a função addInfo é chamada no objeto chatbot do SDK, passando dois argumentos: a chave 'NUMERO_WHATSAPP' e o valor correspondente objZap['phone'].
CRM
const person = await sdk.crm.getPersonByText("81900000000")
{
person: {
ID: string
},
customFields: [
{
key: string,
value: string
}
],
tags: [
{
name: string
}
]
}Executa uma consulta por número de telefone via get e retorna um objeto com as propriedades:
person— dados básicos da pessoa (ex.:ID);customFields— array de campos personalizados{ key, value };tags— array de etiquetas{ name }.
const person = {
firstName:"nome da pessoa",
emails:["[email protected]"],
phones:["81900000000"],
tags:["WHATSAPP-OPT-IN"]
}
const p = await sdk.crm.createPerson(person)O objeto person é criado com as propriedades firstName, emails, phones e tags, que armazenam as informações da pessoa a ser cadastrada.
Em seguida, o método createPerson recebe esse objeto como argumento, utilizando seus dados para criar um novo registro de pessoa no CRM.
Adicionando Etiqueta no CRM
await sdk.crm.addTag(PERSON_ID,"TAG_NAME")O método addTag é chamado no objeto crm do sdk, recebendo como parâmetros PERSON_ID e TAG_NAME. Ele utiliza essas informações para adicionar a tag especificada ao registro da pessoa correspondente no CRM.
Adicionando Campos Customizados no CRM
const persons = await sdk.crm.listCRMPersonsByCustomField("KEY",value)Na constante persons, é chamado o objeto sdk, que retorna uma lista de pessoas armazenadas no crm.
Os parâmetros "KEY" e value são utilizados na busca para filtrar os registros de acordo com o campo personalizado informado.
Exemplo Estrutura Completa do Objeto
[
{
"person": {
"ID"
},
"customFields": [
{
"key": "string",
"value": "string"
}
],
"tags": [
{
"name": "string"
}
]
}
]Essa estrutura contém o objeto person, que possui a propriedade ID do tipo string.
O customFields é um array que armazena objetos com as propriedades key e value, representando os campos personalizados do person.
Por fim, o array tags contém objetos com a propriedade name, que indica as tags associadas à pessoa.
Ticket
Create Ticket
Possibilidades de se criar tickets através da SDK do builder, como alternativa aos formulários mágicos.
Estrutura do Componente - Exemplo:
const forms = []
forms.push({ key: "EMAIL", value: email })
forms.push({ key: "MATRICULA", value: matricula })
forms.push({ key: "CPF/CNPJ", value: documento })
forms.push({ key: "NOME", value: nomeCompleto })
forms.push({ key: "ENDEREÇO_DO_IMOVEL", value: endereco })
forms.push({ key: "TELEFONE", value: telefone })
if (comprovante) {
forms.push({ key: "DOCUMENTO_DO_IMOVEL", value: comprovante })
}
forms.push({ key: "IDENTIDADE", value: imagemDocumento })
forms.push({ key: "SELFIE", value: imagemCliente })
forms.push({ key: "CONTA_DE_AGUA_DO_IMOVEL", value: imagemConta })
if (imagemContaPaga) {
forms.push({ key: "COMPROVANTE_DE_PAGAMENTO_RECENTE", value: imagemContaPaga })
}
forms.push({ key: "INFORME_SUA_RELAÇAO_COM_O_IMOVEL", value: relacao })
const res = await sdk.ticket.create(
organizationID,
projectID,
departmentID,
description,
attendanceTypeIDs,
forms,
formID,
2
)No código, a constante forms é um array que começa vazio e vai recebendo objetos por meio do método push.
Cada objeto possui as propriedades key e value, por exemplo, { key: "EMAIL", value: email }, adicionando o campo "EMAIL" com seu respectivo valor.
O if é usado para incluir campos opcionais, como { key: "DOCUMENTO_DO_IMOVEL", value: comprovante }, apenas quando a variável comprovante estiver definida.
A constante res armazena o retorno da função create do objeto ticket do sdk, que recebe diversos parâmetros (organizationID, projectID, departmentID, description, attendanceTypeIDs, forms, formID, 2) e cria um novo ticket no sistema com os dados fornecidos.
Contact Center
Pulando o formulário mágico ao ser direcionado ao atendente humano:
await sdk.contactCenter.skipForm()Pulando o grupo, subgrupo, especialidade, subespecialidade, área e subárea:
await sdk.contactCenter.skipQuestion()Pulando o horário de atendimento personalizado:
await sdk.contactCenter.skipAttendanceGroupOpeningHour()O await indica que cada uma dessas chamadas é assíncrona, ou seja, o código aguarda sua execução antes de prosseguir.
Cada método é responsável por ignorar uma etapa específica do fluxo:
skipForm()→ pula o formulário mágico, enviando o atendimento diretamente ao humano.skipQuestion()→ ignora as perguntas de categorização (grupo, subgrupo, especialidade, área, etc.).skipAttendanceGroupOpeningHour()→ pula a verificação do horário de atendimento personalizado.
Dessa forma, o fluxo segue automaticamente para a próxima etapa, tornando o processo mais ágil e evitando que o usuário precise preencher ou selecionar informações já conhecidas pelo sistema.
Atribuindo informação no atendimento ao ser direcionado ao atendente humano:
Chave - Valor Chaves disponíveis para uso:
CPF_CNPJNOME
await sdk.contactCenter.setFormItem("CPF_CNPJ", cpf)A função setFormItem("CPF_CNPJ", cpf) é utilizada para definir um item do formulário durante o atendimento. O comando await indica que a chamada é assíncrona, ou seja, o código aguardará a conclusão da operação antes de prosseguir.
O objeto sdk contém o objeto contactCenter, responsável pelas operações relacionadas ao atendimento humano. No exemplo acima, o campo "CPF_CNPJ" é definido com o valor armazenado na variável cpf, exibindo essa informação na fila do atendente.
Obtendo variáveis da sessão:
await sdk.session.getMetadataWebchat()A função getMetadataWebchat() é utilizada para obter os metadados da sessão atual do canal Webchat. O comando await indica que a chamada é assíncrona, ou seja, o código aguardará o retorno dos dados antes de continuar a execução.
O objeto sdk contém o objeto session, responsável por armazenar e fornecer informações relacionadas à sessão ativa. Como resultado, são retornadas as informações de contexto do atendimento em andamento no Webchat.
Exemplo de caso de uso:
const metadataWebchat = sdk.session.getMetadataWebchat();
telefoneParam = metadataWebchat.browser.queryParams["telefone"];Na primeira linha, a função getMetadataWebchat() é utilizada para capturar os metadados da sessão do Webchat, armazenando o resultado na constante metadataWebchat. Na segunda linha, o valor associado à chave "telefone" é acessado a partir de metadataWebchat.browser.queryParams e armazenado na constante telefoneParam.
Obtendo informações pelo nome:
As funções abaixo realizam chamadas assíncronas para buscar informações específicas dentro do objeto contactCenter, presente no objeto principal sdk.
Em todos os casos, o parâmetro passado é uma string que representa o nome da entidade que se deseja localizar.
Obtém o Departamento pelo nome:
await sdk.contactCenter.getDepartmentByName(nomeDepartamento)Obtém o Grupo de Atendimento pelo nome:
await sdk.contactCenter.getAttendanceGroupByName(nomeGrupo)Obtém o Grupo de Especialização pelo nome:
await sdk.contactCenter.getGroupSpecializationByName(nomeEspecialidade)Obtém a Subespecialização pelo nome:
await sdk.contactCenter.getSubSpecializationByName(nomeSubEspecialidade)Obtém a Área pelo nome:
await sdk.contactCenter.getAreaByName(nomeArea)Obtém a Subárea pelo nome:
await sdk.contactCenter.getSubAreaByName(nomeSubArea)Em todos os métodos, o await indica que a execução do código aguardará o retorno da chamada assíncrona antes de prosseguir. O retorno esperado é um objeto contendo as informações da entidade localizada.
Definindo Informações do Atendimento
As funções abaixo são utilizadas para definir os identificadores (ID) das entidades relacionadas a um atendimento dentro do objeto contactCenter, presente no objeto principal sdk.
Cada função recebe um parâmetro que representa o ID da entidade que será associada ao atendimento.
Define o departamento do atendimento:
await sdk.contactCenter.setDepartmentID(departmentoID)Define o grupo de atendimento:
await sdk.contactCenter.setAttendanceGroupID(grupoAtendimentoID)Define a especialização do grupo de atendimento:
await sdk.contactCenter.setAttendanceGroupSpecializationID(grupoEspecializacaoID)Define a subespecialização do atendimento:
await sdk.contactCenter.setSubspecializationID(subEspecialidadeID)Define a área do atendimento:
await sdk.contactCenter.setAreaID(areaID)Define a subárea do atendimento:
await sdk.contactCenter.setSubareaID(subAreaID)Todas as funções utilizam o await para aguardar a execução assíncrona da chamada. Essas definições são usadas para categorizar e direcionar corretamente o atendimento dentro da estrutura do Contact Center.;
ChatBot
Adicionando Informações Adicionais:
await sdk.chatbot.addInfo(key, value)A função addInfo(key, value) adiciona informações personalizadas à sessão do chatbot. O parâmetro key representa a chave identificadora da informação, e value o valor associado a essa chave. A chamada é feita de forma assíncrona, aguardando a execução com o uso de await.
Marketing
Obtendo informações (metadatas) das notificações avulsas e campanhas do WhatsApp:
As funções abaixo são utilizadas para recuperar dados adicionais (metadados) relacionados a campanhas e notificações do WhatsApp, acessando o objeto mkt dentro do sdk.
Ambas executam chamadas assíncronas, aguardando o retorno com o uso de await.
await sdk.mkt.getWhatsappNotificationMetadatas()Retorna os metadados das notificações avulsas enviadas pelo WhatsApp.
wait sdk.mkt.getWhatsappMktCampaignTargetAudienceMetadatas()Retorna os metadados do público-alvo de uma campanha de marketing no WhatsApp.
Essas funções permitem acessar informações adicionais da sessão ou campanha ativa, úteis para monitoramento e análise de desempenho das comunicações via WhatsApp.
Last updated