Telegram integration lets a signed-in Jaidu user link a Telegram account, import plain text into Project Chat, import voice or audio as Project Chat recording cards, make saved text more readable, and receive selected product notifications in Telegram. Project Chat is project-scoped control-plane messaging. It is not host-bound and does not start Codex or workspace execution.

Runtime Requirements

Telegram is optional. If TELEGRAM_BOT_TOKEN is missing or empty, the control plane starts without Telegram support.
VariableRequiredNotes
TELEGRAM_BOT_TOKENYes, to enable TelegramBot token from Telegram.
TELEGRAM_BOT_USERNAMEYes when token is setMay include or omit the leading @.
TELEGRAM_PUBLIC_APP_URLOptionalPublic web URL used in link URLs. Falls back to VITE_APP_BASE_URL.
TELEGRAM_LINK_TOKEN_TTL_MINUTESOptionalDefaults to 30; valid range is 1..=1440.
TELEGRAM_POLLING_ENABLEDOptionalEnabled by default. Set 0, false, or no to disable polling.
OPENAI_API_KEYRequired for readable text and recording transcriptsWithout it, the bot can link accounts and import text. Readable text and recording transcript processing need OpenAI configuration.
OPENAI_BASE_URLOptionalDefaults to https://api.openai.com/v1.
OPENAI_READABLE_MODELOptionalDefaults to gpt-4o-mini.
TELEGRAM_VOICE_MAX_BYTESOptionalDefaults to 26214400.
CALL_RECORDING_S3_BUCKETRequired for voice/audio importsS3-compatible bucket used for imported Project Chat audio.
CALL_RECORDING_S3_REGIONRequired for voice/audio importsS3-compatible region for imported Project Chat audio.
CALL_RECORDING_S3_ACCESS_KEYRequired for voice/audio importsAccess key for the recording storage bucket.
CALL_RECORDING_S3_SECRET_KEYRequired for voice/audio importsSecret key for the recording storage bucket.
CALL_RECORDING_S3_ENDPOINTOptionalCustom S3-compatible endpoint.
CALL_RECORDING_S3_PUBLIC_BASE_URLOptionalPlayback URL base for stored audio artifacts.
OPENAI_CALL_TRANSCRIPTION_MODELOptionalDefaults to whisper-1; used by the Project Chat recording transcript worker.
OPENAI_CALL_READABLE_MODELOptionalDefaults to OPENAI_READABLE_MODEL or gpt-4o-mini; used by the Project Chat recording readable worker.
Jaidu supports link tokens in both directions.
1

Start the bot

Open the Telegram bot and send /link.
2

Open the returned link

The bot returns a Jaidu link URL. Open it while signed in to the control plane.
3

Confirm the account

Jaidu redeems the token and attaches the Telegram account to the signed-in user.
Where the web UI exposes Telegram account linking, create a Telegram link token while signed in and open the generated Telegram deep link. The bot redeems the token and links that Telegram account to your Jaidu user.

Telegram Import Flow

After linking Telegram:
  1. Send the bot a plain text, voice, or audio message.
  2. For text, the bot saves the message and shows an inline menu for choosing a Project Chat destination.
  3. For voice and audio, the bot downloads the original file, stores it in Jaidu-controlled recording storage, and then shows the same Project Chat destination menu.
  4. Use /send to reopen the most recent saved Telegram message menu.
  5. Use /readable or the inline action to rewrite the most recent saved text into a cleaner readable form. Readable rewriting applies to text messages only.
  6. Send the saved item to Project Chat.
The bot imports Project Chat items as the linked Jaidu user. The linked user must be a project member for the destination project; project read-only users and task-only readers cannot import Telegram messages into Project Chat. Only plain Telegram message.text messages are handled as direct text input. Media captions are not part of this flow. Text imports appear as normal Project Chat text messages. Voice and audio imports appear as normal Project Chat recording cards with an audio artifact and queued transcript processing. Project Chat does not show Telegram usernames, Telegram labels, or bot markers for imported items; source metadata is retained only in backend audit tables.

Telegram Notifications

Telegram notifications are a delivery channel for Jaidu product notifications. They use the same product events as the in-app notification feed, then apply the recipient’s account and project preferences before sending a Telegram message. Telegram notification delivery requires all of the following:
  • the control plane is running with TELEGRAM_BOT_TOKEN;
  • your Jaidu account is linked to Telegram;
  • Enable Telegram notifications is on in account settings;
  • the event creates you as an eligible notification recipient;
  • the matching account and project preference is enabled;
  • the action was performed by another user;
  • the event occurs outside your quiet hours.
Project preferences do not add you to an event’s recipient list. For example, enabling Task description changed does not notify a project reader about every issue description edit. You must also be an eligible recipient for that event.

