- Клиент бота собирается один раз и достаётся отправителю и транспорту; разрез прошёл по «ответил ли Telegram»: ответ «такого бота нет» роняет старт, недоступность даёт подъём без Telegram (ADR-2026-08-13). Ожидание при сборке ограничено сроком — иначе молчащий Telegram вешал подъём. - Недоставленный ответ не роняет шаг: пишется с job_id и считается метрикой, уровень по причине — WARN для неподнятого входа, ERROR для неназванного адресата. Заведены transcriber_intake_up и transcriber_undelivered_reply_count. - Закрыта утечка токена в журнал: отказ разбора адреса рождается раньше обращения к клиенту, то есть мимо чистки на его границе.
86 lines
4.6 KiB
TOML
86 lines
4.6 KiB
TOML
# Server configuration
|
||
[server]
|
||
port = 8080
|
||
shutdown_timeout = 5
|
||
force_shutdown_timeout = 20
|
||
|
||
# Storage configuration
|
||
# Единственный каталог данных: под ним лежат и база, и файлы записей.
|
||
[storage]
|
||
data_dir = "data"
|
||
|
||
# Yandex Cloud Configuration
|
||
[yandex]
|
||
# ID папки в Yandex Cloud (получить в консоли Yandex Cloud)
|
||
folder_id = "your_folder_id_here"
|
||
|
||
# API ключ для доступа к Yandex SpeechKit (получить в консоли Yandex Cloud)
|
||
speech_kit_api_key = "your_speech_kit_api_key_here"
|
||
|
||
# Object Storage (S3) configuration
|
||
# Access Key ID для доступа к Object Storage (получить в консоли Yandex Cloud)
|
||
object_storage_access_key_id = "your_access_key_id"
|
||
|
||
# Secret Access Key для доступа к Object Storage (получить в консоли Yandex Cloud)
|
||
object_storage_secret_access_key = "your_secret_access_key"
|
||
|
||
# Имя бакета в Object Storage
|
||
object_storage_bucket_name = "your_bucket_name"
|
||
|
||
# Регион Object Storage
|
||
object_storage_region = "ru-central1"
|
||
|
||
# Endpoint Object Storage
|
||
object_storage_endpoint = "https://storage.yandexcloud.net/"
|
||
|
||
# Вход через внешнего провайдера OIDC (Authelia).
|
||
# Без заполненной секции сервис не поднимается: молча выключенный вход оставил бы
|
||
# API открытым наружу.
|
||
[auth]
|
||
# Адрес, куда сервис уводит человека на вход
|
||
auth_url = "https://auth.example.com/api/oidc/authorization"
|
||
|
||
# Адрес, где код обменивается на токен
|
||
token_url = "https://auth.example.com/api/oidc/token"
|
||
|
||
# Адрес, откуда берутся сведения о вошедшем
|
||
user_info_url = "https://auth.example.com/api/oidc/userinfo"
|
||
|
||
# Идентификатор клиента, заведённого у провайдера
|
||
client_id = "transcriber"
|
||
|
||
# Секрет клиента; приходит из выкладки, в git не коммитится
|
||
client_secret = ""
|
||
|
||
# Адрес возврата; тот же, что записан клиенту у провайдера
|
||
redirect_url = "https://transcriber.example.com/auth/callback"
|
||
|
||
# Признак `Secure` у куки сессии. Умолчание true; false только для локального
|
||
# запуска по http://localhost, где браузер такую куку не сохранит
|
||
secure_cookie = true
|
||
|
||
# Telegram Bot Configuration
|
||
[telegram]
|
||
# Токен Telegram бота (получить у @BotFather в Telegram).
|
||
#
|
||
# Пустое значение — объявленный режим: сервис поднимается без Telegram и
|
||
# работает одним входом, по HTTP. Бот при этом не заводится, записи из Telegram
|
||
# не принимаются, а ответы на задачи, принятые оттуда прежде, не уходят —
|
||
# недоставка видна записью журнала, расшифровка достаётся из панели и по HTTP.
|
||
# Старт роняет только один случай — Telegram ответил, что бота по такому токену
|
||
# нет: ждать тут нечего, это опечатка в настройке. Недоступность Telegram (сеть,
|
||
# DNS, авария Bot API) подъёму не мешает: сервис встаёт без бота и говорит об
|
||
# этом записью журнала, потому что основной вход у него другой.
|
||
#
|
||
# Локальный прогон идёт именно так — боевым токеном запускаться запрещено:
|
||
# второй процесс с тем же токеном перехватывает обновления у работающего.
|
||
# Пустого токена для подъёма мало: секции [auth] и [yandex] проверяются на
|
||
# старте и роняют процесс на пустых ключах. Наружу при старте не ходит ни одна
|
||
# из них, поэтому для локального прогона годятся выдуманные непустые значения —
|
||
# адреса [auth] должны лишь разбираться как ссылки. Расшифровка при выдуманных
|
||
# ключах не работает: её подменяют в коде.
|
||
bot_token = ""
|
||
|
||
# Таймаут обновлений Telegram бота (в секундах)
|
||
update_timeout = 10
|