Primeros pasos
@bot/provider
Avanzado
Comunidad
Meta
Más detalles de configuración puedes consultarlos aquí.
Configuracion inicial
Referencia completa: aqui
const MetaProvider = require('@bot-whatsapp/provider/meta')
const main = async () => {
const adapterDB = new MockAdapter()
const adapterFlow = createFlow([flowPrincipal])
const adapterProvider = createProvider(MetaProvider, {
jwtToken: 'jwtToken',
numberId: 'numberId',
verifyToken: 'verifyToken',
version: 'v16.0',
})
createBot({
flow: adapterFlow,
provider: adapterProvider,
database: adapterDB,
})
}
main()
Enviar texto
Te presentamos aquí un ejemplo de cómo puedes enviar un mensaje con Meta. Recuerda que ctx.from puede ser reemplazado por un número de teléfono en este formato: 59170000000, donde el 591 es el código de país y el 70000000 es el número de teléfono
const flowMensaje = addKeyword('hola')
.addAnswer(
'Aqui va un mensaje',
{
capture: true,
},
async (ctx, {provider}) => {
await provider.sendtext(ctx.from, 'mensaje')
}
)
Enviar medios (imagen, pdf, audio, video)
Aquí te mostramos un ejemplo de cómo puedes enviar archivos multimedia con Meta
const flujoFinal = addKeyword('hola').addAnswer('Hola!', null, async (ctx, { flowDynamic}) => {
await flowDynamic([
{
body:'imagen',
media:"https://i.imgur.com/1XEiIGq.png"
}
])
await flowDynamic([
{
body:'video',
media:"https://bot-whatsapp.netlify.app/videos/console.mp4"
}
])
})
Enviar botones sin utilizar el proveedor (hasta 3 botones)
Aquí puedes ver un ejemplo de cómo enviar botones sin necesidad de usar el proveedor. Ten en cuenta que puedes enviar hasta un máximo de 3 botones.
const flowMensaje = addKeyword('hola')
.addAnswer(
'Aqui va un mensaje',
{
capture: true,
buttons: [
{body: 'opcion 1'},
{body: 'opcion 2'},
{body: 'opcion 3'},
]
},
)
Si necesitas enviar botones de manera específica utilizando el proveedor, puedes revisar la ruta "node_modules/@bot-whatsapp/provider/meta/index.cjs" dentro de tu proyecto.
Enviar lista
A continuación, te mostramos un ejemplo de cómo enviar listas de opciones con Meta. Puedes adaptarlo a tus necesidades.
const flowServices = addKeyword('hola')
.addAnswer(
'Aqui va un mensaje',
{
capture: true
},
async (ctx, {provider}) => {
const headerText = 'HEADER_TEXT
const bodyText = 'BODY_TEXT'
const footerText = 'FOOTER_TEXT'
const buttonList = 'BUTTON_LIST'
const listParams = [
{
title: 'TITLE_1',
rows: [
{
id: 'ID_1',
title: 'TITLE_1',
description: 'DESCRIPTION_1'
},
{
id: 'ID_2',
title: 'TITLE_2',
description: 'DESCRIPTION_2'
},
{
id: 'ID_3',
title: 'TITLE_3',
description: 'DESCRIPTION_3'
}
]
},
{
title: 'TITLE_2',
rows: [
{
id: 'ID_1',
title: 'TITLE_1',
description: 'DESCRIPTION_1'
},
{
id: 'ID_2',
title: 'TITLE_2',
description: 'DESCRIPTION_2'
},
{
id: 'ID_3',
title: 'TITLE_3',
description: 'DESCRIPTION_3'
}
]
}
]
await provider.sendList(ctx.from, headerText, bodyText, footerText, buttonList ,listParams)
}
)
Enviar lista (otro metodo)
Aquí te mostramos una variación de cómo enviar listas de opciones con Meta.
const flowMensaje = addKeyword('hola')
.addAnswer(
'Aqui va un mensaje',
{
capture: true
},
async (ctx, {provider}) => {
const list = {
"header": {
"type": "text",
"text": "<HEADER_TEXT>"
},
"body": {
"text": "<BODY_TEXT>"
},
"footer": {
"text": "<FOOTER_TEXT>"
},
"action": {
"button": "<BUTTON_TEXT>",
"sections": [
{
"title": "<LIST_SECTION_1_TITLE>",
"rows": [
{
"id": "<LIST_SECTION_1_ROW_1_ID>",
"title": "<SECTION_1_ROW_1_TITLE>",
"description": "<SECTION_1_ROW_1_DESC>"
},
{
"id": "<LIST_SECTION_1_ROW_2_ID>",
"title": "<SECTION_1_ROW_2_TITLE>",
"description": "<SECTION_1_ROW_2_DESC>"
}
]
},
{
"title": "<LIST_SECTION_2_TITLE>",
"rows": [
{
"id": "<LIST_SECTION_2_ROW_1_ID>",
"title": "<SECTION_2_ROW_1_TITLE>",
"description": "<SECTION_2_ROW_1_DESC>"
},
{
"id": "<LIST_SECTION_2_ROW_2_ID>",
"title": "<SECTION_2_ROW_2_TITLE>",
"description": "<SECTION_2_ROW_2_DESC>"
}
]
}
]
}
}
await provider.sendLists(ctx.from, list)
}
)
Ejecutar Meta
Te proporcionamos una guía para comenzar a ejecutar tu chatbot con la API de Meta. Puedes encontrar los detalles aquí.
- 📄 Editar esta pagina
Forma parte de esta comunidad mejorando la documentación siente libre de poder agregar o editar lo que quieras