fix(ivr): resolve dialplan conflict on *801-*899 and link debian sound prompts (v1.4.8)
This commit is contained in:
1 parent
1e288af617
commit
8f4ea50452
8 files changed
+55
-20
No files matched your search
+7
-11
@@ -571,10 +571,6 @@ class ConfigGenerator
|
||||
$lines[] = " same => n,Hangup()";
|
||||
}
|
||||
if ($groupCode !== '') {
|
||||
$lines[] = "exten => _{$groupCode}.,1,NoOp(Interception d'appel dirigee vers \${EXTEN:" . strlen($groupCode) . "})";
|
||||
$lines[] = " same => n,Pickup(\${EXTEN:" . strlen($groupCode) . "}@from-internal)";
|
||||
$lines[] = " same => n,Hangup()";
|
||||
|
||||
$lines[] = "exten => {$groupCode},1,NoOp(Interception d'appel de groupe)";
|
||||
$lines[] = " same => n,Pickup()";
|
||||
$lines[] = " same => n,Hangup()";
|
||||
@@ -986,9 +982,10 @@ class ConfigGenerator
|
||||
$lines[] = "";
|
||||
}
|
||||
|
||||
// Interphonie directe 1-à-1 (*80 + numéro de poste)
|
||||
// Interphonie directe 1-à-1 (*80 + numéro de poste, ex: *80101 pour le poste 101)
|
||||
// Pattern _*80XX. pour ne cibler que les numéros de postes (au moins 2 chiffres) et ne pas chevaucher *801
|
||||
$lines[] = "; --- Interphonie directe 1-à-1 (*80 + numéro de poste) ---";
|
||||
$lines[] = "exten => _*80.,1,NoOp(Interphonie directe vers poste \${EXTEN:3})";
|
||||
$lines[] = "exten => _*80XX.,1,NoOp(Interphonie directe vers poste \${EXTEN:3})";
|
||||
$lines[] = " same => n,Set(CHANNEL(language)={$sysLang})";
|
||||
$lines[] = " same => n,Answer()";
|
||||
$lines[] = " same => n,Playback(beep)";
|
||||
@@ -997,13 +994,14 @@ class ConfigGenerator
|
||||
$lines[] = "";
|
||||
}
|
||||
|
||||
// Accès direct aux IVR depuis l'interne via *8 + id
|
||||
// Accès direct aux IVR depuis l'interne via *8 + id (*801, *802...)
|
||||
if (!empty($ivrs)) {
|
||||
$lines[] = "; --- Test direct des SVI/IVR depuis l'interne ---";
|
||||
$lines[] = "; --- Test direct des SVI/IVR depuis l'interne (*801, *802...) ---";
|
||||
foreach ($ivrs as $ivr) {
|
||||
$ivrSlug = $this->slugify($ivr['name']);
|
||||
$testCode = '*8' . str_pad((string)$ivr['id'], 2, '0', STR_PAD_LEFT);
|
||||
$lines[] = "exten => {$testCode},1,NoOp(Test SVI {$ivr['name']})";
|
||||
$lines[] = " same => n,Set(CHANNEL(language)={$sysLang})";
|
||||
$lines[] = " same => n,Goto(ivr-{$ivrSlug},s,1)";
|
||||
}
|
||||
$lines[] = "";
|
||||
@@ -1500,6 +1498,7 @@ class ConfigGenerator
|
||||
$lines[] = "; --- Serveur Vocal Interactif : {$ivr['name']} ---";
|
||||
$lines[] = "[ivr-{$ivrSlug}]";
|
||||
$lines[] = "exten => s,1,NoOp(SVI {$ivr['name']})";
|
||||
$lines[] = " same => n,Set(CHANNEL(language)={$sysLang})";
|
||||
$lines[] = " same => n,Answer()";
|
||||
$lines[] = " same => n,Wait(1)";
|
||||
$lines[] = " same => n,Set(IVR_INVALID_COUNT=0)";
|
||||
@@ -1600,9 +1599,6 @@ class ConfigGenerator
|
||||
return implode("\n", $lines) . "\n";
|
||||
}
|
||||
|
||||
/**
|
||||
* Sauvegarde les anciens fichiers et écrit atomiquement pjsip.custom.conf et extensions.custom.conf
|
||||
* avec les droits Debian asterisk:asterisk (0660).
|
||||
/**
|
||||
* Génère les classes Musique d'attente (MOH) personnalisées par site/catégorie
|
||||
*/
|
||||
|
||||
@@ -225,6 +225,21 @@ class SystemChecker
|
||||
|
||||
@mkdir('/var/spool/asterisk/voicemail/default', 0775, true);
|
||||
|
||||
// Liens vers les répertoires de sons Debian (/usr/share/asterisk/sounds -> /var/lib/asterisk/sounds)
|
||||
@mkdir('/var/lib/asterisk/sounds', 0775, true);
|
||||
@mkdir('/var/lib/asterisk/sounds/custom', 0775, true);
|
||||
@mkdir('/var/lib/asterisk/moh', 0775, true);
|
||||
foreach (['fr', 'en', 'es'] as $lang) {
|
||||
$src = "/usr/share/asterisk/sounds/{$lang}";
|
||||
$dst = "/var/lib/asterisk/sounds/{$lang}";
|
||||
if (is_dir($src) && !file_exists($dst)) {
|
||||
@symlink($src, $dst);
|
||||
}
|
||||
}
|
||||
if (!file_exists('/usr/share/asterisk/sounds/custom')) {
|
||||
@symlink('/var/lib/asterisk/sounds/custom', '/usr/share/asterisk/sounds/custom');
|
||||
}
|
||||
|
||||
// Synchroniser manager.conf avec le mot de passe AMI de la base SQLite si nécessaire (ex: après restauration de backup)
|
||||
$mgrConf = '/etc/asterisk/manager.conf';
|
||||
if (is_file($mgrConf) && is_writable($mgrConf)) {
|
||||
|
||||
Reference in new issue
Block a user