Skip to content

Быстрый старт

В этом руководстве мы создадим AI-агента (бота), настроим его поведение и подключим к Telegram — всё через Worken REST API. Тот же подход работает для любого поддерживаемого канала.

Предварительные требования

1. Установите SDK (опционально)

Можно вызывать REST API напрямую через curl, или использовать официальный TypeScript SDK:

sh
npm install worken
# или
bun add worken
typescript
import { WorkenClient } from 'worken'

const worken = new WorkenClient({ apiKey: process.env.WORKEN_API_KEY })

2. Создайте бота

Бот (также называемый виртс) — это AI-агент, который будет обрабатывать диалоги.

sh
curl https://api.worken.ru/bots \
  -X POST \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{"name": "Бот поддержки"}'
typescript
const bot = await worken.bots.create({ name: 'Бот поддержки' })
console.log(bot.id) // bot_01j...
python
bot = client.bots.create(name="Бот поддержки")
print(bot.id)  # bot_01j...

Ответ:

typescript
type Bot = {
  id: string
  name: string
  status: 'active' | 'disabled' | 'error'
  project_id: string
  created_at: string
}

3. Настройте агента

Задайте системную инструкцию, AI-модель и параметры через эндпоинт настроек:

sh
curl https://api.worken.ru/bots/${BOT_ID}/settings \
  -X POST \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "ai": {
      "instruction": "Ты дружелюбный специалист поддержки компании Acme. Отвечай кратко и предлагай передать вопрос оператору, если не уверен в ответе.",
      "model": {
        "id": "openai/gpt-4o-mini",
        "temperature": 0.4,
        "max_tokens": 1024
      },
      "memory": {
        "lastMessages": 20,
        "semanticRecall": true,
        "workingMemory": { "enabled": true },
        "generateTitle": true
      }
    }
  }'
typescript
await worken.bots.settings.update(bot.id, {
  ai: {
    instruction:
      'Ты дружелюбный специалист поддержки компании Acme. Отвечай кратко и предлагай передать вопрос оператору, если не уверен в ответе.',
    model: {
      id: 'openai/gpt-4o-mini',
      temperature: 0.4,
      max_tokens: 1024,
    },
    memory: {
      lastMessages: 20,
      semanticRecall: true,
      workingMemory: { enabled: true },
      generateTitle: true,
    },
  },
})

Доступные модели

ID моделиПримечание
openai/gpt-4oМаксимальное качество
openai/gpt-4o-miniСамая быстрая, минимальная стоимость
anthropic/claude-3-5-sonnetОтличное рассуждение
google/gemini-2.0-flashЛучший длинный контекст
yandex/yandexgpt-proОптимизирован для русского языка

4. Создайте интеграцию

Интеграция — это подключение к внешней платформе (Telegram, WhatsApp, amoCRM и др.), через которую сообщения доставляются боту.

Подключить Telegram

sh
curl https://api.worken.ru/integrations \
  -X POST \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Мой Telegram бот",
    "vendor": "telegram",
    "auth_data": {
      "token": "7123456789:AAHxxxxxxx"
    }
  }'
typescript
const integration = await worken.integrations.create({
  name: 'Мой Telegram бот',
  vendor: 'telegram',
  auth_data: { token: process.env.TELEGRAM_BOT_TOKEN },
})

Ответ содержит id, который используется на следующем шаге.

5. Создайте чат и подключите его к боту

Чат — это конкретный канал внутри интеграции (Telegram-группа, входящие сообщения, виджет), связанный с вашим ботом.

sh
curl https://api.worken.ru/integrations/${INTEGRATION_ID}/chats \
  -X POST \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "bot_id": "bot_01j...",
    "name": "Поддержка клиентов"
  }'
typescript
const chat = await worken.integrations.chats.create(integration.id, {
  bot_id: bot.id,
  name: 'Поддержка клиентов',
})

6. Активируйте чат

sh
curl https://api.worken.ru/integrations/${INTEGRATION_ID}/chats/${CHAT_ID}/status \
  -X POST \
  -H "Authorization: Bearer sk-..." \
  -H "Content-Type: application/json" \
  -d '{"status": "active"}'
typescript
await worken.integrations.chats.setStatus(integration.id, chat.id, 'active')

Бот запущен. Любое сообщение в Telegram будет обработано AI-агентом и получит автоматический ответ.

7. Мониторинг диалогов

Список активных тредов (диалогов) в чате:

sh
curl "https://api.worken.ru/threads?chat_id=${CHAT_ID}&limit=20" \
  -H "Authorization: Bearer sk-..."
typescript
const threads = await worken.threads.list({ chat_id: chat.id, limit: 20 })
for (const thread of threads.data) {
  console.log(thread.id, thread.mode, thread.last_message_at)
}

Подписка на события тредов в реальном времени через SSE:

typescript
const stream = worken.threads.events()
for await (const event of stream) {
  // event.type: 'thread.updated' | 'message.created' | ...
  console.log(event.thread_id, event.pending_count)
}

8. Отправка сообщения оператором

Когда тред в режиме manual, оператор может писать напрямую:

typescript
await worken.threads.send(thread.id, {
  text: 'Сейчас передам ваш вопрос специалисту.',
})

Полный пример

typescript
import { WorkenClient } from 'worken'

const worken = new WorkenClient({ apiKey: process.env.WORKEN_API_KEY })

async function setup() {
  const bot = await worken.bots.create({ name: 'Бот поддержки' })

  await worken.bots.settings.update(bot.id, {
    ai: {
      instruction: 'Ты helpful специалист поддержки.',
      model: { id: 'openai/gpt-4o-mini', temperature: 0.3 },
    },
  })

  const integration = await worken.integrations.create({
    name: 'Telegram поддержка',
    vendor: 'telegram',
    auth_data: { token: process.env.TELEGRAM_BOT_TOKEN },
  })

  const chat = await worken.integrations.chats.create(integration.id, {
    bot_id: bot.id,
    name: 'Поддержка клиентов',
  })

  await worken.integrations.chats.setStatus(integration.id, chat.id, 'active')

  console.log('Бот запущен! ID чата:', chat.id)
}

setup()

Следующие шаги

Руководство пользователя Worken AI