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í.