Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

198
Visualizações
¿Cómo enviar una respuesta de cadena de código qr en whatsapp-web.js?

Estoy tratando de enviar el código qr de whatsapp-web.js a mi interfaz con el siguiente código

 const router = require("express").Router(); router.get("/", async (req: any, res: any) => { const qrcode = require("qrcode-terminal"); const { Client, LocalAuth } = require("whatsapp-web.js"); const client = new Client({ authStrategy: new LocalAuth(), }); client.on("qr", (qr: any) => { // qrcode.generate(qr, { small: true }); res.send(qr) }); client.on("ready", (qr:any) => { console.log("Client is ready!"); const number = [ { phone: "number1", name: "name1" }, { phone: "number2", name: "name2" }, ]; number.forEach((el) => { // Your message. const text = `teste ${el.name}`; // Getting chatId from the number. // we have to delete "+" from the beginning and add "@c.us" at the end of the number. const chatId = el.phone.substring(1) + "@c.us"; // Sending message. client.sendMessage(chatId, text); }); }); client.initialize(); res.status(200).json("ok"); }); module.exports = router;

pero no está enviando. Tal vez porque hay un retraso para generar este código. Pueden ayudarme chicos

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Está registrando una devolución de llamada que envía el qr cuando se emite el evento "qr". El res.status(200) se ejecuta antes de que se emita el evento (incluso si se emite inmediatamente, la devolución de llamada se ejecutará después del resto de la función, ya que el nodo tiene un solo subproceso).

No estoy familiarizado con el paquete de whatsapp, pero si sabe que el evento qr solo se emitirá una vez o solo necesita la primera emisión, puede envolverlo en una promesa.

Probar

 router.get('/', async (req, res) => { const client = new Client(...) let qr = await new Promise((resolve, reject) => { client.once('qr', (qr) => resolve(qr)) }) res.send(qr) }

Tenga en cuenta que utilicé client.once para que la devolución de llamada no se registre en el evento del cliente después de que se emita un evento para evitar pérdidas de memoria.

Es una buena práctica agregar un escenario de rechazo para evitar casos que la promesa no resuelve.

 router.get('/', async (req, res) => { try { const client = new Client(...) let qr = await new Promise((resolve, reject) => { client.once('qr', (qr) => resolve(qr)) setTimeout(() => { reject(new Error("QR event wasn't emitted in 15 seconds.")) }, 15000) }) res.send(qr) } catch (err) { res.send(err.message) } }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda