Skip to content

Set up voicemail

Faxart can take voicemail as a second inbound channel. A voicemail is just an inbound item whose text comes from speech instead of OCR, so once transcribed it flows through the same rules, review queue, auto-mode, and audit trail as a fax. This guide turns it on.

The inbox showing voicemails alongside faxes: a Voicemail badge, on-prem classification tags, and a suggested route to approve. Transcripts are redacted here

  • On-prem transcription (no audio leaves the building)
  • The same plain-English routing rules apply to voicemail transcripts
  • A unified inbox and review queue, with each item tagged fax or voicemail
  • Optional voicemail-to-MEDITECH filing, human-confirmed like a fax
  • The on-prem transcription gateway configured (GPU_API_KEY, GPU_TRANSCRIBE_MODEL)
  • A voice path on your trunk that can deliver a call to FreeSWITCH
  1. Enable the voice leg. Set FAXART_VOICEMAIL_ENABLED=1. This is off by default, so the fax-only dialplan is unchanged until you flip it. The generated dialplan then grows a fax-detect-then-record leg: a call is answered, watched for fax tone, and if it is a voice call the caller is recorded.
  2. Rebuild the classification worker. The faxart-worker-classify image runs the voicemail task, so rebuild it (the same caveat as the SMTP image): COMPOSE_PROFILES=dev docker compose up -d --build faxart-worker-classify.
  3. Tune the tone detection. The one piece that needs tuning against your trunk is the CNG-vs-voice detection (telling a fax tone from a speaker). Tune it against the loopback harness before go-live.
  4. Send a test voicemail to a provisioned number and confirm it appears in the inbox with a transcript and classification.
flowchart LR
  A[Inbound call] --> B{Fax tone?}
  B -- yes --> F[Treat as fax]
  B -- no --> R[Record message]
  R --> S{Silence /<br/>too short?}
  S -- yes --> J[Junk bucket<br/>no transcription]
  S -- no --> T[Transcribe on-prem]
  T --> C[Classify transcript]
  C --> Q[Rules → route or review]

Empty or hung-up recordings are caught by a silence gate at intake (a quick loudness + minimum-duration check) and bucketed as reviewable junk without spending a transcription call. Reporting a voicemail as junk blocks that caller’s number for faxes too, because the block list keys on the caller number across both channels.

  • Auto-mode works on voicemail: a rule’s eligibility is scored over a union of its fax and voicemail decisions, so voicemail history alone can graduate a rule.
  • Filing a voicemail to a chart is never automated; a person confirms the patient. See Voicemail as an inbound channel.