Commit Graph

12745 Commits

Author SHA1 Message Date
teknoprep ed9ba8a21a Add Alternate Voicemail Location to voicemail box settings (#7932)
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.
2026-05-19 19:13:26 +00:00
markjcrane 980a8d5b2d Add destinations playback option for recordings 2026-05-15 19:25:13 +00:00
FusionPBX a73bb34666 Fix provision write method to only write one device 2026-05-14 14:54:59 +00:00
frytimo d6f2ac28f5 Add call flows to feature codes (#7972)
* Add call flows to feature codes

* Refactor permission checks for feature codes
2026-05-13 14:37:57 +00:00
Mr. Sims 42185e804f Add Polycom CCX 500 provisioning template (#7963)
* Add Polycom CCX 500 provisioning template

Adds provisioning template for the Polycom (HP/Poly) CCX 500 desk phone
running OpenSIP UC Software 9.x.

Files:
- resources/templates/provision/polycom/ccx500/{$mac}.cfg
- resources/templates/provision/polycom/ccx500/{$mac}-directory.xml
- app/provision/resources/sql/postgresql/polycom_ccx500_codec_defaults.sql

Highlights:
- Standard FusionPBX feature-code softkeys (VMTransfer *99, Intercom *8,
  Pickup **) consistent with sibling polycom/vvx* templates
- Three Park softkeys (*5901-*5903) for one-touch blind transfer
- Codec preference variables (polycom_codec_g711a, polycom_codec_opus, etc.)
  with idempotent v_default_settings INSERTs providing sensible defaults
  (G711_A > G711_Mu > G722 preferred, others disabled until enabled by admin)
- feature.enhancedFeatureKeys.enabled=1, matching the rest of the polycom/*
  template family

Tested on 11 production CCX 500 devices running firmware 9.4.1.0508.

* Move CCX 500 codec defaults to polycom app_config.php

Per @markjcrane review: defaults should be added via the app_config.php
$apps[$x]['default_settings'] array pattern so they apply via
Advanced > Upgrade > Application Defaults, not a one-off SQL migration.

- Added 13 polycom_codec_* entries to app/polycom/app_config.php
- Removed app/provision/resources/sql/postgresql/polycom_ccx500_codec_defaults.sql
2026-05-13 14:23:05 +00:00
frytimo d4f7b30291 Fix pass by reference xml_cdr (#7970)
* Fix pass by reference xml_cdr

* Fix formatting of field_name assignment
2026-05-13 14:19:51 +00:00
frytimo 39c3dcfc55 Fix database maintenance function xml_cdr (#7969) 2026-05-13 14:03:42 +00:00
frytimo 7bf33e8668 Master-Branch-Fix freebsd dashboard items (#7967)
* Fix freebsd dashboard items

* Fix service total count
2026-05-12 19:15:41 +00:00
FusionPBX fa5ae89827 Fully detach from parent shell to prevent 'service' from blocking 2026-05-12 06:40:25 +00:00
FusionPBX ed241110ab Update the service path for FreeBSD 2026-05-12 04:57:37 +00:00
FusionPBX 7c371cea78 Rename the Debian services files 2026-05-12 03:51:32 +00:00
FusionPBX b68f5828b0 Add FreeBSD rc.d service files 2026-05-12 03:46:26 +00:00
frytimo 59f5bca0b9 Fix active_calls crash on reload (#7959)
* Fix active_calls crash on reload
2026-05-06 18:50:18 +00:00
FusionPBX 53956f53dd Add condition for forward_user_not_registered_destination is empty
Skip this dialplan when forward_user_not_registered_destination is empty.
2026-05-06 18:23:11 +00:00
FusionPBX 7f9d9aaf66 Change reload_settings method visibility to public 2026-05-06 15:06:19 +00:00
markjcrane 34a3ef1400 Change the protected to public for reload_settings
When waiting on a socket the call back needs to be accessible from anywhere
2026-05-05 15:43:02 -06:00
Antonio Fernandez cc32e04538 Remove colon from Ring Group Caller ID Prefix (#7956)
* Do not allow colon to be used since it breaks the CID name prefix
2026-05-05 18:31:59 +00:00
frytimo 2f2883ca8b Add video setting for yealink (#7954)
Available settings from template are: 0=Disabled, 1=Video first, 2=Optional
2026-05-05 16:33:13 +00:00
FusionPBX 678a008709 Remove class overflow for the domain column 2026-05-04 22:24:29 +00:00
frytimo 097af5d836 Fix missing first line of in-progress call and wrong state (#7948)
When the dashboard widget is first called, the first line of the active call response was ignored due to a promise dropped in the client. This fixes the dropped event.
The status is hard-coded to 'ringing' on the server-side to allow the client to pick up the event as a 'new' call. This patches the client to correct this and put the correct 'answered' status for an already in-progress call.
2026-05-04 16:58:43 +00:00
Alex 494664f598 Fix: Stop incrementing MWI Account when adding extensions (#7950)
- MWI Account is empty by default.
- When adding multiple extensions with the range, the MWI Account should be the same on all of them.
2026-05-04 16:57:34 +00:00
Alex a48ea3d945 Update added modules message (#7947) 2026-05-01 20:47:07 +00:00
markjcrane cf28698320 Add category and get_category method 2026-04-30 07:00:36 -06:00
markjcrane 50032436ac Add category and get_category method 2026-04-30 07:00:05 -06:00
markjcrane 116b705ab4 Add category and get_category method 2026-04-30 06:53:29 -06:00
markjcrane 479551604c Add category and get_category method 2026-04-30 06:53:21 -06:00
markjcrane 0047dba989 Add class property category 2026-04-30 02:20:38 -06:00
markjcrane ccbd957ac0 Add class property category 2026-04-30 02:17:34 -06:00
Mendel 368ad20227 Fix destination export to honor Show All across domains (#7936)
When SHOW ALL button has been pressed then export all destinations from all domains and add '_all' to the exported file name.
2026-04-29 23:35:30 +00:00
Alex 78777f0722 Fix: Remove domain_change from global diaplan urls (#7942) 2026-04-29 22:57:12 +00:00
markjcrane 848f4c9343 Remove git sub modules added by a pull request 2026-04-29 16:43:58 -06:00
frytimo 33d54b71cd Use better heuristics for drag-and-drop call park (#7939)
When an inbound call was dragged it caused the wrong leg to be put in park.
Added permissions for barge and whisper.
2026-04-29 20:38:09 +00:00
Alex 4cdb36109b Destinations: Preserve query string parameters across list and edit pages (#7930)
* Destinations: Preserve query string parameters across list and edit pages

* Update destination_edit.php
2026-04-29 16:22:28 +00:00
Alex 1e883d0e66 Dialplans: Preserve query string parameters across list and edit pages (#7934)
* Dialplans: Preserve query string parameters across list and edit pages

* Update dialplan_edit.php

* Update dialplan_xml.php

* Update dialplan_inbound_add.php
2026-04-29 16:21:49 +00:00
FusionPBX 48d0798bbe Add additional Yealink device vendors #7933 2026-04-29 16:18:14 +00:00
frytimo 8302c68678 Fix first line and app data of already in progress calls (#7931)
Also fixed application data not being read correctly from already in progress calls.
2026-04-28 20:48:45 +00:00
frytimo 66afefbb7d Fix PHPDoc types for on_topic method parameters and return value (#7924) 2026-04-28 15:27:32 +00:00
Alex bab249f057 Gateways: Preserve query string parameters across list and edit pages (#7923)
* Gateways: Preserve query string parameters across list and edit pages

* Update gateway_edit.php

* Update gateway_copy.php
2026-04-28 03:11:49 +00:00
Antonio Fernandez 04a9893130 Added Wait Announcements to Ring Groups (#7919) 2026-04-27 15:06:57 +00:00
Alex b946e5631d Devices: Preserve query string parameters across list and edit pages (#7920)
* Devices: Preserve query string parameters across list and edit pages

* Update device_edit.php

* Update device_copy.php
2026-04-25 21:18:42 +00:00
Alex 6cd23ac9e5 Extensions: Preserve query string parameters across list and edit pages (#7921)
* Extensions: Preserve query string parameters across list and edit pages

* Update extension_edit.php

* Update extension_copy.php
2026-04-25 21:18:24 +00:00
FusionPBX 99d40eb831 Replace the layout using tables with div tags and CSS Grid. 2026-04-25 20:21:04 +00:00
FusionPBX faa7e126fc Change the order to 160 2026-04-24 23:06:59 +00:00
FusionPBX 5e577f8e2b Unset identity for endpoints using UDP 2026-04-24 22:10:58 +00:00
FusionPBX c88265bd9d Add unset action for Identity header 2026-04-24 21:57:28 +00:00
Antonio Fernandez 7a7e820f29 Text to Speech: Speed-control (#7918)
* speed-control

* added additional languages
2026-04-24 18:20:46 +00:00
markjcrane 53d027c43e Add conference center required message
When trying to add a conference room and a conference center doesn't exist then show a message to the user that the conference center is required.
2026-04-24 12:04:58 -06:00
frytimo 28c2c90738 More operator panel fixes (#7917)
* Fix right-click options for unregistered extensions

* Show only "Call Voicemail" option

* Fix caller id number cut-off too early

* Fix drag-and-drop request rejected

* Always show "My Extensions"

* Fix showing caller id on unregistered called extension

* The voicemail icon and caller ID information now shows for a call routed to the unregistered extension.
Also, hide the intercept option if the caller is the current operator extension because the operator can't intercept their own call.

* Fix: extension has multiple call groups
2026-04-24 03:36:17 +00:00
FusionPBX 026f142b88 Update the code format 2026-04-23 18:04:09 +00:00
Alex fd4d2d6662 Access Controls: Preserve query string parameters across list and edit pages (#7911)
* Access Controls: Preserve query string parameters across list and edit pages

* Update access_controls_reload.php

* Update access_control_edit.php
2026-04-23 16:45:00 +00:00