Repository navigation
NethVoice: Announcement without recording breaks Visualplan #8280
Copy link
Copy link
Labels
nethvoiceBug or features releted to the NethVoice projectBug or features releted to the NethVoice projecttestingPackages are available from testing repositoriesPackages are available from testing repositories
Milestone
Description
Steps to reproduce
- Create an announcement without a recording.
- Set an inbound route to use this announcement.
- Open the route in Visualplan.
Expected behavior
Show the route. Mark the announcement as an error. Keep the other blocks and available connections visible.
Actual behavior
An announcement without a recording broke Visualplan. The route could not be displayed.
Components
NethVoice: FreePBX Visualplan.
Test cases
- Recordings: Test announcements, voice menus (IVR), and customer queries with valid, unset, and deleted recordings. Announcements without a valid recording must be red. Optional unset recordings must show “No recording”; deleted recordings must show an error. Keep downstream blocks and other branches visible. Check messages in English and Italian.
- Block failures: For each block type, simulate a list, detail, or display failure: inbound route, extension, voicemail, conference, hangup, announcement, day/night control, time condition, voice menu, customer query, queue, and ring group. Check route loading, palette loading, and child expansion. Mark affected blocks red. Keep available connections and healthy branches. Include failed recording and time-group lists. Do not expose exception details.
- Save protection: Select a red block. Modification must be disabled; deletion must remain available. Save must show an error. A direct save request with an error block must return HTTP 422 and change no settings. Correct or remove the error, then save successfully.
- Duplicate checks: Make a block list or available control-code lookup fail. Also return a partial list. Creation must stop, show an error, and clear the loading indicator. Retry with valid data: reject an existing identifier and accept an unused identifier.
- Source refresh: After palette selection, change the source destination, then expand its children. Use the current destination. Repeat with a source lookup failure or incomplete day/night data. Show a red source block, keep available connections, and prevent saving.
- Healthy routes: Open, expand, save, and reload a route with all supported block types, multiple branches, and a cycle. Check connections and detail links. A malformed destination must not prevent other branches from loading.
See also
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
nethvoiceBug or features releted to the NethVoice projectBug or features releted to the NethVoice projecttestingPackages are available from testing repositoriesPackages are available from testing repositories
Type
Projects
- StatusShow more project fieldsTesting
Activity
edospadoni commentedon Oct 28, 2026
Test
PR: nethesis/ns8-nethvoice#1110
Setup: a NethVoice instance with at least one inbound route. Visualplan is at
https://<nethvoice host>/freepbx/visualplan/?did=<route>(FreePBX admin > Visualplan). Prepare: an announcement with a valid recording, an announcement with no recording, an IVR and a customer query (CQR) with and without an announcement, a time condition, a day/night control, a ring group, a queue and a conference reachable from the same route. For the "deleted" cases, delete the recording (or the destination object) from FreePBX after the route has been saved. Quick way to corrupt a day/night control:DELETE FROM daynight WHERE ext='<n>' AND dmode='night'on theasteriskdatabase (restore it afterwards from the day/night page). Visualplan errors are logged asVisualplan: failed to load ...in the freepbx container log.Test Case 1 - Recordings
Test Case 2 - Block failures and stale destinations
nightrow: red block, the readable day flow and its connection are still drawnvisualize.phpTest Case 3 - Save protection
create.phpwith a block havinguserData.visualplanError = truereturns HTTP 422 and changes no PBX settingsTest Case 4 - Duplicate checks
Test Case 5 - Source refresh after palette selection
Test Case 6 - Healthy routes and regression
ivr-without id) shows that block as red and the other branches loadTesting release: 1.8.0-testing.62 (nethesis/ns8-nethvoice#1110)
Update command (replace
nethvoiceXwith the NethVoice instance):