LogoLogo
Help
  • Overview
    • Introduction
    • Characteristics
    • Platforms
  • INITIAL Installation
    • 1. Instructions by platform
      • ProSBC Requirements Matrix
      • Baremetal Installation
        • List of Supported Network Interface Cards
        • SBC Certified Hardware
          • High Performance Baremetal Server
          • Medium Performance Baremetal Server
          • Ciena 3906mvi server for Customer Premises Equipment (CPE)
          • Qotom Barebone server for Customer Premises Equipment (CPE)
          • Lanner Barebone server for Customer Premises Equipment (CPE)
          • Telco Systems virtualization platform on Lanner NCA-2510 server for Customer Premises Equipment(CPE)
      • Virtual, self-hosted Installation
        • Virtual - Proxmox
        • Virtual - VMware
          • Launching an Instance of VMware vSphere
          • Deploying ProSBC on VMware
          • Adding Network Interfaces in VMware
          • Configuring Passtrough interfaces on VMware
      • Cloud Installation
        • Cloud - AWS
          • AWS Installation
          • Cloud Formation Installation
          • Instance Upgrade
          • AWS Additional Interface
          • AWS Installation Troubleshooting
          • Recovering an Elastic IP address
        • Cloud - Azure
    • 2. Initial Configuration
      • Initial Setup
        • SBC Management IP configuration
      • Basic configuration
        • Configuring IP interfaces
        • Creating a SIP stack
        • Creating a SIP transport server
        • Allocating an SIP NAP
        • Allocating a SIP open NAP
        • SIP Transport DNS settings
        • Creating a first call route
    • 3. Uploading a License
      • Host-control
        • SELinux
        • SELinux management
      • Add/Change Licenses
        • Add/Change Licenses Manually
  • Use Cases
    • Applications
      • Carrier Interconnection
      • Monitoring as a Service (MaaS)
      • NGN Interconnection
      • Operator Interconnection
      • SIP subscribe notify publish forwarding
      • STIR/SHAKEN
      • Transcoding
      • SIP Trunking
      • Hosted PBX
      • SIP Network Peering
      • Remote Workers
    • Interoperability Examples
      • STIR/SHAKEN with Transnexus and ClearIP
      • Fraud Detection [YouMail]
      • Skype Connect
      • Skype for Business S4B TCP
      • Skype for Business S4B TLS
      • Asterisk
      • 3CX
      • FreePBX
      • FusionPBX
      • FreeSWITCH
      • Twilio
      • Sippy
      • Avaya IP Office
      • Cisco UCM 12
      • Brekeke PBX
      • VitalPBX
      • Yeastar P-Series Cloud
      • VoIP.ms
      • Wildix
  • CONFIGURATION DETAILS
    • Configuration By Web Portal Category
      • System Settings
        • Setting the Role to Standalone
        • Setting the Role to a Primary Unit in a 1+1 System
        • Setting the Role to a Secondary Unit in a 1+1 System
        • Resetting the Host Role
        • Resetting the Network Device Role
        • Create Session Border Gateway Access Control List (ACL)
        • Session Border Gateway: Advanced Parameter Settngs
        • Create Session Border Gateway Access Control List (ACL) Filters
        • Connecting to the Web Server and Logging on to the Web Portal
        • Logging Off
        • Modifying Security Settings
        • Creating Web User groups
        • Creating Web Users
        • Modifying Web User Permissions
        • Enabling and Disabling a User
        • Deleting a User
        • Accessing Audit Logs
        • Activating the Configuration
        • Configuring a Web Portal Profile
        • Configuring the Date, Time, Timezone and NTP servers
        • Configuring the DNS
        • Create HTTP Service
        • Use HTTPS service
        • Configure HTTPS certificates
        • Configuring letsencrypt certificate
        • Configuring the ICMP
        • Configuring the SSH
        • Upgrade Telcobridges linux software packages
        • Retrieving a Software Release
        • Uploading a Software Release
        • Activating a Software Release
        • Retrieving a License
        • Uploading a License
        • Database Backup
        • Downloading a Database Backup
        • Uploading a Database Backup
        • Restoring a Database
        • Enabling the SNMP Agent
        • Configuring the SNMP Agent
        • Creating an SNMPv1/SNMPv2 Community
        • Creating an SNMPv3 User
        • Creating an SNMP Trap Destination
      • IP Network Settings
        • Configuring a Virtual Port
        • Configuring a VLAN
        • Configuring an IP Port Range
        • Configuring IP Interfaces
        • Configuring NAT Traversal
          • Local NAT Traversal
          • Remote NAT Traversal
        • DNS Configuration
          • Creating a DNS Local Entry
        • Configuring VoIP Interfaces
      • SIP
        • Creating a SIP Stack
        • Creating a SIP Transport Server
        • TLS/SRTP
          • Creating TLS Certificates
          • Adding TLS Certificates
          • Configuring TLS Profiles
        • Enabling SIP-I/SIP-T
        • SIPREC Forwarding
      • SIP Registrar
        • Creating a SIP Domain
        • Creating a SIP Registrar
        • Creating a SIP Register Filtering Rule
        • Creating a SIP Register Filtering Rule Condition
        • Creating a SIP Register Filtering Rule Action
      • Network Access Points (NAP)
        • Allocating a SIP Open Network Access Point (NAP)
        • SIP NAP Polling
      • NAP Profiles
        • Profile SDP Description
        • Fax Settings
          • Configuring Fax Relay
          • Configure Fax Passthrough
          • Configure Fax T38
          • Configure Fax NSE
          • Configure Fax VBD
      • Call Routing
        • Creating a First Call Route
        • Enable Flexible NOA Routing Script
        • Add NOA Columns in Routes
        • Import Customized Routing Script
        • Add Customer Column in Routes
        • Add Customized Filter Script To Main Script
        • Adding Label Routing to a Routing Script
        • Assign Routing Script Database Files to the Gateway Application
        • Add Digitmap Files to the System
        • Add Routeset Definition Files to the System
        • Assign Definition Digitmap Files on a per NAP Basis
        • Generate Dynamic Routes
        • Steps to configure label routing for Group of DIDs to a single outbound NAPs
        • Steps to configure label routing for Group of DIDs to multiple outbound NAPs
        • Group of DIDs to multiple outbound NAPs: Load-sharing mode
        • Group of DIDs to multiple outbound NAPs: Priority Mode
        • Update the Digitmap Files
        • Update the Routeset Definition Files
        • Configuring RADIUS Authorization
        • Importing a RADIUS Custom Dictionary
      • Lawful Intercept
        • Lawful Intercept Status
        • Verifying lawful interception
        • Importing a Lawful Interception .CSV File
        • Enabling Lawful Interception in a Routing Script
        • Configuring Lawful Interception
      • Call Detail Records (CDR)
        • CDR Variables
          • Call statistics format
        • Retrieve Text CDRs
          • Automatic CDR Retrieval
        • RADIUS CDRs
          • Configuring RADIUS
          • Adding RADIUS Server(s)
          • RADIUS CDR attributes
      • Routing Scripts
        • Development Guides & Tutorials
          • Accessing Routing Script Parameters
          • Parameter Mapping
          • Script Parameters Definition
          • Script Parameters Definition for SIP
          • Accessing Information about Registered Users
          • Route Parameters and Call Routing
          • Playing prompts, announcements, and tones
          • Recording
          • User-to-User Information
          • Radius Authorization
          • ENUM Query
          • DNS Query
          • Call Diversion Options
          • Call Transfer Requests
          • Redirection
          • Connect Number
          • Terminating Calls
          • NAP Status and other NAP Information
          • Telephony Services (CNAM Requests over SS7)
          • Custom User Context
          • Routing Script Tests
          • Create New Routing Script
          • Enable Routing Script
    • Configuration By Use Case
      • SIP Trunking Configuration
        • Configuration Files for SIP Trunking Scenario
        • SIP Trunk Configuration Instruction with 3CX
        • SIP Trunk Configuration Instruction with FreePBX
        • SIP Trunk Configuration Instruction with FusionPBX
        • SIP Trunk Configuration Instruction with FreeSWITCH
        • SIP Trunk Configuration Instruction with Twilio Elastic trunking
        • SIP Trunk Configuration Instruction with Avaya IP Office
        • SIP Trunk Configuration Instruction with Brekeke PBX
        • SIP Trunk Configuration Instruction with Avaya IP Office
        • SIP Trunk Configuration Instruction with Yeastar P-Series Cloud
        • SIP Trunk Configuration Instruction with Cisco UCM
        • SIP Trunk Configuration Instruction with VoIP.ms SIP trunking
        • SIP Trunk Configuration Instruction with Wildix Cloud VoIP PBX
        • Configuration for Adding ProSBC as a SIP Trunk in the FreePBX Server
        • FreePBX Extension Creation
        • FusionPBX SIP Trunk Creation
        • FusionPBX Extension Creation
        • FreeSWITCH SIP Trunk Creation
        • Twilio Elastic SIP Trunking Configuration
        • Sippy SIP Trunk Creation
        • Avaya IP Office Trunk Creation
        • Cisco UCM 12 Trunk Creation
        • Adding ProSBC as a SIP Trunk in the Brekeke PBX
        • VitalPBX Extension Creation
        • Adding ProSBC as a SIP Trunk in the Yeastar P-Series Cloud
        • Adding ProSBC as a SIP Trunk in the Wildix Cloud VoIP PBX
        • SIP Trunk Configuration Instruction with VitalPBX
        • VitalPBX SIP Trunk Creation
      • Configuring SIP Registration to SIP Proxy
      • Configuring a Hosted PBX
      • Multiple Domains/Hosted PBXs
      • SIP Network Peering / IP Carrier Interconnection
      • Remote Workers
        • Configuration Files for Remote Office/Workers
        • Remote Workers Configuration Instruction with FusionPBX
        • Remote Workers Configuration Instruction with 3CX
        • Remote Workers Configuration Instruction with FreePBX
        • Remote Workers Configuration Instruction with VitalPBX
      • ProSBC and ClearIP (TransNexus)
        • Configuration for STIR/SHAKEN with Transnexus' ClearIP service
        • Configuration for CNAM Verification and Robocall Analytics with Transnexus' ClearIP service
        • Configuration for Robocall Mitigation with Transnexus' ClearIP service
        • Configuration for 302 Redirect routing with Transnexus' ClearIP service
        • Configuration for CAPTCHA Authentication – 302 Redirect with Transnexus' ClearIP service
        • Configuration for STIR/SHAKEN with Transnexus' ClearIP service
      • Transcoding Unit Configuration
        • Baremetal and Virtual Machine
        • Show the Hardware Units menu
        • Adding Transcoding Unit
      • Configuration for Adding YouMail Script to Routing Scripts
      • Skype Connect Example Configuration
      • Skype for Business Example Configuration
      • 3CX Phone Provisioning Configuration
        • Configuration for 3CX PBX Server with the ProSBC to receive T38 Faxes
        • Configuration for 3CX PBX Server with the ProSBC as SIP trunk
      • SIP Emergency
      • SIP registration forwarding
        • Creating a SIP Domain
        • Configuring SIP Registration for Open NAP
        • Configuring SIP Registration for regular NAP
      • RTP no-anchoring
        • Parameter: Allow low-delay media relay
          • Configuring an IP Port Range
        • Creating Profiles
          • Modifying SDP Profile Settings
          • Modifying SIP Profile Settings
          • Modifying RTP and Audio Settings
          • Modifying FAX Relay Profile Settings
          • Modifying Telephony Profile Settings
          • Modifying Tones and Call Progress Options
          • Modifying IVR Record Profile Settings
          • Modifying LNP Profile Settings
          • Modifying Multilevel Precedence and Preemption (MLPP) Options
          • Modifying Call Transfer Profile Settings
          • Modifying Tone Definition Profile Settings
    • Configuration Parameters (all)
    • Routing Script - SIP 302 Handling
  • Maintenance & Troubleshooting
    • Maintenance Guide
      • Check Disk Space
      • ProSBC Processor Usage
      • Troubleshooting Toolpack
      • Restoring a Database
    • System Upgrades
      • Migrate current database
      • Upgrade Telcobridges linux software packages
    • Software version release notes
    • Software version release download
    • ProSBC public roadmap
  • Troubleshooting & Support
    • Troubleshooting Tips & Actions
      • Configuring Call Trace
        • Retrieving Call Trace
        • Call Trace Filter Parameters
      • Creating a test call
      • tbsigtrace: Signaling trace capture tool
        • Accessing Device
          • TMG:Change Management IP Address
          • Password less ssh
          • How to setup ssh tunnel with PuTTY
        • Live Signaling Capture with tbsigtrace
      • How to Get Rid of Sub Optimal Warning
      • How to Lower The Trace Level on an Application
      • TBReport
      • VoIP Ethernet Capture on a ProSBC
      • Enabling Call Recording
      • Accessing the Call Recording
      • Routing Scripts
        • Update Your Routing Scripts
        • Disabling a Call Route
    • Troubleshooting Common Problems
    • Support Links
      • Support Forums
      • ProSBC Training
      • Customer Dashboard User Guide
      • Contacting TelcoBridges technical support
      • Frequently Asked Questions
      • Sending Large Files to TelcoBridges
    • How to use tbx cli tools remote program
  • Tools, Tips, and Tricks
    • TelcoBridges Magic Bookmark
    • Video Library
    • RESTful API
      • Postman Examples
      • Ruby Examples
      • TBConfig Examples
        • Exporting a Configuration
        • Importing a Configuration
        • Activating a Configuration
        • Updating a Route
        • Dropping Calls
      • ProSBC:Restful API SIP Domain
      • ProSBC:Restful API SIP Domain Registrar
      • Extracting Call Traces with the API
    • TBStatus API
      • Tbstatus monitoring
      • Status API
      • Dropping calls
  • Appendices
    • Appendix A: Glossary
      • Glossary: Call Detail Records (CDR)
      • Glossary: Call routing
      • Glossary: DNS
      • Glossary: Mean Opinion Score (MOS)
      • Glossary: NAP
      • Glossary: RADIUS
      • Glossary: Ringback tones
      • Glossary: SAP
      • Glossary: Signaling protocols
      • Glossary: SIP
        • Glossary: Route retry
        • Glossary: SIGTRAN
        • Glossary: SIP-I/SIP-T
        • Glossary: SIP gateway
        • Glossary: SIP Registration
      • Glossary: Softswitch
      • Glossary: Toolpack
        • Glossary: Web server
        • Glossary: tboamapp
          • Glossary: Tbtoolpack Service
            • System Id
              • Gateway Port
          • Primary/Secondary
          • Master/Slave
            • Active/Standby
      • Glossary: Unified communications
      • Glossary: Web Portal
      • Glossary: DTMF Relay
    • Appendix B: Product Datasheets
