Compare commits

...
3 Commits
2 changed files with 9 additions and 17 deletions

No files matched your search

+6 -16
View File
@@ -295,7 +295,7 @@ class ConfigGenerator
} }
$context = trim((string)($trunk['context'] ?? 'from-external')) ?: 'from-external'; $context = trim((string)($trunk['context'] ?? 'from-external')) ?: 'from-external';
$fromUser = trim((string)($trunk['from_user'] ?? '')) ?: $username; $fromUser = trim((string)($trunk['from_user'] ?? ''));
$fromDomain = trim((string)($trunk['from_domain'] ?? '')) ?: $host; $fromDomain = trim((string)($trunk['from_domain'] ?? '')) ?: $host;
$callerId = trim((string)($trunk['outbound_callerid'] ?? '')); $callerId = trim((string)($trunk['outbound_callerid'] ?? ''));
$sendPai = ((int)($trunk['send_pai'] ?? 1) === 1) ? 'yes' : 'no'; $sendPai = ((int)($trunk['send_pai'] ?? 1) === 1) ? 'yes' : 'no';
@@ -354,20 +354,10 @@ class ConfigGenerator
if ($outboundProxy !== '') { if ($outboundProxy !== '') {
$lines[] = "outbound_proxy = {$outboundProxy}"; $lines[] = "outbound_proxy = {$outboundProxy}";
} }
if ($callerId !== '') { // Note : Ne JAMAIS positionner la directive "callerid" dans la section endpoint d'un Trunk PJSIP.
if (preg_match('/^(?:\"?([^\"<>]+?)\"?\s*)?<([^>]+)>$/u', $callerId, $cm)) { // Dans Asterisk, "callerid" sur un endpoint sert de valeur par défaut pour les appels ENTRANTS,
$cName = trim($cm[1] ?? ''); // ce qui écraserait le numéro de l'appelant externe (ex: mobile 06...).
$cNum = trim($cm[2] ?? ''); // Le CallerID sortant du Trunk (outbound_callerid) est appliqué uniquement dans le Dialplan sortant.
if ($cName !== '') {
$cNameClean = str_replace('"', '', $cName);
$lines[] = "callerid = \"{$cNameClean}\" <{$cNum}>";
} else {
$lines[] = "callerid = <{$cNum}>";
}
} else {
$lines[] = "callerid = {$callerId}";
}
}
$lines[] = "disallow = all"; $lines[] = "disallow = all";
foreach ($codecs as $codec) { foreach ($codecs as $codec) {
$lines[] = "allow = {$codec}"; $lines[] = "allow = {$codec}";
@@ -1187,7 +1177,7 @@ class ConfigGenerator
$tSlug = $tObj ? $this->slugify($tObj['name']) : $this->slugify($tKey); $tSlug = $tObj ? $this->slugify($tObj['name']) : $this->slugify($tKey);
$tFallbackCid = $tObj ? trim((string)($tObj['outbound_callerid'] ?? '')) : ''; $tFallbackCid = $tObj ? trim((string)($tObj['outbound_callerid'] ?? '')) : '';
if ($rCid === '' && $tFallbackCid !== '' && $overrideCid) { if ($rCid === '' && $tFallbackCid !== '') {
foreach ($this->buildCallerIdDialplan($tFallbackCid) as $cidStmt) { foreach ($this->buildCallerIdDialplan($tFallbackCid) as $cidStmt) {
$sub[] = $cidStmt; $sub[] = $cidStmt;
} }
+3 -1
View File
@@ -1,9 +1,11 @@
{ {
"version": "1.6.3", "version": "1.6.5",
"codename": "Helios", "codename": "Helios",
"release_date": "2026-11-05", "release_date": "2026-11-05",
"min_php_version": "8.2", "min_php_version": "8.2",
"changelog": [ "changelog": [
"Trunks SIP : dissociation stricte du CallerID sortant du Trunk (suppression de callerid dans l'endpoint PJSIP pour préserver l'affichage du numéro appelant réel sur les appels entrants)",
"Trunks SIP : suppression du forçage de from_user afin de préserver l'en-tête SIP From dynamique avec Nom d'appelant (CNAM) pour OVH / Orange",
"Trunks SIP & Routage Sortant : activation systématique de trust_id_outbound et formatage strict du Caller ID Name (CNAM) pour affichage garanti chez les opérateurs distants (OVH, Orange, etc.)", "Trunks SIP & Routage Sortant : activation systématique de trust_id_outbound et formatage strict du Caller ID Name (CNAM) pour affichage garanti chez les opérateurs distants (OVH, Orange, etc.)",
"Sauvegarde & Restauration : versionnage dynamique automatique basé sur la version installée (résolution du tag figé v1.2.0)", "Sauvegarde & Restauration : versionnage dynamique automatique basé sur la version installée (résolution du tag figé v1.2.0)",
"Mises à jour système OTA : déclenchement garanti d'une sauvegarde Disaster Recovery complète pré-mise à jour (visible et restaurable dans l'interface)", "Mises à jour système OTA : déclenchement garanti d'une sauvegarde Disaster Recovery complète pré-mise à jour (visible et restaurable dans l'interface)",