馃殌 隆Nuevo! builderbot cloud para No-code 隆Pru茅balo gratis!

Fast Entires

En muchos casos, los usuarios suelen escribir mensajes individuales en un corto per铆odo de tiempo. El comportamiento habitual del bot es responder a cada mensaje de forma independiente, lo que puede resultar un comportamiento molesto en algunos casos de uso.

Para este otro tipo de entornos puedes implementar una funcionalidad la cual puedes crear para tener un margen de 3000ms para que el usuario escriba un mensaje, y cada vez que escriba un mensaje en un tiempo inferior a 3000ms acumular谩 todos los mensajes y luego pasado el margen de tiempo el bot interpretar谩 todo como una sola conversaci贸n.

Aplicando esta implementaci贸n, lo que se consigue es que antes de pasar a la etapa de procesamiento, todos los mensajes independientes (3) se conviertan en uno (1) y se procesen como un mensaje independiente.

Gracias robmoncayonabux por compartir esta 煤til soluci贸n a un caso de uso muy particular.

En este ejemplo decimos 3000ms que equivale a 3 segundos pero puedes modificarlo a tu gusto en MESSAGE_GAP_SECONDS

interface Message {
  text: string;
  timestamp: number;
}

const messageQueue: Message[] = [];

const MESSAGE_GAP_SECONDS = 3000;

let messageTimer: NodeJS.Timeout | null = null;

/**
* Adds a message to the queue for later processing.
* @param messageText The text of the message to add to the queue.
* @returns A promise that resolves when the message queue is processed.
*/
async function enqueueMessage(messageText: string): Promise<void> {
  messageQueue.push({ text: messageText, timestamp: Date.now() });

  return new Promise((resolve) => {
      if (messageTimer) {
          clearTimeout(messageTimer);
      }

      messageTimer = setTimeout(() => {
          resolve(processMessageQueue());
      }, MESSAGE_GAP_SECONDS);
  });
}

/**
* Processes the message queue by combining all messages into a single string and clearing the queue.
* @returns The combined string of all messages in the queue.
*/
function processMessageQueue(): string {
  if (messageQueue.length === 0) {
      return '';
  }

  const combinedMessage = messageQueue.map(message => message.text).join(" ");
  messageQueue.length = 0;
  return combinedMessage;
}

export { enqueueMessage, processMessageQueue };

Recuerde que esta es una soluci贸n alternativa, y es posible que su implementaci贸n pueda mejorarse.

Guides

My first chatbot

Learn how build your first chatbot in few minutes

Read more

Concepts

Understand the essential concepts for building bots

Read more

Add Functions

The key to learning how to write flows is add-functions.

Read more

Plugins

Unlimitate and start implementing the community plugins.

Read more

Resources

Modularize

Learn how to modularise flows so that you can have a more maintainable bot.

Send Message

How to send a message via HTTP to start conversations, you can send multimedia as well.

Dockerizer

A good practice is to dockerise your bots to make them more maintainable and effective.

Events

Learning about events will make us more fluent when creating chatbots.