Powered by GitBook
On this page
  • Introduction
  • Announcement file path format and options
  • announcement_tone
  • ring_tone
  • busy_tone
  • disconnect_tone
  • Managing audio prompts through Web Portal
  • Managing audio prompts manually

Was this helpful?

  1. CONFIGURATION DETAILS
  2. Configuration By Web Portal Category
  3. Routing Scripts
  4. Development Guides & Tutorials

Playing prompts, announcements, and tones

Introduction

New feature in release 2.6, all bridges may have these parameters. These can be used to play IVR prompts (audio files) in different states of the call flow.

  • announcement_tone (played before outgoing call is routed)

  • ring_tone (played after when waiting for outgoing call to answer)

  • busy_tone (played if outgoing call failed)

  • disconnect_tone (played after the call has reached it's maximum duration)

Example to play an announcement to incoming call (before routing outgoing call, regardless if a matching route is found or not):

 bridge[:announcement_tone ] = "my_announcement.wav"

Example to play a ring-tone while the outgoing call is ringing:

 bridge[:ring_tone] = "my_ring_tone.wav"

Example to play an audio file when outgoing call fails (no route, or outgoing call is refused):

 bridge[:busy_tone] = "my_busy_tone.wav"

Example to play an audio file when call has reached the maximum allowed duration:

 bridge[:disconnect_tone] = "your_account_balance_is_empty.wav"

Announcement file path format and options

All file plabyacks (:announcement_tone, :busy_tone, :ring_tone, :disconnect_tone) inside bridge parameters use this format.

"file1.wav:repeat:start_off:end_off,file2.wav:repeat:start_off:end_off,file3.wav:repeat:start_off:end_off"

Optional parameters:

  • repeat: number of times to play the file (0 and 1 have the same result)

  • start_off: Start offset in milliseconds

  • end_off: End offset in milliseconds

Example 1

The following example will play file1.wav once, and then play file2.wav in a loop:

 "file1.wav,file2.wav:-1"

Example 2

The following example will play file1.wav from a start offset of 1 second to an end offset of 3 seconds, followed by file2.wav being played two times from second 5 to second 10.

 "file1.wav:0:1000:3000,file2.wav:2:5000:10000"

Example 3

The following example will play file1.wav once, ending at an offset of 30 seconds.

 "file1.wav:0:0:30000"

announcement_tone

 params[:bridge][:announcement_tone] = "announcement.wav" 

Audio file played on the incoming call before any outgoing call is placed. The outgoing call occurs when the file finished playing.

announcement_tone options

announcement_tone_answer

 params[:bridge][:announcement_tone_answer] = "yes"

Forces an answer of the call before playing the announcement. Default if argument not provided is "no", in which case call is only alerted with in-band media.

announcement_code_detect

This option allows that the tone detection is enabled during the announcement play.

Collected digits can be inserted into the CDR logs (radius attribute "Telcob-CollectedDigits", or text CDR variable @{CollectedDigits}).

Collected digits can also be sent back to routing script, which is called again with the same call attributes, except that the called number is replaced by the collected digits.

Code detect has multiple options, as shown in the following code:

 code_detect = {
   :type                   => :DTMF,   # :DTMF or :MFR1 tone detection.
                                       # Default is MFR1.
   :prefix                 => "",      # Prefix (digits) that is removed from collected digits.
                                       # Default is empty.
   :suffix                 => "",      # Suffix (digits) that is removed from collected digits
                                       # and causes routing script to be immediately called.
                                       # Default is empty.
   :suffix_removal         => false,   # Controls the removal of the suffix from the collected digit string that's reported to routing script.
                                       # Default is false
   :timeout                => 0,       # Inter-digit timeout (ms) after which collected digits are passed to the routing script.
                                       # Use 0 for "no timeout".
                                       # Default is 1000ms
   :barge_in_interruption  => true,    # When enabled, playing announcement is stopped as soon as first digit is collected.
                                       # Default is true.
   :proceed_on_play_done   => false,   # When true:  Outgoing call is made after announcement finishes playing.
                                       #             Routing script is not called again.
                                       # When false: Outgoing call is never made.
                                       #             Digits are collected until timeout or suffix match,
                                       #             then routing script is called again.
                                       # Default is false.
   :cas_on_hook            => false,   # Specific for CAS-R1 calls. Makes CAS bits switch to "on-hook" when announcement finished playing
                                       # (but the call is not "terminated" from Toolpack point of view)
                                       # Default is false.
   :cas_on_hook_delay      => 0,       # Duration of cas bits "on-hook" state.
                                       # Only effective if cas_on_hook is set to true.
                                       # Value of 0 stands for "infinite delay".
                                       # Default is 0.
   :repeat_delay           => 0,       # Delay between repetition of the announcement. The announcement will repeat
                                       # itself every "repeat_delay" until a code is detected (suffix match or timetout).
                                       # Value of 0 stands for "infinite delay" (no repeating).
                                       # Default is 0.
 }

Example 1: Collect DTMF digits, and call routing script again with collected digits upon timeout or suffix match.

 code_detect = { :type => :DTMF, :suffix => "#", :timeout => 5000 }
 params[:bridge][:announcement_code_detect] = code_detect

Example 2: Collect digits during the announcement (for CDR logs), then proceed (make outgoing call) after announcement finishes playing

 code_detect = { :type => :DTMF, :timeout => 0, :barge_in_interruption => false, :proceed_on_play_done => true }
 params[:bridge][:announcement_code_detect] = code_detect

Controlling what happens after announcement

The routing script can control what happens with the call after the announcement finishes playing:

  • An outgoing call is made

  • Incoming call is hung-up

  • Do nothing (wait for the incoming call to hang-up)

An outgoing call is made

This happens when the script has returned matching routes (and did not raise RoutingException)

Incoming call is hung-up

This happens when the script returns no routes (in which case base_routing will raise RoutingException with cause :no_route).

It also happens when the script explicitly raises RoutingException.

The incoming call will be terminated with the specified cause. For example

   raise RoutingException, :temporary_failure

(See "Reason values" section in this page for list of available causes)

Do nothing (wait for the incoming call to hang-up)

If a filter raises RoutingException with code :ok, then the incoming call will not be terminated at the end of the announcement play. Announcement digit collection will remain active if appropriate. For example:

   raise RoutingException, :ok

ring_tone

 params[:bridge][:ring_tone] = "ringing.wav" 

Audio file played on the incoming call while waiting for the outgoing call to be answered.

Ring tone playback can also be configured in the Web Portal, from the incoming call's profile (under "Tones and Call Progress Options").

Routing script has precedence over profile (a routing script that fills params[:bridge][:ring_tone] will override the profile's ring tone behavior).

ring_tone options

ring_tone_state

 params[:bridge][:ring_tone_state] = :alerted

Call state from which ring tone is being played. Available values are:

  • immediately: Ring tone starts playing immediately on the incoming leg

  • accepted: Ring tone starts playing as soon as outgoing call is accepted

  • callprogress: Ring tone starts playing as soon as "call progress" is received on the outgoing call

  • alerted (default): Ring tone starts playing only once outgoing call is alerted (but won't play if alert indicates early media from outgoing call)

This option also applies when params[:bridge][:ring_tone] are not used, because it also applies to ring tone playback configured in the Web Portal, from the incoming call's profile.

busy_tone

 Toolpack 2.8 and above:
   params[:bridge][:busy_tone] = "no_route.wav"
 Note: Obsolete name (toolpack 2.7.153 and earlier, but still supported in recent releases):
   params[:bridge][:call_progress_tone] = "no_route.wav" 

Audio file played on the incoming call when outgoing call fails (never answered).

Note that announcement_tone, if used, is played before the outgoing call attempt is made, and thus before the busy_tone.

Busy tone playback can also be configured in the Web Portal, from the incoming call's profile (under "Tones and Call Progress Options").

Routing script has precedence over profile (a routing script that fills params[:bridge][:busy_tone] will override the profile's busy tone behavior).

Special value "none" can be used by routing script to force playing nothing (as empty string would default to profile's behavior)

busy_tone options

busy_tone_answer

 params[:bridge][:busy_tone_answer] = "yes"

Forces an answer of the call before playing the busy tone. Default if argument not provided is "no", in which case call is only alerted with in-band media.

disconnect_tone

 params[:bridge][:disconnect_tone] = "max_duration.wav" 

Audio file played on the incoming call when call duration (:max_call_duration) is reached. Then the leg will be terminated with specified reason (:call_duration_reason).

disconnect_tone options

max_call_duration

 params[:bridge][:max_call_duration] = "60000" 

Maximum call duration in millisecond. This timer is started when entering answer state.

call_duration_reason

 params[:bridge][:call_duration_reason] = :resource_unavailable 

Drop both legs with this reason when call duration (:max_call_duration) is reached.

Managing audio prompts through Web Portal

Prompts management must be done using the Web Portal of the primary server (in systems with redundant TMedia units or redundant host servers). The file will automatically get replicated to the secondary server.

Managing audio prompts manually

Any file on the TMedia host file system can be played. This means it's possible to manage prompts through ssh/scp.

The default (replicated) prompts folder

By default, when playing a prompt, Toolpack will look in the default prompts folder:

/lib/tb/toolpack/pkg/prompts

The root of this "prompts" directory is automatically replicated to secondary unit of redundant setups (1+1, N+1, redundant hosts). Sub-folders won't be replicated.

Any prompt play request without explicit file path will map to this folder. For example:

 params[:bridge][:busy_tone] = "no_route.wav" 

This will correspond to file /lib/tb/toolpack/pkg/prompts/no_route.wav

Relative file paths

Any file path that begins with "file://" is considered relative to the tbstreamserver application's working directory:

/lib/tb/toolpack/setup/12358/2.8/apps/tbstreamserver/

(Where "2.8" may be replaced by the current major version of your system)

For example:

 params[:bridge][:busy_tone] = "file://my_folder/no_route.wav" 

This will correspond to file /lib/tb/toolpack/setup/12358/2.8/apps/tbstreamserver/my_folder/no_route.wav

Absolute file paths

Absolute paths can also be provided. For example:

 params[:bridge][:busy_tone] = "file:///root/my_folder/no_route.wav" 

This will correspond to file /root/my_folder/no_route.wav

PreviousRoute Parameters and Call RoutingNextRecording

Last updated 7 months ago

Was this helpful?

Http and other path formats are described here:

Audio prompts can be uploaded or deleted from the TMedia unit through the Web Portal:

Path format
Managing audio prompts