Обработка сообщений#
Бот автоматически обрабатывает различные типы сообщений WhatsApp и преобразует их в формат, понятный моделям OpenAI.
Поддерживаемые типы сообщений#
- Текст: Обычные текстовые сообщения
- Изображения: Фотографии с опциональными подписями (поддерживается в моделях с возможностью обработки изображений)
- Аудио: Голосовые сообщения с автоматической транскрипцией
- Видео: Видеосообщения с подписями
- Документы: Вложенные файлы
- Опросы: Сообщения с опросами и обновлениями опросов
- Местоположение: Общий доступ к местоположению
- Контакты: Общий доступ к контактам
Реестр обработчиков сообщений#
Бот использует реестр обработчиков сообщений для обработки различных типов сообщений:
// Доступ к реестру
const registry = bot.messageHandlers;
// Создание пользовательского обработчика сообщений
class CustomMessageHandler implements MessageHandler {
canHandle(message: Message): boolean {
return message.type === "custom-type";
}
async processMessage(message: Message): Promise<any> {
// Обработка сообщения
return "Обработанный контент";
}
}
// Регистрация пользовательского обработчика
bot.registerMessageHandler(new CustomMessageHandler());
// Замена существующего обработчика
bot.replaceHandler(TextMessageHandler, new CustomTextHandler());
Система промежуточного ПО (Middleware)#
Система промежуточного ПО позволяет настраивать обработку сообщений перед отправкой в GPT и обработку ответов перед отправкой пользователю.
Добавление промежуточного ПО для сообщений#
// Обработка сообщений перед отправкой в GPT
bot.addMessageMiddleware(async (message, messageContent, messages, sessionData) => {
// Добавление пользовательского контекста в разговор
if (message.type === "text" && message.chatId.endsWith("@c.us")) {
// Добавление информации о пользователе из базы данных
const userInfo = await getUserInfo(message.chatId);
// Изменение текущего содержимого сообщения
const enhancedContent = `[Пользователь: ${userInfo.name}] ${messageContent}`;
return {
messageContent: enhancedContent,
messages
};
}
return {
messageContent,
messages
};
});
Добавление промежуточного ПО для ответов#
// Обработка ответов GPT перед отправкой пользователю
bot.addResponseMiddleware(async (response, messages, sessionData) => {
// Форматирование или изменение ответа
const formattedResponse = response
.replace(/\bGPT\b/g, "Ассистент")
.trim();
// Вы также можете изменить сообщения, которые будут сохранены в истории
return {
response: formattedResponse,
messages
};
});