Skip to content

Feature Code Maps

Feature code maps let subscriber lines dial short codes (*98-style) that invoke switch applications instead of routing as calls. A map is a named set of code → application entries; line profiles opt their lines into a map.

feature-codes:
standard:
"*98": voicemail.access
"*97": voicemail.access-menu
line-profiles:
office-phone:
feature-code-map: standard
...

A line whose profile sets no feature-code-map has no feature codes — every dialed string goes to the translation walk.

Feature codes apply to line-originated calls only (trunks have no feature codes) and are checked before the translation walk and before speed dials:

  1. When a line dials, the switch scans its map for entries whose code is a prefix of the dialed string.
  2. The longest matching prefix wins — with both *9 and *98 configured, dialing *98 matches *98.
  3. On a match, the call is handed to the mapped application immediately. No translation, screening, or routing happens.
  4. With no match, the dialed string falls through to the normal translation walk unchanged.

Because matching is prefix-based, any digits dialed after the code are passed to the application as an argument — this is how the dial-in voicemail menu accepts a mailbox number appended to the code (below).

The value of each map entry names an application. Two are available in this release, both voicemail access paths:

Drops the caller directly into the voicemail menu for the dialing line’s own mailbox. Because the line itself authenticates the caller (the call comes from the registered device), no PIN is prompted — this is also the supported way for a subscriber to set their initial PIN, since new mailboxes are created without one.

Requires the line to have a voicemail box configured. If a line without a mailbox dials the code, the call fails with the reorder treatment — a deliberate, audible failure so the misconfiguration is noticed rather than the digits silently routing as a call.

voicemail.access-menu — dial-in access to any mailbox

Section titled “voicemail.access-menu — dial-in access to any mailbox”

The PIN-gated dial-in portal, for checking a mailbox from any phone. The digits following the code select the box, in three forms:

Dialed Behavior
*97 Prompts for the mailbox number, then its PIN
*97 1004 Mailbox given; prompts for its PIN
*97 1004 4242 Mailbox and PIN given; verifies and enters directly

The mailbox number’s length comes from the voicemail context’s box-id-length, which is how the combined box+pin form is split. Three wrong PIN entries end the call. Mailboxes that have no PIN set cannot be opened through this path at all — they must first receive a PIN via voicemail.access from their own line or through the management API.

Any other application name is rejected when the configuration is validated.

Maps are independent, so different line classes can expose different codes — or none:

feature-codes:
standard:
"*98": voicemail.access
"*97": voicemail.access-menu
frontdesk:
"*97": voicemail.access-menu # shared phones: dial-in only, no own-box shortcut
line-profiles:
office-phone:
feature-code-map: standard
...
lobby-phone:
# no feature-code-map: no star codes at all
...

A hospitality or hot-desking deployment typically gives shared phones only voicemail.access-menu (PIN-protected, works for any box) and omits voicemail.access, which would expose whatever mailbox happens to be bound to the shared line.

  • Code routes as a call instead of invoking the app — the line’s profile doesn’t reference a map, or the map doesn’t contain the code. Remember the profile opt-in: defining the map under feature-codes: alone does nothing.
  • Caller hears fast-busy on *98 — the line has no voicemail box configured, or the referenced map name doesn’t exist in the configuration.
  • *97 rejects a valid mailbox+PIN string — check the voicemail context’s box-id-length against the mailbox numbering; the combined form is split at exactly that length.