Platform
Connect S3 Recording Storage
Store Twilio recordings in your own S3 bucket.
Stores Twilio call recordings in your own AWS S3 bucket instead of Twilio’s cloud. You own the media lifecycle, Twilio stops billing you for storage, and the recordings sit under whatever encryption, retention and access policy your organisation already applies to its own buckets.
The design leans on Twilio doing the writing. Odoo provisions the bucket, generates the IAM policy, creates the Twilio-side AWS credential and then gets out of the way; from that point Twilio writes the audio directly to S3 and Odoo only reads it back for playback, proxy download and transcription. That keeps the Odoo worker off the media path entirely.
Everything downstream of the recording carries on as before. The player, the recordings list, Whisper transcription and the AI summary all work against the S3 object the same way they worked against Twilio’s copy, and because transcript and summary live on the call record, expiring the audio under a lifecycle rule costs you nothing but the audio.
What it offers
-
Twilio writes straight to your bucket
Built on Twilio's External S3 Storage feature: once it is switched on, Twilio puts each recording into your bucket itself and the URL Odoo receives points at S3. Odoo never uploads audio, so no recording passes through the Odoo server on its way to storage.
-
Bucket provisioned from the settings page
CREATE / CONFIGURE S3 BUCKETcreates the bucket, blocks all public access, turns on SSE-S3 encryption at rest and installs the lifecycle rule for your retention. Pressing it again re-applies the configuration to an existing bucket rather than failing. -
IAM policy generated for you
Connect > Configuration > S3 Storageprints the exact IAM policy to paste into AWS, scoped to your bucket prefix (oduist-connect-by default) and containing noiam:*permissions. Every bucket name you type is forced to start with that prefix, so the policy and the bucket cannot drift apart. -
Twilio credential created from Odoo
CREATE TWILIO AWS CREDENTIALregisters your AWS access key with Twilio under the nameconnect-s3-recordingsand shows the resulting SID, so AWS keys are never pasted into the Twilio Console. Pressing it again adopts the existing credential instead of duplicating it, andRECREATE TWILIO CREDENTIALhandles key rotation. -
Retention you control, transcripts you keep
Set Retention (days) and an S3 lifecycle rule deletes the audio that many days after the recording started;
0keeps it forever. When a file is gone the player saysRecording expired, the download answers HTTP 410 rather than an error page, and the recording row with its transcript and summary stays. -
Playback and transcription unchanged
Audio streams from your bucket through the same recording player and proxy download, and OpenAI transcription reads the media from S3, so transcripts and AI summaries keep working after the switch. The module owns no models of its own: it extends
connect.settingsandconnect.recordingand subclasses the core media controller.
Scope of the current version
- Twilio recordings only. The module depends on
connect_twilioand on Twilio's External S3 Storage feature; recordings from other providers are unaffected. - The
boto3Python package must be available in the Odoo environment. - Twilio exposes its voice recording settings in the Console only, so enabling external storage is a manual one-off step (Voice > Recordings > Settings). The Odoo settings page shows the checklist and the two values to paste.
- There is no migration. Recordings made before the switch stay on Twilio and keep playing; the two kinds coexist indefinitely.
- Once external storage is on, the audio is no longer fetchable from Twilio. If the AWS credentials in Odoo stop working, playback stops with them.
- Rotating the AWS key also means re-selecting the new credential in the Twilio Console. Twilio keeps pointing at the old SID until you do, and recordings fail to upload in the meantime.
Installs with full features free for 30 days; buy the license inside the module.