Adds a per-voicemail-box option that diverts the caller to an arbitrary
dialable destination instead of leaving a message. Useful for handing
voicemail off to an external service (e.g. Microsoft Teams, a paging
group, an answering service) while keeping the caller's original
Caller-ID intact for downstream logging.
The setting lives on the voicemail box (v_voicemails) — not on the
extension's follow-me/forwarding settings — so it only fires when a call
actually reaches voicemail.lua. It does not interact with the existing
"No Answer" forward on the call-forward page, nor with call-center,
ring-group, or FIFO no-answer handling: those mechanisms route the call
elsewhere before voicemail.lua ever runs, so the divert never triggers
on those paths in the first place.
Schema (v_voicemails, registered in app/voicemails/app_config.php so
upgrades pick it up automatically):
* alternate_voicemail_enabled boolean
* alternate_voicemail_destination text (any dialable string —
extension number, external
number, etc.)
UI is added to the voicemail edit screen
(app/voicemails/voicemail_edit.php) directly under "Mail To", mirroring
the toggle + destination input pattern used on the call-forward page.
Sanitisation matches the existing forward_*_destination fields
([^\*0-9] stripped).
Voicemail behaviour change is in
app/switch/resources/scripts/app/voicemail/index.lua: when a caller hits
a valid voicemail box and the box has the alternate voicemail location
enabled, the script transfers the call via session:transfer(destination,
"XML", context) BEFORE the greeting plays. session:transfer preserves
channel variables so the original Caller-ID is carried into the diverted
leg.
Override semantics — when enabled, the alternate location always wins.
The voicemail menu (voicemail_action == "check") path is unaffected, so
extension owners can still log in and review their existing messages.
Group-call safety net: the divert is intentionally skipped when the leg
is part of a call-center, ring-group, or FIFO bridge (detected via the
cc_side, cc_queue, dialed_extension, ring_group_uuid, or fifo_role
channel variables). In normal use these paths shouldn't reach the
voicemail Lua at all — the queue / group manages its own no-answer
behaviour upstream — but if one does land here for any reason, we don't
want a session:transfer to yank the leg out of the queue's control and
hijack the call to the alternate destination.
* Translating apps to Georgian
* Translating apps to Georgian
* Translating more apps to Georgian
* Translating more apps to Georgian
* Translating more apps to Georgian
* Translating more apps to Georgian
* Translating more apps to Georgian
* Translating theme to Georgian
* Translating core to Georgian
* Translating core to Georgian
* Translating core to Georgian by Marie
* Translating core to Georgian
* Translating resources to Georgian by Marie
* Translating core to Georgian
* fix app_languages.php
Imported Found language ro as ro-ro Romanian (tested by reverse translation)
Add placeholders for all found languages
Add new missing flags
Enhancements to text class
* improved sort to keep language-* tags organized at the top
* if a language is missing a name tag, add it
* changed organizer to not add a final \n
* corrected some indenting
* added detect_all_languages that attempts to find any languages that haven't been defined in resources/app_languages.php
* added language_totals, this is used by the optional languages application to calculate how complete a language is
Convert all languages to use the en-us style codes
Where an installation is using a 2 digit code, use the legacy map to find
the mapped language and provide that text correctly
Have escape_str strip \' before converting or we end up with a double
encode
Update organzie_languages to understand how to convert legacy languages
automatically
updated flags
organize_languages will now use an internal function to escape values as fusion's check_str would not be appropriate
enabled two missing flags
organize on remaining app_languages.php and add missing 'he'
* BugFix [master] Languages add missing text placeholders
add placeholders for missing language text
reorganise file so languages are in a consistent order with en-us always first, and the remaining stored alphabetically
space out tag names to make them line up for readability
* add organize_language to text class
also add get_languages
* Update macro.lua
Add additional macros for the tutorial.
* Create tutorial.lua
* Update index.lua
* Update record_greeting.lua
Add menu variable to route back to appropriate place in the flow.
* Update record_menu.lua
Add menu variable to accommodate the tutorial.
* Update change_password.lua
Add menu variable to accommodate the tutorial.
* Update record_name.lua
Add menu variable to accommodate the tutorial.
* Update voicemail_edit.php
Add option to play tutorial on next login.
* Update app_languages.php
* Update app_config.php
Add voicemail_tutorial to database.
* Update extension_edit.php
Set "voicemail_tutorial" to true for new extensions.
Requires that you have fusionpbx-apps/sms
Doesn’t impact anything if you don’t have it. Must be enabled with
default_setting voicemail_to_sms
Everything is disabled by default and the fields in voicemail_edit.php
are hidden by default.
* add built in ability for microsoft bing speech to text
* move json.lua to lower case and more error checking in record_message
* Replaced Creative Commons json.lua with lunajson.lua which is MIT license
https://github.com/grafi-tt/lunajson/blob/master/LICENSE
Cause all the .php files containing lines ending with \r\n to instead end with \n.
DYI with:
find fusionpbx -type f -name '*.php' -exec dos2unix '{}' \;