fix: use 8961 for 9971 template
This commit is contained in:
parent
d2e7fe827f
commit
af8cd3c4ca
1 changed files with 1 additions and 285 deletions
|
|
@ -1,285 +1 @@
|
||||||
{ lib }:
|
import ./cisco-8961.nix
|
||||||
|
|
||||||
let
|
|
||||||
cisco = import ./cisco-base.nix { inherit lib; };
|
|
||||||
in {
|
|
||||||
desktopSize = "640x480x24";
|
|
||||||
thumbnailSize = "123x111";
|
|
||||||
|
|
||||||
# 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
|
|
||||||
, sipPort ? 5060
|
|
||||||
, directoryPort ? 8080
|
|
||||||
, familyLineEnabled ? false
|
|
||||||
, familyLineLabel ? "Familie"
|
|
||||||
, familyLinePassword ? ""
|
|
||||||
, intercomEnabled ? false
|
|
||||||
, intercomPassword ? ""
|
|
||||||
, intercomLineIndex ? 2
|
|
||||||
, allExtensions ? []
|
|
||||||
, allStarExtensions ? []
|
|
||||||
, hasTrunk ? false
|
|
||||||
, hasIntercomButton ? false
|
|
||||||
, pageExtension ? null
|
|
||||||
, blfPersons ? []
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
# Line button assignments:
|
|
||||||
# button 1 / lineIndex 1 — personal/location L1 line (always present)
|
|
||||||
# button 2 / lineIndex 2 — family L2 line (when familyLineEnabled)
|
|
||||||
# button N / lineIndex N — intercom (when intercomEnabled; N = 2 or 3)
|
|
||||||
intercomButton = if familyLineEnabled then 3 else 2;
|
|
||||||
firstBlfButton = 1 + (if familyLineEnabled then 1 else 0) + (if intercomEnabled then 1 else 0) + 1;
|
|
||||||
|
|
||||||
dialplanFile = cisco.dialplanFilename mac;
|
|
||||||
|
|
||||||
configXml = ''
|
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<device>
|
|
||||||
<deviceProtocol>SIP</deviceProtocol>
|
|
||||||
<sshUserId>admin</sshUserId>
|
|
||||||
<sshPassword>password</sshPassword>
|
|
||||||
<devicePool>
|
|
||||||
<dateTimeSetting>
|
|
||||||
<dateTemplate>D.M.YA</dateTemplate>
|
|
||||||
<timeZone>Central Europe Standard/Daylight Time</timeZone>
|
|
||||||
<ntps>
|
|
||||||
<ntp>
|
|
||||||
<name>${ntpServer}</name>
|
|
||||||
</ntp>
|
|
||||||
</ntps>
|
|
||||||
</dateTimeSetting>
|
|
||||||
<callManagerGroup>
|
|
||||||
<members>
|
|
||||||
<member priority="0">
|
|
||||||
<callManager>
|
|
||||||
<ports>
|
|
||||||
<sipPort>${toString sipPort}</sipPort>
|
|
||||||
</ports>
|
|
||||||
<processNodeName>${serverAddress}</processNodeName>
|
|
||||||
</callManager>
|
|
||||||
</member>
|
|
||||||
</members>
|
|
||||||
</callManagerGroup>
|
|
||||||
</devicePool>
|
|
||||||
<sipProfile>
|
|
||||||
<sipProxies>
|
|
||||||
<backupProxy></backupProxy>
|
|
||||||
<backupProxyPort>5060</backupProxyPort>
|
|
||||||
<emergencyProxy></emergencyProxy>
|
|
||||||
<emergencyProxyPort></emergencyProxyPort>
|
|
||||||
<outboundProxy></outboundProxy>
|
|
||||||
<outboundProxyPort></outboundProxyPort>
|
|
||||||
<registerWithProxy>true</registerWithProxy>
|
|
||||||
</sipProxies>
|
|
||||||
<sipCallFeatures>
|
|
||||||
<cnfJoinEnabled>true</cnfJoinEnabled>
|
|
||||||
<callForwardURI>x-serviceuri-cfwdall</callForwardURI>
|
|
||||||
<callPickupURI>x-cisco-serviceuri-pickup</callPickupURI>
|
|
||||||
<callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI>
|
|
||||||
<callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI>
|
|
||||||
<meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI>
|
|
||||||
<abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI>
|
|
||||||
<callHoldRingback>2</callHoldRingback>
|
|
||||||
<anonymousCallBlock>2</anonymousCallBlock>
|
|
||||||
<callerIdBlocking>2</callerIdBlocking>
|
|
||||||
<dndControl>0</dndControl>
|
|
||||||
<remoteCcEnable>true</remoteCcEnable>
|
|
||||||
</sipCallFeatures>
|
|
||||||
<sipStack>
|
|
||||||
<sipInviteRetx>6</sipInviteRetx>
|
|
||||||
<sipRetx>10</sipRetx>
|
|
||||||
<timerInviteExpires>180</timerInviteExpires>
|
|
||||||
<timerRegisterExpires>3600</timerRegisterExpires>
|
|
||||||
<timerRegisterDelta>5</timerRegisterDelta>
|
|
||||||
<timerKeepAliveExpires>120</timerKeepAliveExpires>
|
|
||||||
<timerSubscribeExpires>120</timerSubscribeExpires>
|
|
||||||
<timerSubscribeDelta>5</timerSubscribeDelta>
|
|
||||||
<timerT1>500</timerT1>
|
|
||||||
<timerT2>4000</timerT2>
|
|
||||||
<maxRedirects>70</maxRedirects>
|
|
||||||
<remotePartyID>false</remotePartyID>
|
|
||||||
<userInfo>None</userInfo>
|
|
||||||
</sipStack>
|
|
||||||
<transferOnhookEnabled>false</transferOnhookEnabled>
|
|
||||||
<kpml>3</kpml>
|
|
||||||
<phoneLabel>${(builtins.substring 0 12 label)}</phoneLabel>
|
|
||||||
<stutterMsgWaiting>1</stutterMsgWaiting>
|
|
||||||
<callStats>false</callStats>
|
|
||||||
<sipLines>
|
|
||||||
<line button="1" lineIndex="1">
|
|
||||||
<featureID>9</featureID>
|
|
||||||
<featureLabel>${displayName}</featureLabel>
|
|
||||||
<proxy>USECALLMANAGER</proxy>
|
|
||||||
<port>${toString sipPort}</port>
|
|
||||||
<name>${mac}</name>
|
|
||||||
<displayName>${displayName}</displayName>
|
|
||||||
<autoAnswer>
|
|
||||||
<autoAnswerEnabled>2</autoAnswerEnabled>
|
|
||||||
</autoAnswer>
|
|
||||||
<callWaiting>3</callWaiting>
|
|
||||||
<authName>${mac}</authName>
|
|
||||||
<authPassword>${password}</authPassword>
|
|
||||||
<messageWaitingLampPolicy>1</messageWaitingLampPolicy>
|
|
||||||
<messagesNumber>*97</messagesNumber>
|
|
||||||
<contact>${mac}</contact>
|
|
||||||
<forwardCallInfoDisplay>
|
|
||||||
<callerName>true</callerName>
|
|
||||||
<callerNumber>true</callerNumber>
|
|
||||||
<redirectedNumber>true</redirectedNumber>
|
|
||||||
<dialedNumber>true</dialedNumber>
|
|
||||||
</forwardCallInfoDisplay>
|
|
||||||
</line>
|
|
||||||
${if familyLineEnabled then ''
|
|
||||||
<line button="2" lineIndex="2">
|
|
||||||
<featureID>9</featureID>
|
|
||||||
<featureLabel>${familyLineLabel}</featureLabel>
|
|
||||||
<proxy>USECALLMANAGER</proxy>
|
|
||||||
<port>${toString sipPort}</port>
|
|
||||||
<name>${mac}-l2</name>
|
|
||||||
<displayName>${familyLineLabel}</displayName>
|
|
||||||
<autoAnswer>
|
|
||||||
<autoAnswerEnabled>2</autoAnswerEnabled>
|
|
||||||
</autoAnswer>
|
|
||||||
<callWaiting>3</callWaiting>
|
|
||||||
<authName>${mac}-l2</authName>
|
|
||||||
<authPassword>${familyLinePassword}</authPassword>
|
|
||||||
<messageWaitingLampPolicy>3</messageWaitingLampPolicy>
|
|
||||||
<messagesNumber>*97</messagesNumber>
|
|
||||||
<contact>${mac}-l2</contact>
|
|
||||||
<forwardCallInfoDisplay>
|
|
||||||
<callerName>true</callerName>
|
|
||||||
<callerNumber>true</callerNumber>
|
|
||||||
<redirectedNumber>true</redirectedNumber>
|
|
||||||
<dialedNumber>true</dialedNumber>
|
|
||||||
</forwardCallInfoDisplay>
|
|
||||||
</line>
|
|
||||||
'' else ""}${if intercomEnabled then ''
|
|
||||||
<line button="${toString intercomButton}" lineIndex="${toString intercomButton}">
|
|
||||||
<featureID>23</featureID>
|
|
||||||
<featureLabel>Intercom</featureLabel>
|
|
||||||
<proxy>USECALLMANAGER</proxy>
|
|
||||||
<port>${toString sipPort}</port>
|
|
||||||
<name>${mac}-intercom</name>
|
|
||||||
<displayName>Intercom</displayName>
|
|
||||||
<autoAnswer>
|
|
||||||
<autoAnswerEnabled>3</autoAnswerEnabled>
|
|
||||||
<autoAnswerMode>Auto Answer with Speakerphone</autoAnswerMode>
|
|
||||||
</autoAnswer>
|
|
||||||
<callWaiting>3</callWaiting>
|
|
||||||
<authName>${mac}-intercom</authName>
|
|
||||||
<authPassword>${intercomPassword}</authPassword>
|
|
||||||
<maxNumCalls>1</maxNumCalls>
|
|
||||||
<busyTrigger>1</busyTrigger>
|
|
||||||
<contact>${mac}-intercom</contact>
|
|
||||||
</line>
|
|
||||||
'' else ""}${lib.concatImapStrings (i: p: ''
|
|
||||||
<line button="${toString (firstBlfButton + i - 1)}">
|
|
||||||
<featureID>21</featureID>
|
|
||||||
<featureLabel>${p.displayName}</featureLabel>
|
|
||||||
<featureOptionMask>1</featureOptionMask>
|
|
||||||
<speedDialNumber>${p.extension}</speedDialNumber>
|
|
||||||
</line>
|
|
||||||
'') blfPersons} </sipLines>
|
|
||||||
<voipControlPort>${toString sipPort}</voipControlPort>
|
|
||||||
<startMediaPort>16348</startMediaPort>
|
|
||||||
<stopMediaPort>20134</stopMediaPort>
|
|
||||||
<dscpForAudio>184</dscpForAudio>
|
|
||||||
<dialTemplate>${dialplanFile}</dialTemplate>
|
|
||||||
</sipProfile>
|
|
||||||
<MissedCallLoggingOption>1</MissedCallLoggingOption>
|
|
||||||
<commonProfile>
|
|
||||||
<phonePassword></phonePassword>
|
|
||||||
<backgroundImageAccess>true</backgroundImageAccess>
|
|
||||||
<callLogBlfEnabled>2</callLogBlfEnabled>
|
|
||||||
</commonProfile>
|
|
||||||
<!-- <loadInformation>sip9971.9-4-2ES-14</loadInformation> -->
|
|
||||||
<vendorConfig>
|
|
||||||
<webAccess>0</webAccess>
|
|
||||||
<settingsAccess>1</settingsAccess>
|
|
||||||
<autoSelectLineEnable>0</autoSelectLineEnable>
|
|
||||||
<loggingDisplay>1</loggingDisplay>
|
|
||||||
<daysDisplayNotActive>1,2,3,4,5,6,7</daysDisplayNotActive>
|
|
||||||
<sshAccess>0</sshAccess>
|
|
||||||
<displayOnTime>00:00</displayOnTime>
|
|
||||||
<displayOnDuration>00:00</displayOnDuration>
|
|
||||||
<displayIdleTimeout>00:05</displayIdleTimeout>
|
|
||||||
<displayOnWhenIncomingCall>1</displayOnWhenIncomingCall>
|
|
||||||
</vendorConfig>
|
|
||||||
<userLocale>
|
|
||||||
<langCode>en_US</langCode>
|
|
||||||
<winCharSet>utf-8</winCharSet>
|
|
||||||
</userLocale>
|
|
||||||
<deviceSecurityMode>1</deviceSecurityMode>
|
|
||||||
<authenticationURL>http://${serverAddress}:${toString directoryPort}/auth</authenticationURL>
|
|
||||||
<directoryURL>http://${serverAddress}:${toString directoryPort}/directory.xml</directoryURL>
|
|
||||||
<messagesURL />
|
|
||||||
<servicesURL></servicesURL>
|
|
||||||
<idleURL></idleURL>
|
|
||||||
<informationURL></informationURL>
|
|
||||||
<phoneServices useHTTPS="false">
|
|
||||||
<provisioning>2</provisioning>
|
|
||||||
<phoneService type="1" category="0">
|
|
||||||
<name>Missed Calls</name>
|
|
||||||
<url>Application:Cisco/MissedCalls</url>
|
|
||||||
<vendor></vendor>
|
|
||||||
<version></version>
|
|
||||||
</phoneService>
|
|
||||||
<phoneService type="1" category="0">
|
|
||||||
<name>Received Calls</name>
|
|
||||||
<url>Application:Cisco/ReceivedCalls</url>
|
|
||||||
<vendor></vendor>
|
|
||||||
<version></version>
|
|
||||||
</phoneService>
|
|
||||||
<phoneService type="1" category="0">
|
|
||||||
<name>Placed Calls</name>
|
|
||||||
<url>Application:Cisco/PlacedCalls</url>
|
|
||||||
<vendor></vendor>
|
|
||||||
<version></version>
|
|
||||||
</phoneService>
|
|
||||||
<phoneService type="2" category="0">
|
|
||||||
<name>Voicemail</name>
|
|
||||||
<url>Application:Cisco/Voicemail</url>
|
|
||||||
<vendor></vendor>
|
|
||||||
<version></version>
|
|
||||||
</phoneService>
|
|
||||||
</phoneServices>
|
|
||||||
<proxyServerURL></proxyServerURL>
|
|
||||||
<transportLayerProtocol>1</transportLayerProtocol>
|
|
||||||
<capfAuthMode>0</capfAuthMode>
|
|
||||||
<capfList>
|
|
||||||
<capf>
|
|
||||||
<phonePort>3804</phonePort>
|
|
||||||
</capf>
|
|
||||||
</capfList>
|
|
||||||
<encrConfig>false</encrConfig>
|
|
||||||
</device>
|
|
||||||
'';
|
|
||||||
|
|
||||||
# Dial template: the phone tests patterns top-to-bottom and dials as soon
|
|
||||||
# as digits match a pattern with timeout="0", or after the timeout for
|
|
||||||
# timeout > 0. Explicit patterns must come before the catch-all.
|
|
||||||
h = builtins.hashString "sha256" (builtins.toJSON {
|
|
||||||
inherit mac allExtensions allStarExtensions hasTrunk hasIntercomButton intercomLineIndex blfPersons;
|
|
||||||
});
|
|
||||||
versionStamp = "${builtins.substring 0 8 h}-${builtins.substring 8 4 h}-${builtins.substring 12 4 h}-${builtins.substring 16 4 h}-${builtins.substring 20 12 h}";
|
|
||||||
extMatch = ext: " <TEMPLATE match=\"${ext}\" timeout=\"0\" />";
|
|
||||||
|
|
||||||
dialplanXml = ''
|
|
||||||
<dialTemplate>
|
|
||||||
<versionStamp>${versionStamp}</versionStamp>
|
|
||||||
${lib.optionalString hasIntercomButton
|
|
||||||
" <TEMPLATE match=\"\" timeout=\"0\" rewrite=\"${pageExtension}\" line=\"${toString intercomLineIndex}\" />"}
|
|
||||||
${lib.concatMapStrings (ext: extMatch ext + "\n") allExtensions}
|
|
||||||
${lib.concatMapStrings (ext: extMatch ext + "\n") allStarExtensions}
|
|
||||||
<TEMPLATE match=".." timeout="5" />
|
|
||||||
</dialTemplate>
|
|
||||||
'';
|
|
||||||
|
|
||||||
in [
|
|
||||||
{ name = cisco.configFilename mac; content = configXml; }
|
|
||||||
{ name = cisco.dialplanFilename mac; content = dialplanXml; }
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue