From 6bb30f822724a277d3bf2eed0647d995f965442e Mon Sep 17 00:00:00 2001 From: Jan-Henrik Bruhn Date: Sat, 18 Apr 2026 18:53:45 +0200 Subject: [PATCH] fix: write correct voicemail at all places --- modules/voip/asterisk/default.nix | 4 ++-- modules/voip/options.nix | 6 ++++++ modules/voip/provisioning/default.nix | 4 +++- modules/voip/provisioning/templates/cisco-8961.nix | 12 +++++++----- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/modules/voip/asterisk/default.nix b/modules/voip/asterisk/default.nix index 661d6b3..ddfe461 100644 --- a/modules/voip/asterisk/default.nix +++ b/modules/voip/asterisk/default.nix @@ -291,9 +291,9 @@ let "exten => ${ic.extension},1,Dial(PJSIP/${ic.endpoint},30)" ) intercomEntries - # Voicemail check (*97 — uses VOICEMAIL_MAILBOX set on the endpoint) + # Voicemail check — uses VOICEMAIL_MAILBOX set on the endpoint + lib.optionalString hasAnyMailbox - "\nexten => *97,1,VoiceMailMain(${av "VOICEMAIL_MAILBOX"}@voicemail,sa(0))" + "\nexten => ${cfg.voicemailCheckExtension},1,VoiceMailMain(${av "VOICEMAIL_MAILBOX"}@voicemail,sa(0))" # Shared mailbox direct check extension + lib.optionalString hasSharedMailbox "\nexten => ${cfg.sharedMailbox.checkExtension},1,VoiceMailMain(${cfg.sharedMailbox.mailboxId}@voicemail,sa(0))" diff --git a/modules/voip/options.nix b/modules/voip/options.nix index 644c08a..affded6 100644 --- a/modules/voip/options.nix +++ b/modules/voip/options.nix @@ -306,6 +306,12 @@ in { }); }; + voicemailCheckExtension = lib.mkOption { + type = lib.types.str; + default = "*97"; + description = "Extension dialled to check personal voicemail (via VoiceMailMain with VOICEMAIL_MAILBOX)."; + }; + extensions = lib.mkOption { default = {}; description = '' diff --git a/modules/voip/provisioning/default.nix b/modules/voip/provisioning/default.nix index ba502dc..fa80dff 100644 --- a/modules/voip/provisioning/default.nix +++ b/modules/voip/provisioning/default.nix @@ -51,13 +51,15 @@ pkgs.linkFarm "voip-tftp-root" ( files = t.mkFiles ({ mac = key; - inherit (phone) label password displayName; + inherit (phone) label password displayName extension; inherit blfPersons; serverAddress = cfg.serverAddress; ntpServer = cfg.ntpServer; sipPort = cfg.sipPort; directoryPort = cfg.directoryPort; inherit allExtensions allStarExtensions hasTrunk hasIntercomButton pageExtension intercomLineIndex; + voicemailCheckExtension = cfg.voicemailCheckExtension; + familyLineCheckExtension = if cfg.sharedMailbox != null then cfg.sharedMailbox.checkExtension else cfg.voicemailCheckExtension; } // lib.optionalAttrs (cfg.intercomPrefix != null) { intercomEnabled = true; intercomPassword = phone.password; diff --git a/modules/voip/provisioning/templates/cisco-8961.nix b/modules/voip/provisioning/templates/cisco-8961.nix index 29d2cf0..a107d5e 100644 --- a/modules/voip/provisioning/templates/cisco-8961.nix +++ b/modules/voip/provisioning/templates/cisco-8961.nix @@ -9,7 +9,7 @@ in { # Return a list of { name, content } provisioning files for this phone. # provisioning/default.nix wraps each with pkgs.writeText for the linkFarm. mkFiles = - { mac, label, displayName, password, serverAddress, ntpServer + { mac, label, displayName, extension, password, serverAddress, ntpServer , sipPort ? 5060 , directoryPort ? 8080 , familyLineEnabled ? false @@ -23,7 +23,9 @@ in { , hasTrunk ? false , hasIntercomButton ? false , pageExtension ? null - , blfPersons ? [] + , blfPersons ? [] + , voicemailCheckExtension ? "*97" + , familyLineCheckExtension ? "*97" }: let # Line button assignments: @@ -111,7 +113,7 @@ in { 9 - ${displayName} + ${displayName} · ${extension} USECALLMANAGER ${toString sipPort} ${mac} @@ -123,7 +125,7 @@ in { ${mac} ${password} 1 - *97 + ${voicemailCheckExtension} ${mac} true @@ -147,7 +149,7 @@ in { ${mac}-l2 ${familyLinePassword} 3 - *97 + ${familyLineCheckExtension} ${mac}-l2 true