[🐛] Error timeout al tratar de enviar mensaje
raymundo-salazar opened this issue · comments
¿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
Hola, te recomendaria mejor hacerlo de la siguiente forma:
la version que uso es la v 0.1.3-alpha.22
// routes.ts
import polka from "polka";
import { handleSendMessage } from "../services/index";
export const setRoutes = (server: polka.Polka) => {
// Ruta para enviar mensajes
server.post("/send-message", handleSendMessage);
};
// services.ts
import { inHandleCtx } from "@bot-whatsapp/provider-baileys";
import "dotenv/config";
import { Request, Response } from "express";
export const handleSendMessage = inHandleCtx(
async (bot, req: Request, res: Response) => {
try {
const phonePrefix = process.env.PREX_PHONE_DEFAULT || "";
const body = req.body;
const phone = `${phonePrefix}${body.phone}`;
const message = body.message;
const imageUrl = body.imageUrl;
const options = imageUrl ? { image: imageUrl } : {};
await bot.sendMessage(phone, message, options);
res.end(`Mensaje enviado a ${phone}`);
} catch (error) {
console.error(error);
res.status(500).end("Error al enviar el mensaje");
}
}
);
Prueba actualizando a builderbot https://www.builderbot.app/en/tutorials/migrate-to-builderbot