Документация для разработчиков

Документация Context Assistant

Подключите готовый WordPress-плагин или интегрируйте ассистента через SDK и Remote Tools.

Быстрый старт WordPressРуководства по SDKRemote Tools
WordPress · около 10 минут

Подключение к WordPress

Установите готовый плагин, подключите аккаунт и проверьте ассистента — писать код не нужно.

01
Доступ администратораВозможность устанавливать плагины WordPress
02
Аккаунт Context AssistantРегистрация и подтверждённый email
03
HTTPS-адрес сайтаТочный публичный URL без пути к странице
  1. Установите плагин

    В админке WordPress откройте Плагины → Добавить плагин, найдите Context Assistant, установите и активируйте его. Страница плагина в каталоге: wordpress.org/plugins/context-assistant.

  2. Создайте аккаунт

    Зарегистрируйтесь в Context Assistant и подтвердите email.

  3. Добавьте сайт

    В мастере Context Assistant задайте имя ассистента, выберите WordPress и укажите точный адрес сайта, например https://shop.example.com.

  4. Сохраните данные подключения

    Скопируйте API URL, Assistant ID asst_… и секретный ключ ca_sk_…. Ключ показывается только один раз.

  5. Подключите плагин

    Вернитесь в мастер WordPress, вставьте три значения и нажмите Save and check connection.

  6. Настройте виджет

    Выберите заголовок, страницы показа и доступ для гостей, затем нажмите Save and finish.

  7. Проверьте результат

    Откройте сайт и задайте ассистенту тестовый вопрос. Синхронизацию базы знаний, действия WordPress/WooCommerce и сбор обращений можно включить позже в Advanced settings.

Подключение готово

Виджет открывается на выбранных страницах и отвечает на тестовый вопрос.

Открыть аккаунт
Другие платформы

Выберите способ интеграции

Для сайтов и приложений без WordPress доступны три варианта.

React SDK

Установка:

npm install @context-assistant/react

Оберните приложение (или его часть) в provider, затем добавьте виджет:

import { ContextAssistantProvider, Assistant } from '@context-assistant/react';

async function getToken(): Promise<string> {
  const res = await fetch('/api/context-assistant/token', { method: 'POST' });
  const data = await res.json();
  return data.token;
}

export function App() {
  return (
    <ContextAssistantProvider apiUrl="https://api.your-domain.example" getToken={getToken}>
      <Assistant
        agent="store-consultant"
        title="Store Consultant"
        appearance={{
          variant: 'refined',
          theme: 'system',
          welcomeMessage: 'How can I help with this product?',
          starterPrompts: ['Is it in stock?', 'Compare the available options'],
          privacyUrl: '/privacy/',
        }}
      />
    </ContextAssistantProvider>
  );
}

Нужен свой интерфейс вместо встроенного виджета? Используйте useAssistant() напрямую — он даёт messages, status, busy, pendingAction, send() и пару confirm/cancel для схемы preview → Apply.

Встраивание через скрипт

Для любого сайта — без фреймворка. Установите бандл или раздавайте его сами, затем:

import { mount } from '@context-assistant/embed-sdk';

async function getToken(): Promise<string> {
  const res = await fetch('/api/context-assistant/token', { method: 'POST' });
  const data = await res.json();
  return data.token;
}

const widget = mount({
  apiUrl: 'https://api.your-domain.example',
  getToken,
  agent: 'store-consultant',
  title: 'Store Consultant',
  appearance: {
    variant: 'refined',
    theme: 'system',
    welcomeMessage: 'How can I help with this product?',
    starterPrompts: ['Is it in stock?', 'Compare the available options'],
    privacyUrl: '/privacy/',
  },
});

widget.setContext({
  page: { type: 'product', id: 184 },
});

Возвращённый виджет даёт open(), close(), send(), setContext(), updateContext(), clearContext() и destroy().

JavaScript SDK

Клиент без интерфейса, на котором построены оба SDK выше, — для полностью своего UI:

import { ConversationSession } from '@context-assistant/js-sdk';

async function getToken(): Promise<string> {
  const res = await fetch('/api/context-assistant/token', { method: 'POST' });
  const data = await res.json();
  return data.token;
}

const session = new ConversationSession({
  apiUrl: 'https://api.your-domain.example',
  getToken,
  agent: 'store-consultant',
});

await session.send('What pairs well with this processor?', {
  onToken: (delta) => process.stdout.write(delta),
  onDone: (event) => console.log('\n[done]', event.message),
});

Контракт Remote Tools

Любой бэкенд может дать ассистенту типизированные действия и обоснование ответов, реализовав четыре HTTP-эндпоинта. Скоуп передаётся как execution (workspaceId, externalUserId, permissions, requestId); callId сквозно идентифицирует один конкретный вызов инструмента.

Метод и путьНазначение
GET {baseURL}/toolsСписок доступных инструментов для этого execution scope
GET {baseURL}/contextКонтекст для обоснования ответов текущего пользователя/сессии
POST {baseURL}/tools/previewПредпросмотр для человека — без побочных эффектов
POST {baseURL}/tools/executeВыполнить действие после подтверждения

Ответ GET /tools:

{
  "tools": [
    {
      "name": "create_task",
      "description": "Create a task in the current project",
      "verb": "create",
      "inputSchema": { "type": "object", "properties": { "title": { "type": "string" } }, "required": ["title"] }
    }
  ]
}

Запрос POST /tools/preview:

{
  "tool": "create_task",
  "callId": "call_abc123",
  "arguments": { "title": "Ship the release" },
  "execution": {
    "workspaceId": "ws_123",
    "externalUserId": "user_42",
    "permissions": ["tasks:write"],
    "requestId": "req_xyz"
  }
}

Ответ POST /tools/preview:

{ "preview": "Create a task “Ship the release” in Project Apollo" }

Ответ POST /tools/execute (запрос той же формы, что и у preview):

{ "output": { "id": "task_789", "title": "Ship the release", "status": "open" } }
VerbПодтверждение
getНет — выполняется автоматически в рамках хода
create, updatePreview, затем явный Apply
deletePreview, затем второе явное подтверждение

Живой пример: плагин для WordPress реализует именно этот контракт — 10 инструментов (6 WordPress + 4 WooCommerce), проверяется conformance-тестами против реального хоста при каждом изменении.

Self-hosting

Ядро — open-core: те же Docker-образы, что используем мы сами, разворачиваются одной командой docker compose up, а все данные — диалоги, база знаний, ключи — остаются в вашей инфраструктуре. Полный гайд оператора для этой страницы ещё в планах; до тех пор — напишите нам, если хотите развернуть self-hosting уже сегодня.

Модель безопасности

Полная модель — на главной странице. Коротко: браузер держит только короткоживущий токен, каждый запрос привязан к своему тенанту и воркспейсу, хост перепроверяет реальные права перед любым действием, а удаление требует двойного подтверждения с возможностью восстановления.