mirror of
https://github.com/dartdavros/chatballs.git
synced 2026-10-13 04:39:02 +03:00
- MessengerBinding/MessengerBindingCode: привязка сотрудника к боту по одноразовому коду (deep-link ?start= для TG и MAX, TTL 10 мин) - сервисный бот = messenger-интеграция с config.purpose=notifications, без канала продаж; worker поллит его отдельно (только коды привязки) - доставка через outbox: notify() -> notification_created -> handler разворачивает аудиторию и шлёт привязанным сотрудникам (best-effort) - API messenger-bindings (список/код/отвязка); профиль: карточка «Уведомления в мессенджер»; форма интеграций: флажок бота уведомлений Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
28 lines
1.4 KiB
Python
28 lines
1.4 KiB
Python
from hub_platform.integrations.models import Integration
|
|
|
|
|
|
def integration_payload(integration: Integration) -> dict[str, object]:
|
|
# Секрет не возвращаем; отдаём только признак его наличия.
|
|
return {
|
|
"id": integration.id,
|
|
"kind": integration.kind,
|
|
"provider": integration.provider,
|
|
"name": integration.name,
|
|
"hasSecret": bool(integration.secret),
|
|
"config": {
|
|
"baseUrl": integration.config.get("base_url", ""),
|
|
"defaultModel": integration.config.get("default_model", ""),
|
|
"proxyUrl": integration.config.get("proxy_url", ""),
|
|
"botId": integration.config.get("bot_id", ""),
|
|
"botUsername": integration.config.get("bot_username", ""),
|
|
"botName": integration.config.get("bot_name", ""),
|
|
"purpose": integration.config.get("purpose", ""),
|
|
},
|
|
"channel": {"id": integration.channel.id, "code": integration.channel.code, "name": integration.channel.name} if integration.channel_id else None,
|
|
"status": integration.status,
|
|
"lastCheckedAt": integration.last_checked_at.isoformat() if integration.last_checked_at else None,
|
|
"lastError": integration.last_error,
|
|
"createdAt": integration.created_at.isoformat(),
|
|
"updatedAt": integration.updated_at.isoformat(),
|
|
}
|