codigoencasa / bot-whatsapp

🤖 Crear Chatbot WhatsApp en minutos. Únete a este proyecto OpenSource (Typescript Version Pronto)
https://bot-whatsapp.netlify.app
MIT License
2.18k stars 766 forks source link

[🐛] Error timeout al tratar de enviar mensaje #1066

Open raymundo-salazar opened 3 weeks ago

raymundo-salazar commented 3 weeks ago

¿Que versión estas usando?

v2

¿Sobre que afecta?

Otro

Describe tu problema

Hola @leifermendez primero que nada muchas gracias por todo tu aporte.

Comunidad les comento el error que he estado teniendo para ver si me pueden apoyar. Estuve siguiendo el tutorial que se encuentra en este link https://youtu.be/u3YbNYAalDc sin embargo al momento me crear la ruta [POST] /message para enviar mensajes no me esta funcionando. Me termina respondiendo un error 408 Request Timeout.

Les comparto mis archivos involucrados para ver si pueden ayudarme a ver el error.

Otro dato interesante es que tengo un FLOW que se lanza con la keyword !hola y me responde Hola mundo!. Este esta funcionando bien, es decir, si me envia el mensaje de respuesta de manera correcta.

// app.ts

import {
  MemoryDB,
  addKeyword,
  createBot,
  createFlow,
  createProvider,
} from "@bot-whatsapp/bot";
import { BaileysProvider, handleCtx } from "@bot-whatsapp/provider-baileys";
import * as messages from "./controllers/messages";

const flowBienvenida = addKeyword("!hola").addAnswer("Hola mundo!");

const main = async () => {
  const provider = createProvider(BaileysProvider);

  provider.initHttpServer(process.env.PORT ? +process.env.PORT : 3002);

  provider.http?.server.post("/messages", handleCtx(messages.sendMessage)); // <--- esta es la ruta y hace referencia al metodo sendMessage del controller messages

  await createBot({
    flow: createFlow([flowBienvenida]),
    database: new MemoryDB(),
    provider,
  });
};

main();
// controllers/messages.ts

import { BaileysProvider } from "@bot-whatsapp/provider-baileys";
import { WASocket } from "@bot-whatsapp/provider-baileys/dist/baileyWrapper";

type bot = Pick<BaileysProvider, "sendMessage"> & {
  provider: WASocket;
};

export const sendMessage = async (bot: bot, req, res) => {
  const phone = req.body.phone;
  const message = req.body.message;

  console.log(phone, message); // <---- Este console.log muestra de manera correcta el numero que le estoy enviando

  const ctx = await bot
    .sendMessage(phone, message, {})
    .catch((err) => console.log("Error", err)); // <-- despues de un tiempo sin hacer nada me regresa aquí el error 408 Request Timeout
  console.log(ctx);

  res.end("great!");
};
## ERROR TIMEOUT

Error Error: Timed Out
    at /Users/<user>/_WORK/whatsapp-bot/node_modules/.pnpm/@whiskeysockets+baileys@6.7.4/node_modules/@whiskeysockets/baileys/lib/Utils/generics.js:137:32 {
  data: {
    stack: 'Error\n' +
      '    at promiseTimeout (/Users/<user>/_WORK/whatsapp-bot/node_modules/.pnpm/@whiskeysockets+baileys@6.7.4/node_modules/@whiskeysockets/baileys/lib/Utils/generics.js:132:19)\n' +
      '    at waitForMessage (/Users/<user>/_WORK/whatsapp-bot/node_modules/.pnpm/@whiskeysockets+baileys@6.7.4/node_modules/@whiskeysockets/baileys/lib/Socket/socket.js:119:53)\n' +
      '    at query (/Users/<user>/_WORK/whatsapp-bot/node_modules/.pnpm/@whiskeysockets+baileys@6.7.4/node_modules/@whiskeysockets/baileys/lib/Socket/socket.js:141:22)\n' +
      '    at getUSyncDevices (/Users/<user>/_WORK/whatsapp-bot/node_modules/.pnpm/@whiskeysockets+baileys@6.7.4/node_modules/@whiskeysockets/baileys/lib/Socket/messages-send.js:166:30)\n' +
      '    at /Users/<user>/_WORK/whatsapp-bot/node_modules/.pnpm/@whiskeysockets+baileys@6.7.4/node_modules/@whiskeysockets/baileys/lib/Socket/messages-send.js:357:53\n' +
      '    at Object.transaction (/Users/<user>/_WORK/whatsapp-bot/node_modules/.pnpm/@whiskeysockets+baileys@6.7.4/node_modules/@whiskeysockets/baileys/lib/Utils/auth-utils.js:136:32)\n' +
      '    at relayMessage (/Users/<user>/_WORK/whatsapp-bot/node_modules/.pnpm/@whiskeysockets+baileys@6.7.4/node_modules/@whiskeysockets/baileys/lib/Socket/messages-send.js:279:30)\n' +
      '    at Object.sendMessage (/Users/<user>/_WORK/whatsapp-bot/node_modules/.pnpm/@whiskeysockets+baileys@6.7.4/node_modules/@whiskeysockets/baileys/lib/Socket/messages-send.js:652:23)\n' +
      '    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n' +
      '    at sendMessage (/Users/<user>/_WORK/whatsapp-bot/src/controllers/messages.ts:14:15)'
  },
  isBoom: true,
  isServer: false,
  output: {
    statusCode: 408,
    payload: {
      statusCode: 408,
      error: 'Request Time-out',
      message: 'Timed Out'
    },
    headers: {}
  }
}

De antemano muchas gracias a todos. Espero que me puedan apoyar con este error. Saludos.

Reproducir error

No response

Información Adicional

No response