Adicionando novos modelos de resposta ao Whatsapp (UnoAPI)
Base: /src/services/data_store_file.ts
O código fornecido apresenta uma função loadTemplates
que carrega os templates existentes a partir de um diretório específico. Caso não haja templates no diretório, são fornecidos quatro templates de exemplo com diferentes IDs (1, 2, 3 e 4) e conteúdos pré-definidos.
Para adicionar novos templates, você precisa seguir a estrutura existente no array templates
. Cada template é um objeto com as seguintes propriedades:
id
: Um identificador único para o template. Certifique-se de usar um valor que não esteja sendo usado por outro template.
name
: O nome do template.
status
: O status do template (por exemplo, 'APPROVED', 'PENDING', 'REJECTED', etc.).
category
: A categoria do template (por exemplo, 'UTILITY', 'SALES', 'SUPPORT', etc.).
language
: O idioma do template (por exemplo, 'pt_BR', 'en_US', etc.).
components
: Um array de componentes que compõem o template. Cada componente tem uma propriedade text
que contém o conteúdo do componente e uma propriedade type
que indica o tipo do componente (por exemplo, 'BODY', 'HEADER', 'FOOTER', etc.).
Dentro do conteúdo do componente, você pode criar variáveis usando chaves duplas {{}}
. Por exemplo, no template de ID 3, o conteúdo do componente é:
'*Olá!* \n Como podemos ajudar? {{contact.name}} / {{contact.number}} \n\n Digite sua dúvida abaixo:'
Nesse caso, {{contact.name}}
e {{contact.number}}
são variáveis que serão substituídas por valores específicos ao enviar o template. Essas variáveis podem representar informações como nome de contato, número de contato, data atual, etc.
Ao adicionar um novo template, certifique-se de fornecer valores adequados para todas as propriedades necessárias. Você pode adicionar quantos templates desejar, desde que cada um tenha um ID exclusivo.
Após adicionar os novos templates, a função loadTemplates
retornará um array contendo todos os templates, incluindo os novos.
Para adicionar, siga o exemplo do seguinte código:
dataStore.loadTemplates = async () => {
const templatesDir = `${SESSION_DIR}/${phone}/templates`
if (existsSync(templatesDir)) {
const templateFiles = readdirSync(templatesDir)
if (templateFiles.length > 0) {
return Promise.all(
templateFiles.map(async (filename) => {
const templateFile = `${templatesDir}/${filename}`
const string = readFileSync(templateFile)
if (string) {
return JSON.parse(string.toString())
}
throw new Error(`Failed to read template file: ${templateFile}`)
})
)
}
}
const templates = [
{
id: 1,
name: 'olá',
status: 'APPROVED',
category: 'UTILITY',
language: 'pt_BR',
components: [
{
text: '*Olá!* \n Estamos entrando em contato para dar prosseguimento ao atendimento. \n Verificamos que você demostrou interesse nos nossos planos de internet fibra através de uma conversa com nosso atendimento automático.',
type: 'BODY',
},
],
},
{
id: 2,
name: 'promoção',
status: 'APPROVED',
category: 'SALES',
language: 'pt_BR',
components: [
{
text: '*Aproveite a promoção!* \n Adquira nosso produto com *10% de desconto*. \n\n Digite *SIM* para mais informações.',
type: 'BODY',
},
],
},
{
id: 3,
name: 'dúvida',
status: 'APPROVED',
category: 'SUPPORT',
language: 'pt_BR',
components: [
{
text: '*Olá!* \n Como podemos ajudar? {{contact.name}} \n\n Digite sua dúvida abaixo:',
type: 'BODY',
},
],
},
{
id: 4,
name: 'aprovado',
status: 'APPROVED',
category: 'UTILITY',
language: 'pt_BR',
components: [
{
text: 'Oi {{1}}\n\nParabéns!!! ',
type: 'BODY',
},
],
},
];
return templates;
};
Depois só rodar o comando npm run build
na UnoAPI