Parent: #7570
Preserve this NethVoice behavior while using the unmodified upstream FreePBX Core module. The upgrade checkout installs Core 17.0.18.54. The old nethesis_nv8 fork is based on Core 16.0.68.40; comparing it with the matching upstream 16 release isolates the Nethesis changes from unrelated upstream updates. The obsolete Flexisip transport change is excluded from this migration.
Problem and original purpose
When an extension forwards a call to an external destination, the fork sets inherited REALCALLERIDNUM to the forwarding extension if the destination is not a PBX user. This supplies that extension's identity to subsequent outbound caller-ID processing; it does not directly set the final presented caller ID. NethVoice later excludes voicemail destinations beginning with vm.
Original change: 77ac604b in nethesis/freepbx-core, with a PHP namespace correction in b8902cfd.
Upstream assessment
Core 17.0.18.54 has no equivalent identity instruction in macro-dial-one,cf. The local nethcti3_get_config_late() currently replaces priority 2. In the fork, that priority held the added identity instruction; in upstream, it holds the forwarding-loop check. The current replacement therefore removes upstream's loop check. This replacement was reproduced with FreePBX's PHP dialplan builder; live call validation remains required.
Implementation plan
- Change the late NethVoice hook to insert the identity instruction after
CFAMPUSER is set, rather than replacing upstream priority 2.
- Preserve upstream's forwarding-loop check and subsequent forwarding instructions.
- Explicitly resolve the forwarding destination instead of relying on the implicit
DB_RESULT value.
- Retain the NethVoice exclusion for voicemail destinations and preserve existing trunk caller-ID policies.
- Guard the insertion against unexpected upstream dialplan changes and verify the generated instruction order.
- Leave Core source files unchanged.
Acceptance criteria
References
Affected integration: freepbx/var/www/html/freepbx/admin/modules/nethcti3/functions.inc.php, in nethcti3_get_config_late().
Parent: #7570
Preserve this NethVoice behavior while using the unmodified upstream FreePBX Core module. The upgrade checkout installs Core 17.0.18.54. The old
nethesis_nv8fork is based on Core 16.0.68.40; comparing it with the matching upstream 16 release isolates the Nethesis changes from unrelated upstream updates. The obsolete Flexisip transport change is excluded from this migration.Problem and original purpose
When an extension forwards a call to an external destination, the fork sets inherited
REALCALLERIDNUMto the forwarding extension if the destination is not a PBX user. This supplies that extension's identity to subsequent outbound caller-ID processing; it does not directly set the final presented caller ID. NethVoice later excludes voicemail destinations beginning withvm.Original change:
77ac604bin nethesis/freepbx-core, with a PHP namespace correction inb8902cfd.Upstream assessment
Core 17.0.18.54 has no equivalent identity instruction in
macro-dial-one,cf. The localnethcti3_get_config_late()currently replaces priority 2. In the fork, that priority held the added identity instruction; in upstream, it holds the forwarding-loop check. The current replacement therefore removes upstream's loop check. This replacement was reproduced with FreePBX's PHP dialplan builder; live call validation remains required.Implementation plan
CFAMPUSERis set, rather than replacing upstream priority 2.DB_RESULTvalue.Acceptance criteria
cfdialplan contains both the NethVoice identity instruction and upstream's forwarding-loop check in the intended order.References
Affected integration:
freepbx/var/www/html/freepbx/admin/modules/nethcti3/functions.inc.php, innethcti3_get_config_late().