Alternate title: an exercise in tedium.

About

Announcements, in Communication Manager (CM) 5 and 6 at least, are simply specially-crafted wav files, stored on NVRAM/flash on either a port-network VAL board or a media-gateway announcement board, which are played back to callers. Announcements do not involve overhead paging, intercom groups, group-paging, or any other type of public communication.

This document is specifically about Aura Communication Manager announcements; it does not address anything about Modular Messaging, Aura Messaging, or any other voicemail or bulletin board system.

Terminology

Announcement: Pre-determined audio (voice or music) that is played to callers.

Integrated announcement: An announcement which is stored as a wav file on an announcement board.

Announcement board: Hardware that holds integrated announcement wav files, and provides ports so that they can be played back to callers.

Audio-group: Functionality such that specific announcements may be administered to a set of announcement boards, rather than one specific announcement board. Permits load balancing, high availability, and potentially reduced trunking/network costs.

Listing announcement boards

CM provides a quick and easy way to see the status of each announcement board, by asking it to display them.

display integrated-annc-boards                                  Page   1 of  13
                          INTEGRATED ANNOUNCEMENT BOARDS

      Brd       Tim      Num  Chk            Brd       Tim      Num  Chk
      Loc   Sfx Rem   Rt Annc Sum            Loc   Sfx Rem   Rt Annc Sum

   1: 02A05 AP  663   64 71   N/A        16: 023V9 AP  2775  64 1    N/A
   2: 003V9 AP  737   64 93   N/A        17: 024V9 AP  2751  64 2    N/A
   3: 004V9 AP  2692  64 7    N/A        18: 027V9 AP  2634  64 3    N/A
[... lines omitted for brevity ...]

“Brd Loc” is the board’s physical location identifier (slot number in a port-network, and V9 in a media-gateway).

“Sfx” is the board functionality suffix.

“Tim Rem” is the quantity of remaining seconds that the board is able to physically store at bitrate “Rt”.

“Num Annc” is the quantity of announcements on that board.

Enabling/disabling announcement boards on media-gateways

In order to use a media-gateway announcement board, it must be enabled for use.

Attempting to assign an announcement to an announcement-board that has not been enabled will result in error message "010v9 " is an invalid entry; please press HELP.

If you don’t know whether or not an announcement-board has been enabled, use display integrated-annc-boards (as mentioned above).

To enable an announcement board, it’s one simple command:

enable announcement-board 10v9

[... blank lines omitted ...]

Command successfully completed

It’s also safe to attempt to re-enable it while it’s already enabled:

enable announcement-board 10v9

[... blank lines omitted ...]

This announcement board is already active

Of course, you can also disable an announcement-board on a media-gateway. You must disable the announcement-board on a media-gateway immediately before you intend to remove the media-gateway, for example.

==Ensure that you manually re-assign or delete all announcements and files from an announcement-board prior to disabling it, if you do not intend to immediately re-enable it.==

disable announcement-board 10v9

[... blank lines omitted ...]

Command successfully completed

You can confirm that the board is disabled when it disappears from the display integrated-annc-boards result.

About audio groups

CM implements audio-groups so that a single announcement can be stored on multiple announcement boards. The advantage to this is so that announcements are available in many locations, so calls have less cause to traverse trunks/networks solely in order to play an announcement. It also provides for limited high-availability, in that an announcement-board can be made unavailable temporarily, and announcements assigned to groups that the announcement-board was a member of will still be available.

You can see a list of audio-groups that are administered in your system:

list audio-group

                               AUDIO GROUPS

    Group             Name                           Number of Sources

     1             Everywhere                               12
     2             CRTH                                     2

Command successfully completed

Adding/changing audio-groups is as simple as adding or removing board locations from the list of audio sources on the “change audio-group” screen. ==Take caution: adding and removing announcement boards from audio-groups does not alter file management in any manner. You MUST manually transfer files such that all announcements that are administered to an audio-group are actually identical, file-wise, among all of the boards in that audio-group.==

change audio-group 2                                            Page   1 of   5
                                AUDIO GROUP 2

                          Group Name: CRTH

AUDIO SOURCE LOCATION
  1: 003V9    16:          31:          46:          61:          76:
  2: 006V9    17:          32:          47:          62:          77:
  3:          18:          33:          48:          63:          78:
  4:          19:          34:          49:          64:          79:
  5:          20:          35:          50:          65:          80:
  6:          21:          36:          51:          66:          81:
  7:          22:          37:          52:          67:          82:
  8:          23:          38:          53:          68:          83:
  9:          24:          39:          54:          69:          84:
 10:          25:          40:          55:          70:          85:
 11:          26:          41:          56:          71:          86:
 12:          27:          42:          57:          72:          87:
 13:          28:          43:          58:          73:          88:
 14:          29:          44:          59:          74:          89:
 15:          30:          45:          60:          75:          90:

Listing integrated announcements on boards

This list could be used to audit the files that are present on a board, as well as the assignment mechanism (if it’s assigned via audio-group, a group number is indicated).

list integrated-annc-boards 6v9                                        Page   1

                           INTEGRATED ANNOUNCEMENTS
Board Location: 006V9                         Time Remaining at 64Kbps: 2211

Internal Group  Announcement                                  Length   Size
Number   Number Extension        Name                          (Sec)   (Kb)
NA       2      6990             0                             1      10
NA       2      6991             1                             1      8
NA       2      6988             10x10                         4      32
[...]
NA       2      3461             vm-transfer                   5      40
NA       1      3441             moh_default                   17     134

Listing all announcements

list announcement                                                      Page   1

                           ANNOUNCEMENTS/AUDIO SOURCES
Announcement                                                  Source      Num of
Extension             Type       Name                        Pt/Bd/Grp    Files
2994                  integrated ict-non-incoming             G2          2
2995                  integrated intercept-forward-part3      G2          2
2996                  integrated intercept-forward-part1      G2          2
2997                  integrated intercept-part3              G2          2
2998                  integrated intercept-part2              G2          2
2999                  integrated intercept-part1              G2          2
3000                  integrated intercept-centigram          G2          2
[...]
                press CANCEL to quit --  press NEXT PAGE to continue

Creating an announcement

Take a look at the add announcement screen:

add announcement 1550                                           Page   1 of   1

                       ANNOUNCEMENTS/AUDIO SOURCES

  Extension: 1550                            COR: 1
  Annc Name: example-announcement             TN: 1
  Annc Type: integrated                    Queue? y
Group/Board: 006v9
  Protected? n                              Rate: 64

The “Extension” field is display-only; it’s calculated based on your add command. Your add command must specify an available extension (just like a station would be assigned); this example uses extension 1550. In reality, I have a large group of extensions set aside for announcement use.

“Annc Name” is the name of the wav file on disk. The maximum length is 27 characters. I recommend making the name all lower-case alphanumeric, and with no spaces or special characters except hyphen and underscore. This name must be unique on a per-board basis, and I very strongly recommend that it be unique system-wide. If you attempt to create an announcement with a conflicting name, you’ll receive the message Announcement name already in use on this board.

“Annc Type”: There are numerous announcement types available, but I’m only going to pay attention to integrated announcements for purposes of this document. There are three types of integrated announcements: “integrated”, “integ-mus”, and “integ-rep”. “Integrated” announcements are the default and most common type of announcement. “Integ-rep” announcements are identical to “integrated” announcements, with the difference being that the announcement repeats indefinitely, stopping only when the call terminates, a vector causes it to stop, or the caller presses a key during digit collection. “Integ-mus” announcements are strictly for music (on hold or en queue).

“Group/Board”: Enter either the announcement board location or ‘G’ and the audio-group number. ==Take caution: If you assign an announcement to an audio-group, you cannot use a console station to manage the announcement file. You MUST manually transfer files such that all announcements that are administered to an audio-group are actually identical, file-wise, among all of the boards in that audio-group.==

“COR” (Class of Restriction) and “TN” (Tenant) are just that, and you will hopefully already know what values you should use for them.

“Queue” defines how callers are connected to the announcement. The possible values are “y”, “n”, and “b”. When set to “y”, the caller is assigned an audio port, and the announcement is play from the beginning. If no audio ports are available, the caller will queue for the next available port. When set to “n”, the announcement will be played from the beginning, just as it would with “y”, except that if there are no audio ports available, the caller will not enter a queue; the announcement will simply be skipped. When set to “b”, audio ports are multiplexed, and the caller will be joined to a currently playing port for that announcement. This means that the announcement will not necessarily start playing at the beginning – the caller can be joined part-way through.

If your announcement type is “integ-mus”, your queue configuration is forced to “b”. You can choose any queue configuration for “integrated” and “integ-rep” announcements.

“Rate” defines the bitrate for the wav file. Leave it at “64” unless you have very good reason to change it.

Submit the screen; if successful, you’ll see Command successfully completed. Now you’re ready to either record the announcement (if it’s assigned to a specific board, rather than group) or upload a pre-recorded announcement (regardless).

