Skip to content

NethVoice: FreePBX fails after disabling transfer callback #8308

Closed
nethesis/ns8-nethvoice
#1194

Description

@Stell0

Steps to reproduce

  1. In FreePBX, open Applications → Blind transfer callback (Return On Transfer).
  2. Set Enabled to No and save, leaving a valid timeout configured.
  3. Reload FreePBX, or upgrade/restart NethVoice with this configuration.

Expected behavior

FreePBX reloads and starts successfully. Blind-transfer callback remains disabled, and existing timeout, caller-name prefix and Alertinfo settings are preserved.

Actual behavior

fwconsole reload fails with Undefined array key "enabled" in Returnontransfer.class.php at line 85. During startup this prevents FreePBX from becoming ready, and systemd repeatedly restarts the service. The reported instance also had NethCTI server restarts; a direct causal link has not been verified.

The module saves the disabled state using setConfig('enabled', false). FreePBX interprets boolean false as deletion, so getAll() no longer contains the key. Installation initializes all settings only when timeout is absent, leaving this legacy disabled configuration unchanged. Dialplan generation and the settings form access the missing key without a default.

The deletion and reload-hook exception were reproduced locally with the bundled module and FreePBX 17.0.33.2 storage helper, using simulated database operations. The affected instance database and exact before/after application versions have not been inspected.

Components

NethVoice, bundled Return On Transfer module 1.2.0; repository framework pin FreePBX 17.0.33.2. Exact deployed NethVoice version was not supplied. Although initially reported as Recall On Busy, the failing code is in the separate Return On Transfer module.

Proposed correction

Persist disabled as 0 instead of deleting the setting. Accept a missing enabled key as legacy disabled state in dialplan generation and the settings form. Initialize missing settings independently, preserving existing values and the enabled-by-default behavior of genuinely fresh installations.

See also

Activity

  1. added this to the NethVoice 1.8 milestone on Nov 11, 2026
  2. added theissue type on Nov 11, 2026
  3. added
    nethvoiceBug or features releted to the NethVoice project
    on Nov 11, 2026
  4. moved this from Todo to In Progress in NethVoiceon Nov 11, 2026
  5. edospadoni commented on Nov 11, 2026

    @edospadoni
    Member

    Test

    PRs: nethesis/ns8-nethvoice#1194

    Setup: an instance on a release before this one (e.g. 1.8.1). In FreePBX, Applications → Blind transfer callback.

    Test Case 1 - Upgrade with the callback disabled

    • Before the update: set Enabled = No, change timeout, Caller ID and Alertinfo to custom values, Submit and Apply (on the old release the page or fwconsole reload may already fail with Undefined array key "enabled")
    • Update the module to this release: FreePBX starts, systemctl --user show freepbx -p NRestarts (as the module user) does not increase, fwconsole reload completes
    • The Blind transfer callback page opens with Enabled = No and the custom timeout, Caller ID and Alertinfo kept

    Test Case 2 - Save and reload

    • Set Enabled = No, Submit and Apply: no error, the page still shows No
    • Set Enabled = Yes, Submit and Apply: no error, the custom values are kept
    • Repeat No → Yes → No: Apply always succeeds

    Test Case 3 - Callback behavior

    Test Case 4 - Fresh installation

    • On a new instance the callback is Enabled = Yes with the default values (timeout 15, Caller ID RT: ${xfer_exten} ${CALLERID(name)})

    Testing release: 1.8.2-testing.2 (nethesis/ns8-nethvoice#1194, includes nethesis/ns8-nethvoice#1196 from 1.8.2-testing.1)

    ghcr.io/nethesis/nethvoice:1.8.2-testing.2
    

    Update command (replace nethvoiceX with the NethVoice instance):

    api-cli run update-module --data '{"module_url":"ghcr.io/nethesis/nethvoice:1.8.2-testing.2","instances":["nethvoiceX"],"force":true}'
    
  6. added
    testingPackages are available from testing repositories
    on Nov 11, 2026
  7. moved this from In Progress to Testing in NethVoiceon Nov 11, 2026
  8. removed their assignment
    on Nov 12, 2026
  9. removed
    testingPackages are available from testing repositories
    on Nov 12, 2026
  10. moved this from Testing to Verified in NethVoiceon Nov 12, 2026
  11. Stell0 commented on Nov 12, 2026

    @Stell0
    Author

    Release nethesis/ns8-nethvoice 1.8.2

  12. removed
    verifiedAll test cases were verified successfully
    on Nov 12, 2026
  13. moved this from Verified to Done in NethVoiceon Nov 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    nethvoiceBug or features releted to the NethVoice project

    Type

    Projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions