12769 Commits

Author SHA1 Message Date
Alex 17a56bcc64 Fix dynamic destination select list edit button link (#8008)
For call centers, it tries to go to call_center_edit.php but needs to be call_center_queue_edit.php.
2026-05-29 21:23:12 +00:00
Alex e90f0f6c0a Add onchange event to device profile key type select (#8005) 2026-05-28 22:12:37 +00:00
Alex e6a2c99352 Devices: Add vendor-based filtering for device key types (#8004) 2026-05-28 22:12:17 +00:00
FusionPBX 5d77c517d7 Update the voicemail prompt
Replace true/false with a toggle
Adjust the textarea height and width
2026-05-28 14:55:19 -06:00
Alex 0c86610b98 Remove query string from add button link (#8003)
* Remove query string from add button link

* Update bridges.php

* Update conference_centers.php

* Update conference_rooms.php

* Update conference_controls.php

* Update conference_profile_params.php

* Update conference_profiles.php

* Update conferences.php

* Update event_guard_logs.php

* Update fax.php

* Update fifo.php

* Update ivr_menus.php

* Update phrases.php

* Update recordings.php

* Update ring_groups.php

* Update streams.php

* Update time_conditions.php

* Update voicemails.php

* Update contacts.php
2026-05-28 19:56:47 +00:00
Alex b960e19d1b Update call_flows.php 2026-05-28 19:39:57 +00:00
Alex 19aa5e1a32 Update call_center_queues.php 2026-05-28 19:39:37 +00:00
Alex ea0fdd2518 Update call_broadcast.php 2026-05-28 19:38:58 +00:00
Alex 232fe6ccff Ring Group Edit: Add text to speech option in greet and wait announcement (#8001)
* Ring Group Edit: Add text to speech option in greet and wait announcement

* Update ring_group_edit.php
2026-05-28 16:17:29 +00:00
Alex 2186fb939d IVR Menu Edit: Refactor text-to-speech code (#8000) 2026-05-28 16:16:31 +00:00
FusionPBX ec0751ce84 Enable the new Operator Panel by default. Leave the original operator panel just not assigned to a group by default. 2026-05-28 00:25:28 -06:00
Alex 66769d42af Device Profiles: Add vendor-based filtering for device key types (#7997) 2026-05-27 21:54:40 +00:00
FusionPBX a1845123fe Fix the switch script copy from app sub directory 2026-05-27 15:22:30 -06:00
Alex a1a745dc7f Add document title to call details (#7996) 2026-05-27 18:57:21 +00:00
Alex f0ad45ee5c Format call flow summary timestamps (#7995) 2026-05-27 18:50:47 +00:00
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