Recording an announcement

To record an announcement that has been assigned to a specific announcement board (not an audio-group):

  • At a station holding console privileges, dial #0.
  • When you hear dialtone, dial the extension of the announcement to record.
  • You’ll hear dialtone again. Press 1 to begin recording (and then press # when you’re done recording). Press 2 to review the recorded announcement. Press 3 to delete the announcement file. Repeat this step as necessary; you will be returned to this dialtone after each option is complete.
  • Hang up when you’re done.

Deleting an announcement

To delete an announcement, simply execute “remove announcement ”:

remove announcement 1550                                        Page   1 of   1

                       ANNOUNCEMENTS/AUDIO SOURCES

  Extension: 1550                            COR: 1
  Annc Name: example-announcement             TN: 1
  Annc Type: integrated                    Queue? y
Group/Board: 006V9
  Protected? n                              Rate: 64

Submit the screen; if successful, you’ll see Command successfully completed. Note that this only deletes the announcement translations; the wav files on-disk are not deleted. See the “Deleting a file” section.

Changing an announcement’s group/board

To change which group/board an announcement is assigned to, first copy the announcement file from the source board to the destination board (see separate instructions below), run “change announcement ”, and change the group/board field:

change announcement 1550                                        

                       ANNOUNCEMENTS/AUDIO SOURCES

  Extension: 1550                            COR: 1
  Annc Name: example-announcement             TN: 1
  Annc Type: integrated                    Queue? y
Group/Board: 003V9
  Protected? n                              Rate: 64

(submit)

Changing the board location does not move the announcement file  

(submit)

WARNING: Requires announcement file with changed name to play announcement 

(submit)

Command successfully completed 

You have to submit the screen several times, because it displays warnings indicating that the announcement file will not be moved. Once successful, you’ll see Command successfully completed. You must have already copied the announcement file to the destination announcement board. If you haven’t, you’ll instead receive this message:

WARNING: Unrecorded announcement selected or board not ready 

Moving all of a board’s announcements

If you need to move all of a board’s announcements – say if you’re replacing a VAL board or media gateway, or opening or closing a location – you can use change integ-annc-brd-loc. You must copy all of the announcement files from the source board to the destination board manually: this command only updates translations; it doesn’t touch the files.

change integ-annc-brd-loc                                       Page   1 of   1

                   CHANGE INTEGRATED ANNOUNCEMENT TRANSLATIONS

   Change all board location translations from board: 2a05  to board: 3v9



          Changing board locations using this command will change
          all currently administered "from" board locations on the
          ANNOUNCEMENTS/AUDIO SOURCES and AUDIO GROUP screens
          to the "to" board location

Once this command has completed (it should only take a few seconds), make sure that you call all of the announcements on the destination board to ensure that there is no corruption.

Seeing where an announcement is being used

list usage extension 1550

                             LIST USAGE REPORT

Used By
Announcement

Vector               Vector Number        3
                                                                      Step 2

Here, you can see that extension 1550 is an announcement, and that announcement is being used in vector 3 at step 2.

Deleting a file

There are two ways to delete a file: either from a station holding console privileges (if the announcement is still administered in CM, and the announcement is administered to a single announcement board rather than an audio-group), and via file transfer.

To delete a file from a station holding console privileges:

  • Dial #0.
  • When you hear dialtone, dial the extension of the announcement to be deleted.
  • You’ll hear dialtone again. Press 3 to delete the announcement file.
  • Hang up.

To delete a file via file transfer, see the “Transferring files” section.

Transferring files

How files are transferred depends on the type of announcement board.

Determining your hardware

Use “display integrated-annc-boards”, as mentioned previously, to display a list of your announcement boards. If the board you want to use ends in “V9”, it is a media-gateway (otherwise it’s a circuit pack on a port-network).

To determine the model and IP address of the media-gateway (because you’ll need it later), use “display media-gateway”:

display media-gateway 6                                         Page   1 of   2
                             MEDIA GATEWAY 6

                    Type: g450
[...]
              Registered?  y
   FW Version/HW Vintage: 36 .9  .0  /1
        MGP IPV4 Address: 10.2.3.4
[...]

Make a note of the “Type” (in this case ‘g450’) and “MGP IPV4 Address” (in this case ‘10.2.3.4’).

To determine the model of a circuit-pack:

list configuration board 2a05

                              SYSTEM CONFIGURATION

Board                                                     Assigned Ports
Number   Board Type              Code     Vintage    u=unassigned t=tti p=psa

02A05    VAL-ANNOUNCEMENT        TN2501AP HW16 FW023 01 02 03 04 05 06 07 08
                                                     09 10 11 12 13 14 15 16
                                                     17 18 19 20 21 22 23 24
                                                     25 26 27 28 29 30 31 32
                                                     33 34

Make a note of the model code (in this case ‘TN2501AP’).

To determine the IP address of a circuit-pack:

display ip-interface 2a05                                       Page   1 of   2
                                  IP INTERFACES


                  Type: VAL
                  Slot: 02A05
           Code/Suffix: TN2501
      Enable Interface? y
[...]
                                 IPV4 PARAMETERS
             Node Name: fcjfsval2a05              IP Address: 10.2.1.5
[...]

Make a note of the IPv4 IP Address (in this case ‘10.2.1.5’).

Transferring files via (S)FTP

To transfer files to/from an announcement board using (S)FTP, you must first enable file transfers for that board:

enable filexfer                                                 Page   1 of   1


                                 ENABLE FILE TRANSFER

                    Login: drew
                 Password:
         Reenter Password:
                   Secure? n
            Board address: 6v9



Command successfully completed

This screen defines the FTP credentials that you’ll use for this board. The login and password defined here is not related to your CM username or password, or any other username or password, in any way.

The “Secure?” field defines whether the file transfer will use SFTP on port 22 (if it’s set to “y”) or FTP on port 21 (if it’s set to “n”). G430/G450 does not support SFTP via this mechanism, so “Secure?” must be set to “n” if you are using that type of announcement board. Circuit-pack TN2501AP does support SFTP, so “Secure?” should be set to “y”. I recommend always attempting to set “Secure?” to “y”; if the hardware doesn’t support SFTP, CM will prevent you from submitting the form.

Now you’re ready to transfer audio files to/from the board. Using your preferred (S)FTP client, open a connection to the IP address you noted earlier, on port 21 for FTP or 22 for SFTP, with the credentials you just defined. Your default remote path will be “/annc”. Filenames must exactly match announcement names, including case sensitivity.

When you’re done transferring files to/from the board, disable access to it:

disable filexfer board 006V9

[... blank lines omitted ...]

Command successfully completed

If you fail to disable file transfer for a specific board, it will remain enabled until the next system reset, board reset, board reseat, firmware update, power cycle, or any other event that interrupts board operation.

G430/G450 via SSH/CLI

G430 and G450 additionally supports announcement file management via command-line.

Open a connection to the desired media-gateway, using your root credentials:

$ ssh root@10.2.3.4

There are numerous commands you can use to manage announcement files from the command line:

# show announcements files
 ID      File               Description    Size (Bytes)      Date
---- ------------------ ------------------ ------------ -------------------
101   moh_default.wav    announcement file      137567    2013-11-20,11:31:48
102   music_general.wav  announcement file      137567    2013-11-20,11:31:52

[... many lines removed for brevity ...]

Nv-Ram:
Total bytes used             : 5095936
Total bytes free             : 17695744
Total bytes capacity (fixed) : 22791680

To rename an existing announcement-file:

# rename announcement-file ?
Rename announcement-file commands:
---------------------------------------------------------------------------
Syntax : rename announcement-file <source-filename> <destination-filename>
 <source-filename>      : source file name
 <destination-filename> : destination file name

To erase an existing announcement-file:

# erase announcement-file ?
Erase announcement-file commands:
---------------------------------------------------------------------------
Syntax : erase announcement-file <source-filename>
 <source-filename>    : source file name

To download an announcement-file from an FTP server to the integrated announcement board:

# copy ftp announcement-file ?
Copy ftp announcement-file commands:
---------------------------------------------------------------------------
Syntax : copy ftp announcement-file <source-filename> <ip> [<destination-filename>]
 <source-filename>      : source file name (full path)
 <ip>                   : the ip address of the host
 <destination-filename> : destination file name
Examples:
  copy ftp announcement-file ann.wav 198.87.134.153 ann1234.wav
  copy ftp announcement-file ann.wav 2001:db8::c657:8699 ann1234.wav
  copy ftp announcement-file ann.wav my.ftp.server ann1234.wav

To download an announcement-file from an SCP server to the integrated announcement board:

# copy scp announcement-file ?
Copy scp announcement-file commands:
---------------------------------------------------------------------------
Syntax : copy scp announcement-file <source-filename> <ip> [<destination-filename>]
 <source-filename>      : source file name (full path)
 <ip>                   : the ip address of the host
 <destination-filename> : destination file name
Examples:
  copy scp announcement-file ann.wav 198.87.134.153 ann1234.wav
  copy scp announcement-file ann.wav 2001:db8::c657:8699 ann1234.wav
  copy scp announcement-file ann.wav my.scp.server ann1234.wav

To download an announcement-file from a USB flash drive that is currently plugged into the media-gateway:

# copy usb announcement-file ?
Copy usb announcement-file commands:
---------------------------------------------------------------------------
Syntax : copy usb announcement-file <source-usb-device> <source-filename> [<destination-filename>]
	<source-usb-device> - source usb-device logical name
	<source-filename> - source file name (full path)
	<destination-filename> - destination file name
Example: copy usb announcement-file usbdevice0 dir1/a1.wav

To view the status of the ongoing announcement-file download:

# show download announcement-file status
Can not get name of the downloaded file.
Module #9
==============================
Module             : 9
Source file        : (null)
Destination file   :
Host               : NULL
Running state      : Idle
Failure display    : noError
Last warning       : noWarnings
Bytes downloaded   : 0

The above example is representative of the result you would receive if there is no download in progress.

To upload an announcement-file to an FTP server:

# copy announcement-file ftp ?
Copy announcement-file ftp commands:
---------------------------------------------------------------------------
Syntax : copy announcement-file ftp <source-filename> <ip> [<destination-filename>]
 <source-filename>      : source file name
 <ip>                   : the ip address of the host
 <destination-filename> : destination file name
Examples:
  copy announcement-file ftp ann.wav 198.87.134.153 ann1234.wav
  copy announcement-file ftp ann.wav 2001:db8::c657:8699 ann1234.wav
  copy announcement-file ftp ann.wav my.ftp.server ann1234.wav

To upload an announcement-file to an SCP server:

# copy announcement-file scp ?
Copy announcement-file scp commands:
---------------------------------------------------------------------------
Syntax : copy announcement-file scp <source-filename> <ip> [<destination-filename>]
 <source-filename>      : source file name
 <ip>                   : the ip address of the host
 <destination-filename> : destination file name
Examples:
  copy announcement-file scp ann.wav 198.87.134.153 ann1234.wav
  copy announcement-file scp ann.wav 2001:db8::c657:8699 ann1234.wav
  copy announcement-file scp ann.wav my.scp.server ann1234.wav

To upload an announcement-file to a USB flash drive that is currently plugged into the media-gateway:

# copy announcement-file usb ?
Copy announcement-file usb commands:
---------------------------------------------------------------------------
Syntax : copy announcement-file usb <source-filename> <dest-usb-device> [<destination-filename>]
 <source-filename>      : source file name
 <dest-usb-device>      : destination usb-device logical name
 <destination-filename> : destination file name
Example: copy announcement-file usb a1.wav usbdevice0 /dir1/a1.wav

To view the status of the ongoing announcement-file upload:

# show upload announcement-file status
Can not get name of the uploaded file.
Module #9
==============================
Module             : 9
Source file        :
Destination file   : (null)
Host               : NULL
Running state      : Idle
Failure display    : noError
Last warning       : noWarnings

The above example is representative of the result you would receive if there is no upload in progress.

Converting other audio files into announcements

There’s nothing magical about announcement files - they’re just wav files that have been saved with specific settings:

  • CCITT A-Law or CCITT m-Law (mu-Law) companding format (do not use PCM)
  • 8-kHz sample rate
  • 8-bit resolution (bits per sample)
  • Mono (channels = 1)

Many audio manipulation applications are available which are capable of saving compliant files. Two of the most popular are Adobe Audition and Audacity.

Audacity

Steps to transform the audio:

  • At the bottom left of the screen, the Project Rate (Hz) is configured. Change it to 8000.
  • Tracks -> Stereo Track to Mono (accept defaults)
  • Effect -> Truncate Silence (accept defaults)
  • Effect -> Compressor (accept defaults)

If you’ll be doing this repeatedly, you can configure a “chain” on the Audacity file menu (Edit Chains) that will cause Audacity to repeat these steps when you tell it to apply the configured chain.

When you use the ‘save’ functionality in Audacity, you’re actually saving a project file, which doesn’t help us at all. What you actually want to do is export the audio using the correct encoding:

  • File -> Export Audio
  • Format: Other uncompressed files
  • Header = WAV (Microsoft)
  • Encoding = U-Law