Перейти к содержимому

Connectors

Подключайте приложение к сторонним сервисам — Slack, Resend и ElevenLabs. Учётные данные шифруются, а действия предварительно аутентифицированы.

Connectors позволяют интегрировать внешние сервисы в твоё приложение без необходимости хранить API-ключи в коде. Ты настраиваешь подключение один раз, привязываешь его к проекту и вызываешь готовые действия из приложения через Proyecta SDK. Учётные данные хранятся в зашифрованном виде и никогда не попадают во frontend-код.

ConnectorКатегорияТип аутентификацииЧто умеет
ResendКоммуникацииAPI keyОтправка транзакционных писем, массовая рассылка, список верифицированных доменов
SlackКоммуникацииOAuthОтправка сообщений, список каналов и пользователей, реакции на сообщения, чтение тредов
ElevenLabsИИAPI keyПреобразование текста в речь, список доступных голосов, генерация звуковых эффектов

Новые connectors добавляются регулярно.

  1. Ты создаёшь подключение — вводишь учётные данные (API key или вход через OAuth)
  2. Привязываешь подключение к проекту — это разрешает проекту использовать эти учётные данные
  3. Приложение вызывает действия — SDK отправляет запрос через Proyecta Cloud, который подставляет учётные данные на стороне сервера

Код приложения никогда не касается сырого API-ключа или OAuth-токена. Система connectors берёт на себя аутентификацию, ограничение запросов и audit-логирование.

  1. Открой свой проект в Builder
  2. Перейди в Settings > Connectors
  3. Выбери connector из каталога (например, Resend)
  4. Введи учётные данные:
    • Connectors с API key (Resend, ElevenLabs): вставь свой секретный ключ
    • OAuth-connectors (Slack): войди в аккаунт и разреши доступ
  5. Дай подключению имя (например, «Production Resend»)
  6. Подключение автоматически проверяется и получает статус Active, если всё в порядке

Действия connectors вызываются из серверного кода (Convex actions) с помощью Proyecta SDK:

'use node';
import { action } from './_generated/server';
import { v } from 'convex/values';
import Proyecta from '@proyecta-ai/sdk';
const proyecta = new Proyecta({ apiKey: process.env.PROYECTA_API_KEY ?? null });
export const notifySlack = action({
args: {
message: v.string(),
},
handler: async (ctx, args) => {
const result = await proyecta.connectors.execute({
connectorId: 'slack',
actionId: 'postMessage',
input: {
channel: '#general',
text: args.message,
},
});
return result.output;
},
});

Метод execute возвращает:

ПолеОписание
outputВозвращаемое значение действия (структура зависит от действия)
durationMsВремя выполнения в миллисекундах
invocationIdИдентификатор записи в audit-логе

Писать код для connector вручную необязательно. Builder знает, какие connectors привязаны к твоему проекту, и может сгенерировать интеграцию самостоятельно:

  • "Send a welcome email when users sign up" — использует connector Resend
  • "Post a Slack message when a new order comes in" — использует connector Slack
  • "Play audio narration on the article page" — использует connector ElevenLabs
ДействиеПобочные эффектыОписание
sendEmailwriteОтправить одно транзакционное письмо
sendBatchwriteОтправить несколько писем за раз
listDomainsreadСписок верифицированных отправляющих доменов
ДействиеПобочные эффектыОписание
postMessagewriteОтправить сообщение в канал
listChannelsreadСписок каналов в воркспейсе
listUsersreadСписок участников воркспейса
reactToMessagewriteДобавить эмодзи-реакцию
getThreadreadПолучить ответы в треде
ДействиеПобочные эффектыОписание
textToSpeechwriteПреобразовать текст в аудио
listVoicesreadСписок доступных голосов
generateSoundEffectwriteСгенерировать звуковой эффект с помощью ИИ
СтатусЗначение
ActiveУчётные данные действительны, подключение готово к использованию
BrokenУчётные данные истекли или были отозваны — обнови их, чтобы восстановить подключение
  • Учётные данные шифруются по алгоритму AES-256-GCM в состоянии покоя
  • Действия ограничены 1 000 запросов в минуту на один connector на один проект
  • Каждый вызов действия записывается в audit-лог (подключение, действие, продолжительность, статус)
  • Подключения действуют в рамках всего воркспейса

Можно ли использовать одно подключение в нескольких проектах?

Да. Создай подключение один раз и привяжи его к любому количеству проектов в одном воркспейсе.

Что произойдёт, если мой API key истечёт или будет отозван?

Статус подключения изменится на Broken. Обнови учётные данные в Settings > Connectors, чтобы восстановить его.

Можно ли вызывать действия connector из frontend?

Нет. Действия connectors необходимо вызывать из серверного кода (Convex actions), чтобы учётные данные оставались в безопасности. SDK маршрутизирует запросы через Proyecta Cloud, который подставляет аутентификацию на стороне сервера.

Можно ли добавить собственные connectors?

Пока нет. Поддержка пользовательских connectors есть в roadmap.

  • Новые connectors (Google, Twilio, SendGrid и другие)
  • Пользовательские connector-определения — подключай собственные API
  • Приём вебхуков для входящих событий от подключённых сервисов
  • OAuth gateway — токены остаются на сервере даже при потоках, инициированных клиентом