Пример демо-бота#
См. наш демо-чат-бот для комплексного демо-чат-бота, демонстрирующего множество функций:
import {
GPTSessionData,
ImageMessageHandler,
ProcessMessageMiddleware,
ProcessResponseMiddleware,
WhatsappGptBot,
OpenAIModel,
} from "@green-api/whatsapp-chatgpt";
import * as dotenv from "dotenv";
import { Message } from "@green-api/whatsapp-chatbot-js-v2";
import { ChatCompletionMessageParam } from "openai/resources/chat/completions";
import OpenAI from "openai";
dotenv.config();
// Пользовательский обработчик изображений с расширенными описаниями
class EnhancedImageHandler extends ImageMessageHandler {
async processMessage(message: Message, openai: OpenAI, model: OpenAIModel): Promise<any> {
const result = await super.processMessage(message, openai, model);
if (typeof result === "string") {
return result.replace(
"[The user sent an image",
"[Пользователь отправил изображение. Сообщите ему, что вы не та модель, которую он должен использовать"
);
}
return result;
}
}
// Примеры промежуточного ПО
// Промежуточное ПО для логирования
const loggingMessageMiddleware: ProcessMessageMiddleware = async (
message, messageContent, messages, _
) => {
console.log(`[${new Date().toISOString()}] Пользователь (${message.chatId}): `,
typeof messageContent === "string"
? messageContent
: JSON.stringify(messageContent));
return {messageContent, messages};
};
// Инициализация бота
const bot = new WhatsappGptBot({
idInstance: process.env.INSTANCE_ID || "",
apiTokenInstance: process.env.INSTANCE_TOKEN || "",
openaiApiKey: process.env.OPENAI_API_KEY || "",
model: "gpt-4o",
systemMessage: "Вы - полезный WhatsApp-ассистент, созданный GREEN-API",
maxHistoryLength: 15,
temperature: 0.5,
handlersFirst: true,
clearWebhookQueueOnStart: true,
});
// Обработчики команд
bot.onText("/help", async (message, _) => {
const helpText = `*WhatsAppGPT Демо-бот*\n\nДоступные команды:\n- /help - Показать это сообщение помощи\n- /clear - Очистить историю разговора`;
await bot.sendText(message.chatId, helpText);
});
// Регистрация промежуточного ПО
bot.addMessageMiddleware(loggingMessageMiddleware);
// Замена обработчиков по умолчанию
bot.replaceHandler(ImageMessageHandler, new EnhancedImageHandler());
// Запуск бота
bot.start();
Этот демо-бот включает:
- Пользовательские обработчики сообщений
- Различные реализации промежуточного ПО
- Обработчики команд
- Пользовательские обработчики типов
- Обработку ошибок
Дополнительные примеры#
Мультиязычный бот#
import { WhatsappGptBot } from '@green-api/whatsapp-chatgpt';
import { detectLanguage } from './language-detector';
const bot = new WhatsappGptBot({
idInstance: "your-instance-id",
apiTokenInstance: "your-token",
openaiApiKey: "your-openai-api-key",
model: "gpt-4o"
});
// Добавление промежуточного ПО для определения языка
bot.addMessageMiddleware(async (message, content, messages, sessionData) => {
// Обрабатывать только текстовые сообщения
if (message.type !== 'text' || !message.text) {
return {messageContent: content, messages};
}
// Определение языка
const language = await detectLanguage(message.text);
// Сохранение языка в сессии
if (!sessionData.context) {
sessionData.context = {variables: {}};
}
sessionData.context.variables.language = language;
// Обновление системного сообщения с инструкцией о языке
const languageInstruction = `Пользователь пишет на ${language}. Отвечайте на том же языке.`;
// Поиск системного сообщения
const systemIndex = messages.findIndex(m => m.role === 'system');
if (systemIndex >= 0) {
// Обновление существующего системного сообщения
const updatedMessages = [...messages];
const currentContent = updatedMessages[systemIndex].content;
if (typeof currentContent === 'string' && !currentContent.includes('Пользователь пишет на')) {
updatedMessages[systemIndex].content = `${currentContent} ${languageInstruction}`;
}
return {messageContent: content, messages: updatedMessages};
} else {
// Добавление нового системного сообщения
return {
messageContent: content,
messages: [
{role: 'system', content: languageInstruction},
...messages
]
};
}
});
// Запуск бота
bot.start();