Перейти к содержанию

Варианты использования#

Данная библиотека поддерживает два различных варианта использования в зависимости от ваших потребностей:

1. Самостоятельный бот#

Вы можете запустить бота как самостоятельный сервис, который автоматически прослушивает и обрабатывает сообщения WhatsApp:

const bot = new WhatsappGptBot({
    idInstance: "your-instance-id",
    apiTokenInstance: "your-token",
    openaiApiKey: "your-openai-api-key",
    model: "gpt-4o",
    systemMessage: "Вы - полезный ассистент."
});

// Начать прослушивание вебхуков и обработку сообщений
bot.start();

2. Обработчик сообщений#

Альтернативно, вы можете использовать бота как утилиту для обработки сообщений в вашем собственном боте или приложении:

const gptBot = new WhatsappGptBot({
    idInstance: "your-instance-id",
    apiTokenInstance: "your-token",
    openaiApiKey: "your-openai-api-key",
    model: "gpt-4o",
    systemMessage: "Вы - полезный ассистент."
});

// Не нужно вызывать start() - просто используйте processMessage когда нужно
const { response, updatedData } = await gptBot.processMessage(message, sessionData);

// Обработайте ответ своим способом
await yourBot.sendText(message.chatId, response);

// Сохраните обновленные данные сессии в своей системе состояний
yourSessionData.gptSession = updatedData;

Пример интеграции#

Вот как интегрировать GPT-бота в ваш собственный бот, основанный на состояниях:

interface CustomSessionData {
    lang?: string;
    gptSession?: GPTSessionData;  // Хранение данных сессии GPT
}

const gptState: State<CustomSessionData> = {
    name: "gpt_state",
    async onEnter(message, data) {
        // Инициализация сессии GPT
        data.gptSession = {
            messages: [{ role: "system", content: gptBot.systemMessage }],
            lastActivity: Date.now()
        };
        await bot.sendText(message.chatId, "Чат с GPT начат!");
    },
    async onMessage(message, data) {
        // Обработка сообщений с помощью GPT-бота
        const { response, updatedData } = await gptBot.processMessage(
            message, 
            data.gptSession
        );

        await bot.sendText(message.chatId, response);
        data.gptSession = updatedData;

        return undefined;  // Остаться в текущем состоянии
    }
};

Эта гибкость позволяет вам либо запускать бота независимо, либо интегрировать его возможности GPT в вашу систему, сохраняя полный контроль над потоком разговора и управлением состояниями.

Ключевые моменты об этих вариантах:

  1. Самостоятельный бот

    • Использует внутреннее управление состояниями
    • Автоматически обрабатывает вебхуки
    • Лучше подходит для простых, однофункциональных GPT-чатботов
    • Требует вызова bot.start()
  2. Обработчик сообщений

    • Не требует внутреннего управления состояниями
    • Не обрабатывает вебхуки
    • Идеально подходит для интеграции в существующих ботов
    • Использует только возможности обработки GPT
    • Более гибкий и контролируемый
    • Никогда не вызывайте start() - просто используйте processMessage()