Account Defaults

Account settings are the global Telegram gate.
SettingDefaultCurrent behaviour
Enable Telegram notificationsOffTelegram sends only after you link Telegram and turn this on.
Project membership changesOnApplies to project add and project remove notifications. Project access-change storage exists, but no live access-change event is wired yet.
Assigned to a taskOnApplies when another user assigns you to an issue.
Unassigned from a taskOnApplies when another user removes you from an issue assignment.
Direct involvementOnApplies to issue comments, selected status changes, priority changes, reactions, deletes, title/description changes, and issue-reader personal events.
Show message previewsOnWhen off, Telegram text avoids issue titles, chat text, and project names where the formatter can hide them.
Quiet hoursOffWhen on, instant Telegram delivery is skipped during the configured fixed-offset time window.
DigestOffStored for future use. Batched digest delivery is not implemented yet.

Project Defaults

Project notification preferences are per user and per project.
SettingDefaultCurrent behaviour
Use account defaultOnKeeps project Telegram delivery enabled unless you switch to custom and turn the project off.
Project Chat messagesOffAll messages sends Project Chat Telegram notifications to eligible recipients. Mentions only is stored for future mention support and is disabled in the UI.
New task createdOffSends only to opted-in eligible project recipients.
Assigned to meOnSends when another user assigns you to an issue.
Unassigned from meOnSends when another user removes you from an issue assignment.
Comments on my tasksOnSends for comments on issues where you are already an eligible issue recipient.
Reactions to my commentsOnSends to the comment author when another user reacts.
Task reaches selected statusOnSends only when the destination status is selected for that project. The default selected-status list is empty.
Priority changed to High/UrgentOnSends only when the new priority is High or Urgent.
Task deletedOnSends to eligible issue recipients gathered before deletion.
Task title changedOffStored and delivered only if explicitly enabled.
Task description changedOffStored and delivered only if explicitly enabled.
Task reader added to meOnSends to the affected issue reader.
Task reader removed from meOnSends to the affected issue reader.

Supported Event Matrix

The following events can create Telegram delivery attempts today.
EventEligible recipientsDefault
Project Chat message addedOrganization members and project read-only users who set Project Chat to All messages; excludes the author. Task-only readers are excluded.Off
Project addedThe affected user when added through project reader access; excludes the actor.On
Project removedThe affected user when removed from project reader access; excludes the actor.On
Issue createdOrganization members and project read-only users with New task created enabled; excludes the creator.Off
Issue assigned to youThe assigned user, if they are an organization member; excludes the actor.On
Issue unassigned from youThe removed assignee, if they are an organization member; excludes the actor.On
Issue comment addedIssue assignees and followers who are organization members; excludes the commenter.On
Issue status changedIssue assignees and followers who are organization members, only when the new status is selected; excludes the actor.On, but no statuses selected
Issue priority changedIssue assignees and followers who are organization members, only when the new priority is High or Urgent; excludes the actor.On
Issue comment reactionThe comment author, if they are an organization member; excludes the reactor.On
Issue deletedIssue assignees and followers gathered before deletion, filtered to organization members; excludes the actor.On
Issue title changedIssue assignees and followers who are organization members; excludes the actor.Off
Issue description changedIssue assignees and followers who are organization members; excludes the actor.Off
Issue reader addedThe affected issue reader, including task-only readers; excludes the actor.On
Issue reader removedThe affected issue reader, including task-only readers; excludes the actor.On

Stored But Not Live Yet

These preferences or product ideas are represented in schema/UI but do not send live Telegram notifications yet:
  • project access changed;
  • Project Chat Mentions only;
  • digest delivery;
  • workspace and pull request events.

Bot Commands

CommandPurpose
/linkLink Telegram to your Jaidu account.
/sendShow the most recent saved Telegram message menu.
/readableMake the most recent saved Telegram text readable.
/voice_helpShow Telegram voice help.

Troubleshooting

Confirm TELEGRAM_BOT_TOKEN, TELEGRAM_BOT_USERNAME, and TELEGRAM_POLLING_ENABLED in the live control-plane process environment. The runtime uses long polling, not a webhook.
Set the call recording storage variables for voice/audio import. Set OPENAI_API_KEY when you also need transcript processing and readable text. The bot can link accounts and import text without OpenAI.
Check TELEGRAM_VOICE_MAX_BYTES. The default limit is 26,214,400 bytes.
Check whether you were an eligible recipient for that event. Normal issue updates go to issue assignees and followers who are organization members, not to every project reader. Project Chat goes to project members and project read-only users who selected All messages, but never to task-only readers or the message author.
Quiet hours skip instant Telegram delivery for the configured account-level time window. They do not queue a digest yet.