Initial build: Asterisk voicemail transcription + portal

- mailcmd replacement (vm_mailcmd.py): faster-whisper transcription (CPU int8),
  extractive summary + intent tags + spoken-digit number extraction,
  multipart/alternative HTML email, fail-safe relay of original message
- Telegram DM delivery (vm_telegram.py) with per-mailbox routing
- Caller-ID -> name (vm_contacts.py): file / google / carddav backends
- SQLite store (vm_store.py) with content-addressed audio
- FastAPI portal (vm_web.py): PIN login, list/play/delete, per-user settings,
  zero JS, loopback-only behind Apache TLS
- Backfill importer (vm_import.py) for existing spool recordings
- systemd unit, Apache vhost + certbot TLS, install.sh
- Docs: INSTALL, CONFIGURATION, ARCHITECTURE, OPERATIONS, SECURITY, TESTING

Verified end-to-end on mail.txt3.net: 157 historical messages backfilled,
live voicemail -> transcribed -> stored -> visible at https://vm.txt3.net.
This commit is contained in:
jp
2026-08-13 09:31:41 +01:00
commit 857284abbf
28 changed files with 3793 additions and 0 deletions

14
config/README.md Normal file
View File

@ -0,0 +1,14 @@
# Examples
These files are templates. **Copy to a live path and fill in secrets** — the
live files are git-ignored so credentials never get committed.
- `config/telegram.conf.example``/opt/vm-transcribe/telegram.conf`
- `config/contacts.conf.example``/opt/vm-transcribe/contacts.conf`
```bash
sudo install -o root -g asterisk -m 640 config/telegram.conf.example /opt/vm-transcribe/telegram.conf
sudo install -o root -g asterisk -m 640 config/contacts.conf.example /opt/vm-transcribe/contacts.conf
```
Then edit the real files with `sudo` and add your bot token / contacts source.