Commit Graph

12754 Commits

Author SHA1 Message Date
Alex e1f6bf795e IVR Menu Edit: Add text to speech option for new greetings (#7994)
* IVR Menu Edit: Add text to speech option for new greetings

* Update app_languages.php
2026-05-26 22:18:16 +00:00
FusionPBX 4d34454d14 Fix a syntax error 2026-05-26 11:55:28 -06:00
Gobi Yogarajah 02f634bbde Fix IPv6 SIP URI corruption in follow_me enterprise originate parsing (#7989)
Preserve IPv6 address brackets while converting enterprise originate variable blocks from [] to {}.

Previously all square brackets were globally rewritten, which corrupted valid IPv6 SIP URIs such as:

sip:user@[2001:db8::1]:5061

into invalid Sofia destinations:

sip:user@{2001:db8::1}:5061

causing HANDLE creation failures and DESTINATION_OUT_OF_ORDER errors for IPv6 endpoints.

This change keeps enterprise bridge delay/originate behavior intact while safely excluding IPv6 host literals from bracket conversion.
2026-05-25 22:05:20 +00:00
Antonio Fernandez 1b225840c4 Add support for custom transcription prompts in voicemail processing (#7908) 2026-05-25 14:45:02 +00:00
FusionPBX 1f680c90de Allow sending text based email templates 2026-05-22 20:22:54 +00:00
frytimo afceedd4cf Add a select list for the dialpad (#7983)
The old basic operator panel had a select list that would popup if a name was typed in the dialpad input box. This adds the select list to the new operator panel to allow the same functionality. This feature does not use the websocket connection.
2026-05-22 19:56:21 +00:00
9cb14c1ec0 d71009c908 Fix music on hold upload, delete, and file display bugs (#7981)
- Reset $stream_files between loop iterations so files from a previous
  category no longer carry over to the next when its directory is missing
- Guard scandir() return value before passing to count() to prevent
  TypeError on PHP 8+ when the directory does not exist
- Show an error message when mkdir fails during upload (e.g. read-only
  filesystem due to systemd ProtectSystem)
2026-05-21 19:59:09 +00:00
FusionPBX b2fa27e532 Fix registration to IP address requires to-host 2026-05-21 16:38:34 +00:00
FusionPBX 37e7a745be Update comments for event_guard_service 2026-05-20 19:05:38 +00:00
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