Telegram to Jira, voice notes become clean tickets
Voice notes are fast to send and annoyingly slow to process. Somebody has to listen, take notes, ask follow-up questions, then finally create the Jira ticket that should’ve existed 10 minutes ago.
IT managers end up triaging from chat threads. Ops leads get pulled into “quick questions” that aren’t quick. And if you run an internal helpdesk, this Telegram Jira automation turns messy voice requests into clean, trackable work.
You’ll see how a Telegram voice message becomes a properly structured Jira ticket, plus a Slack alert and a confirmation back to the requester.
Why This Matters: Voice requests create ticket chaos
When support requests arrive as voice notes, your process usually breaks in small, expensive ways. One person listens and paraphrases, another person guesses the priority, and someone else tries to recreate details that were clear in the original audio but lost in translation. It’s not just “time spent.” It’s context loss, missed SLA expectations, and the constant back-and-forth that makes requesters feel ignored. Frankly, the worst part is that none of this work improves the actual fix. It just moves information from one place to another.
The friction compounds. Here’s where it typically falls apart in real teams:
- Someone has to replay the audio twice because the first pass missed key details like device type or error message.
- Tickets get created late, which means the queue looks “quiet” until it suddenly explodes.
- Priority becomes a debate in chat instead of a field in Jira, so triage is slower than it needs to be.
- Requesters don’t get a clear confirmation, so they follow up again and again.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Telegram to Jira, voice notes become clean tickets
flowchart LR
subgraph sg0["Telegram Voice Message Flow"]
direction LR
n0@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/slack.svg' width='40' height='40' /></div><br/>Send message to IT Support t.."]
n3@{ icon: "mdi:swap-vertical", form: "rounded", label: "Setup Jira, Slack, Email", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/jira.svg' width='40' height='40' /></div><br/>Submit JIRA request ticket"]
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Telegram Voice Message Trigger"]
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Is audio message?", pos: "b", h: 48 }
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Un-supported message type"]
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Download audio message"]
n9@{ icon: "mdi:robot", form: "rounded", label: "Transcribe a recording", pos: "b", h: 48 }
n10@{ icon: "mdi:robot", form: "rounded", label: "Transcript Processing Agent", pos: "b", h: 48 }
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Inform reporter via Telegram"]
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge"]
n13@{ icon: "mdi:cog", form: "rounded", label: "Backup Audio Message To Goog..", pos: "b", h: 48 }
n14["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Process output before feedin.."]
n12 --> n14
n6 --> n8
n6 --> n7
n0 -.-> n10
n8 --> n13
n8 --> n9
n9 --> n12
n3 --> n2
n3 --> n11
n1 -.-> n10
n4 --> n3
n10 --> n4
n5 --> n6
n13 --> n12
n14 --> n10
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n5 trigger
class n1,n9,n10 ai
class n0 aiModel
class n6 decision
class n14 code
classDef customIcon fill:none,stroke:none
class n2,n4,n5,n7,n8,n11,n12,n14 customIcon
What You’ll Build: Voice-to-ticket intake that fills Jira for you
This workflow starts the moment someone sends a voice message to your Telegram bot. n8n checks that it’s actually audio (and politely rejects anything else), then downloads the voice file and transcribes it using OpenAI Whisper. At the same time, the original audio is archived to Google Drive so you can always reference the source if a ticket needs clarification later. Next, the transcript and file metadata are merged and cleaned, then passed into an AI Agent that extracts structured fields like a clear title, a fuller description, and a sensible priority. Finally, a Jira Service ticket is created automatically, your IT team gets notified in Slack, and the requester receives a Telegram message with the Jira link. Clean handoff. No copy-paste.
The workflow begins in Telegram, then uses Whisper to turn voice into text. After that, GPT-based extraction turns “a rambling explanation” into ticket-ready fields. Jira becomes the system of record, while Slack and Telegram keep everyone aligned without extra chasing.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say your team gets about 15 voice requests a week. Manually, it’s usually 5 minutes to listen and take notes, another 5 minutes to write the ticket, plus a couple minutes notifying the right channel, so roughly 10-15 minutes each. That’s about 3 hours a week in pure admin. With this workflow, the requester sends the voice note (under a minute), then you mostly wait for transcription and ticket creation while the Slack alert and Telegram confirmation happen automatically. You get those hours back, and triage starts sooner.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Telegram Bot for voice intake and confirmations
- Jira Cloud to create service tickets automatically
- OpenAI API key (get it from your OpenAI dashboard)
Skill level: Intermediate. You’ll connect a few accounts, paste API keys, and adjust a couple of fields to match your Jira setup.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
Telegram receives a voice message. The workflow triggers on incoming messages to your Telegram bot and immediately checks if the message contains audio.
Audio is downloaded and safely stored. If it’s valid, n8n fetches the .oga voice file from Telegram and uploads a copy to Google Drive so you have a backup for audits, disputes, or later listening.
Whisper transcribes, then an AI Agent structures it. OpenAI Whisper turns the recording into text. A small code step cleans the payload, then the AI Agent extracts the fields Jira actually needs, like request title, description, and priority.
Jira and Slack get the final output. A Jira Service ticket is created from those extracted fields, Slack gets an IT support alert, and the requester receives a Telegram confirmation with a direct ticket link.
You can easily modify the extracted fields to match your service desk schema, or route certain priorities to a different Slack channel based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Telegram Trigger
Set up the workflow entry point so incoming Telegram voice messages are captured and routed for validation.
- Add and open Telegram Voice Trigger.
- Set Updates to
message. - Enable Additional Fields → Download to
true. - Credential Required: Connect your
telegramApicredentials.
Step 2: Validate and Route Audio Messages
Filter for voice messages and handle non-audio inputs with a friendly response.
- Open Validate Audio Message and set the condition to check the message payload contains the audio MIME type.
- Set Left Value to
{{ $json.message.toJsonString() }}and Right Value toaudio/ogg. - Connect the false output of Validate Audio Message to Reject Non-Audio Input.
- In Reject Non-Audio Input, set Text to
Sorry, I can’t read your input right now. Please send me a voice message, and I’ll help you transcribe and track it! 🎙️💬and Chat ID to{{ $('Telegram Voice Trigger').item.json.message.chat.id }}. - Credential Required: Connect your
telegramApicredentials in Reject Non-Audio Input.
audio/ogg check as configured.Step 3: Fetch Voice File and Process in Parallel
Retrieve the voice file and run transcription and archiving simultaneously.
- In Fetch Voice File, set Resource to
fileand File ID to{{ $json.message.voice.file_id }}. - Credential Required: Connect your
telegramApicredentials in Fetch Voice File. - Fetch Voice File outputs to both Archive Audio to Drive and Transcribe Voice Audio in parallel.
- In Archive Audio to Drive, set Name to
audio-{{ $now.toFormat("yyyyLLdd-HHmmss") }}-{{$binary.data.fileName}}, choose your Drive, and set Folder to your target folder ID. - Credential Required: Connect your
googleDriveOAuth2Apicredentials in Archive Audio to Drive. - In Transcribe Voice Audio, set Resource to
audioand Operation totranscribe. - Credential Required: Connect your
openAiApicredentials in Transcribe Voice Audio. - Route both outputs into Combine Transcript Data.
Step 4: Prepare the Agent Input
Merge transcript and file metadata, then format a clean payload for the AI agent.
- Verify Combine Transcript Data receives input 0 from Transcribe Voice Audio and input 1 from Archive Audio to Drive.
- Open Prepare Payload for Agent and keep the provided JavaScript to build
Transcript,AudioURL,ChatID, andFirstNamefields. - Ensure the code references
{{ $('Telegram Voice Trigger').first().json.message }}to pull chat metadata.
Step 5: Set Up AI Analysis and Structured Output
Use the AI agent to analyze the transcript and return structured ticket data.
- Open Transcript Analysis Agent and set Text to
Below is the voice message transcript sent to IT support. Please extract all relevant information according to your instructions. --- {{ $json.toJsonString() }} ---. - Confirm Prompt Type is
defineand Has Output Parser is enabled. - Open Structured Result Parser and keep the JSON schema example as provided to define the output structure.
- Open OpenAI Chat Engine and set Model to
gpt-4.1-mini. - Credential Required: Connect your
openAiApicredentials in OpenAI Chat Engine. - Structured Result Parser is connected as the output parser for Transcript Analysis Agent—add credentials to OpenAI Chat Engine (the parent AI model), not the parser.
Step 6: Configure Ticket Creation and Notifications
Create the Jira ticket and notify both IT support and the requester.
- In Create Jira Service Ticket, set Summary to
{{ $json.output[0].title }}. - Set Description to
{{ $json.output[0].description }} Original Voice Message Transcript (by AI) --- {{ $json.output[0].original_message }} --- Original Voice Message: {{ $json.output[0].audioUrl }}. - Select your Jira Project and Issue Type IDs, and optionally set the Assignee.
- Credential Required: Connect your
jiraSoftwareCloudApicredentials in Create Jira Service Ticket. - In Configure Jira Slack Email, set Jira base URL to
https://your-company.atlassian.net, IT support email to[YOUR_EMAIL], and IT support slack channel to[YOUR_ID]. - Configure Jira Slack Email outputs to both Post IT Support Alert and Notify Requester on Telegram in parallel.
- In Post IT Support Alert, keep the message template and set Channel to
{{ $json['IT support slack channel'] }}. - Credential Required: Connect your
slackOAuth2Apicredentials in Post IT Support Alert. - In Notify Requester on Telegram, set Chat ID to
{{ $('Transcript Analysis Agent').item.json.output[0].chatid }}and keep the provided response template. - Credential Required: Connect your
telegramApicredentials in Notify Requester on Telegram.
[YOUR_EMAIL] and [YOUR_ID] in Configure Jira Slack Email before testing to avoid Slack routing errors.Step 7: Test and Activate Your Workflow
Verify the end-to-end path, then enable the workflow for production use.
- Click Execute Workflow and send a Telegram voice message to the bot connected to Telegram Voice Trigger.
- Confirm that a file is created by Archive Audio to Drive and transcription appears from Transcribe Voice Audio.
- Verify that Create Jira Service Ticket creates an issue, and that both Post IT Support Alert and Notify Requester on Telegram send messages.
- When everything looks correct, switch the workflow to Active to run continuously.
Troubleshooting Tips
- Jira credentials can expire or need specific permissions. If things break, check your Jira API token access and project permissions in Jira admin first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Quick Answers
About 30 minutes if your Telegram, Jira, and OpenAI accounts are ready.
No. You’ll connect accounts and adjust a few Jira fields. The workflow includes a code step, but you can usually keep it as-is.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs for Whisper and the chat model, which for most teams is only a few dollars a month unless you’re processing lots of audio.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and it’s common. You can swap the Create Jira Service Ticket node for Zendesk, GitHub Issues, or another ticketing tool, and keep the same transcription + extraction steps. Many teams also customize the Transcript Analysis Agent prompt to enforce ticket titles like “[Location] [Device] [Issue]” and map priorities to your own SLA rules. If you want extra logging, add Google Sheets right after Combine Transcript Data.
Usually it’s the bot token or webhook setup. Regenerate the Telegram bot token (or re-copy it) and update the credentials in n8n, then confirm the bot is allowed to receive voice messages. If the trigger works but file download fails, check that the workflow is using the correct file ID from the incoming message and that Telegram hasn’t expired the file path yet.
On a typical n8n Cloud plan you can run thousands of executions a month, and self-hosting has no hard execution cap (your server is the limit). In practice, transcription is the bottleneck because Whisper takes time per audio file, so teams often start with “one request at a time” and scale by queueing. If you expect bursts, add a simple rate-limit pattern so you don’t overload Jira or hit API limits.
Often, yes. This workflow has branching logic (reject non-audio), file handling (download, archive to Drive), and an AI Agent step that benefits from flexible prompts and structured output parsing. n8n also gives you a self-hosting option, which matters when ticket volume grows and per-task pricing starts to sting. Zapier or Make can still work if you’re doing something simpler, like “Telegram message → Slack post,” but voice transcription plus Jira ticket creation tends to get cramped fast. Talk to an automation expert if you want a quick recommendation for your setup.
Once this is running, voice requests stop being a bottleneck and start being tickets automatically. The workflow does the repetitive translation work so your team can focus on fixes, not follow-ups.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.