Netzwerkaufbau: Cisco 7970 VoIP Telefon mit SIP Firmware 9.3.1SR4 (kann man nach kostenloser Registrierung auf cisco.com runterladen, Dateiname cmterm-7970_7971-sip.9-3-1SR4-1.zip), statische IP auf 192.168.44.80 eingestellt, TFTP Server auf 192.168.44.1 gesetzt (leider hat die Fritzbox noch keinen TFTP Server, daher verwende ich den utftpd unter Linux). Fritzbox mit der IP 192.168.44.2. Ein Linuxserver mit TFTP Server, IP: 192.168.44.1.
Im TFTP Verzeichnis liegen folgende Dateien:
apps70.9-3-1ES26.sbn Firmware cnu70.9-3-1ES26.sbn Firmware ctu.raw Klingelton, bekannt aus der Serie 24 cvm70sip.9-3-1ES26.sbn Firmware dialplan.xml Dialplan (siehe unten) dsp70.9-3-1ES26.sbn Firmware jar70sip.9-3-1ES26.sbn Firmware ringlist.xml Klingeltonliste (siehe unten) SEP001F6CABCDEF.cnf.xml Konfigurationsdatei für das Telefon mit der MAC Adresse 001F6CABCDEF (siehe unten) SIP70.9-3-1SR4-1S.loads Firmware term70.default.loads FirmwareIm htdocs Verzeichnis des Webservers liegen folgende Dateien:
ciscoauth.php Authorisierung für Screenshots, etc directory.php Telefonbuch
Ist die Konfiguration freigeschaltet, erkennt man es an dem kleinen Schloßsymbol:
Nun in die Network Configuration und anschließend in das IPv4 Configuration Menu gehen. Folgende Einstellungen habe ich statisch vorgenommen:
<?xml version="1.0" encoding="UTF-8"?> <device> <deviceProtocol>SIP</deviceProtocol> <sshUserId>admin</sshUserId> Username <sshPassword>GEHEIM</sshPassword> und Passwort für den SSH Zugang <devicePool> <dateTimeSetting> <dateTemplate>D.M.YY</dateTemplate> Datumsformat, leider werden keine vierstelligen Jahresangaben unterstützt <timeZone>Central Europe Standard/Daylight Time</timeZone> Zeitzone <ntps> <ntp> <name>192.168.44.2</name> NTP Server für Zeitsynchronisation, dies übernimmt die Fritzbox <ntpMode>Unicast</ntpMode> </ntp> </ntps> </dateTimeSetting> <callManagerGroup> <members> <member priority="0"> <callManager> <ports> <ethernetPhonePort>2000</ethernetPhonePort> <sipPort>5060</sipPort> 5060 ist der Standard Port für SIP <securedSipPort>5061</securedSipPort> </ports> <processNodeName>192.168.44.2</processNodeName> SIP Server - die Fritzbox </callManager> </member> </members> </callManagerGroup> </devicePool> <commonProfile> <phonePassword></phonePassword> <backgroundImageAccess>true</backgroundImageAccess> der Benutzer darf sich selber Hintergrundbilder aussuchen <callLogBlfEnabled>2</callLogBlfEnabled> </commonProfile> <loadInformation>SIP70.9-3-1SR4-1S</loadInformation> diese Firmware wird verwendet, man beachte den Bezug zur Datei SIP70.9-3-1SR4-1S.loads auf dem TFTP Server <vendorConfig> <disableSpeaker>false</disableSpeaker> falls man den Lautsprecher deaktivieren will <disableSpeakerAndHeadset>false</disableSpeakerAndHeadset> falls man den Lautsprecher und das Headset deaktivieren will <pcPort>0</pcPort> der LAN Port zum Anschluß eines PC ist aktiv <settingsAccess>1</settingsAccess> <garp>0</garp> <voiceVlanAccess>0</voiceVlanAccess> <videoCapability>0</videoCapability> <autoSelectLineEnable>0</autoSelectLineEnable> <sshAccess>0</sshAccess> SSH Access erlauben <sshPort>22</sshPort> SSH Port <webAccess>0</webAccess> Zugriff per Web erlauben <spanToPCPort>1</spanToPCPort> <loggingDisplay>1</loggingDisplay> <loadServer></loadServer> <daysDisplayNotActive></daysDisplayNotActive> <displayOnTime>03:00</displayOnTime> um drei Uhr morgens wird das Display aktiviert <displayOnDuration>00:01</displayOnDuration> für eine Minute <displayIdleTimeout>00:05</displayIdleTimeout> nach fünf Minuten Inaktivität soll das Display abschalten <displayOnWhenIncomingCall>1</displayOnWhenIncomingCall> Display aktivieren bei eingehenden Anruf </vendorConfig> <deviceSecurityMode>1</deviceSecurityMode> <authenticationURL>http://192.168.44.1/ciscoauth.php</authenticationURL> hier wird die Authorisierung vorgenommen um zum Beispiel Screenshots des Displays zu erstellen <directoryURL>http://192.168.44.1/directory.php</directoryURL> Telefonbucheinträge, siehe weiter unten <idleURL></idleURL> <informationURL></informationURL> <messagesURL></messagesURL> <proxyServerURL></proxyServerURL> <servicesURL>http://www.arbeitsplatzvernichtung-durch-outsourcing.de/ebtcisco/index.php?userid=987600&timeoffset=1</servicesURL> Hier kann man einen XML Dienst auf den Service Button legen, in diesem Beispiel eine kleine Statusanzeige für Eurobilltracker. Als Besonderheit sei noch angemerkt, das man nicht einfach ein kaufmännisches Und (& Zeichen) übergeben kann in XML. Hier bitte wie in HTML auch & verwenden. <dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig> <dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices> <dscpForCm2Dvce>96</dscpForCm2Dvce> <transportLayerProtocol>2</transportLayerProtocol> UDP benutzen <capfAuthMode>0</capfAuthMode> <capfList> <capf> <phonePort>3804</phonePort> </capf> </capfList> <certHash></certHash> <encrConfig>false</encrConfig> <sipProfile> <sipProxies> <backupProxy></backupProxy> <backupProxyPort></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> <rfc2543Hold>false</rfc2543Hold> <callHoldRingback>2</callHoldRingback> <localCfwdEnable>true</localCfwdEnable> <semiAttendedTransfer>true</semiAttendedTransfer> <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> <autoAnswerTimer>1</autoAnswerTimer> <autoAnswerAltBehavior>false</autoAnswerAltBehavior> <autoAnswerOverride>true</autoAnswerOverride> <transferOnhookEnabled>false</transferOnhookEnabled> <enableVad>false</enableVad> <preferredCodec>none</preferredCodec> <dtmfAvtPayload>101</dtmfAvtPayload> <dtmfDbLevel>3</dtmfDbLevel> <dtmfOutofBand>avt</dtmfOutofBand> <alwaysUsePrimeLine>false</alwaysUsePrimeLine> <alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail> <kpml>3</kpml> <natEnabled>false</natEnabled> <natAddress></natAddress> <stutterMsgWaiting>0</stutterMsgWaiting> <callStats>false</callStats> <silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts> <disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig> <startMediaPort>16384</startMediaPort> <stopMediaPort>32766</stopMediaPort> <voipControlPort>5060</voipControlPort> <dscpForAudio>184</dscpForAudio> <ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy> <dialTemplate>dialplan.xml</dialTemplate> der Dialplan <phoneLabel>marty44</phoneLabel> das Phonelabel, steht im Display oben rechts, keine Leerzeichen benutzen! <sipLines> <line button="1"> auf den ersten Schnellwahlbutton kommt der SIP Anschluß der Fritzbox <featureID>9</featureID> es handelt sich um einen SIP Anschluß <featureLabel>620</featureLabel> 620 ist die erste SIP Nebenstelle in der Fritzbox <name>620</name> man sollte alle vier Werte auf 620 lassen, sonst kann es sein, <displayName>620</displayName> das die Fritzbox keine Anrufe mehr entgegen nimmt <contact>620</contact> <proxy>USECALLMANAGER</proxy> hier verweisen wir auf die Fritzbox, wurde weiter oben definiert wenn man hier die IP der Fritzbox einträgt, schlägt es mit der Firmware 9.3.1 fehl <port>5060</port> <autoAnswer> <autoAnswerEnabled>2</autoAnswerEnabled> </autoAnswer> <callWaiting>3</callWaiting> <authName>620</authName> SIP Username auf der Fritzbox <authPassword>SIPPasswort</authPassword> SIP Passwort für die Nebenstelle 620 auf der Fritzbox <sharedLine>false</sharedLine> <messageWaitingLampPolicy>1</messageWaitingLampPolicy> <messagesNumber>*97</messagesNumber> hier kann man die Telefonnummer des Anrufbeantworters der Fritzbox hinterlegen <ringSettingIdle>4</ringSettingIdle> <ringSettingActive>5</ringSettingActive> <forwardCallInfoDisplay> <callerName>true</callerName> <callerNumber>true</callerNumber> <redirectedNumber>false</redirectedNumber> <dialedNumber>true</dialedNumber> </forwardCallInfoDisplay> </line> <line button="2"> auf den zweiten Schnellwahlbutton legen wir eine Telefonnummer <featureID>2</featureID> es soll ein Schnellwahlbutton werden <featureLabel>Sheldon Cooper</featureLabel> Name des Eintrages <speedDialNumber>0123456789</speedDialNumber> die Telefonnummer </line> </sipLines> </sipProfile> </device>
<DIALTEMPLATE> <TEMPLATE MATCH="*" Timeout="5" /> </DIALTEMPLATE>
<CiscoIPPhoneRingList> <Ring> <DisplayName>CTU</DisplayName> <FileName>ctu.raw</FileName> </Ring> </CiscoIPPhoneRingList>Eine kleine Auswahl an Klingeltönen gibt es zu Beispiel hier.
Mit dem Programm SoX kann man auch eigene Klingeltöne erstellen. Zum Beispiel aus einer WAV Datei:
sox -t wav in.wav -t raw -r 8000 -U -b -c 1 - resample -ql out.rawLaut Heiko hat sich die Syntax von SoX geändert:
sox in.mp3 -t raw -e u-law -b 8 -c 1 -r 8000 out.raw sox in.wav -t raw -e u-law -b 8 -c 1 -r 8000 out.raw
root@pd6000:/utftpd/Desktops/320x212x12 # ls -l -rwxr--r-- 1 root root 945 2011-10-16 12:25 List.xml -rwxr--r-- 1 root root 99883 2011-10-16 11:42 pic1.png -rwxr--r-- 1 root root 7826 2011-10-16 11:42 pic1-tn.png -rwxr--r-- 1 marty marty 92927 2011-10-16 12:17 SimpsonsCisco.png -rwxr--r-- 1 marty marty 7972 2011-10-16 12:18 SimpsonsCisco-tn.pngHintergrundbilder müssen im PNG Format sein, 320x212. Vorschaubilder müssen ebenfalls im PNG Format sein, 80x53.
<CiscoIPPhoneImageList> <ImageItem Image="TFTP:Desktops/320x212x12/pic1-tn.png" zuerst das Vorschaubild in 80x53 URL="TFTP:Desktops/320x212x12/pic1.png"/> danach das Bild in 320x212 <ImageItem Image="TFTP:Desktops/320x212x12/SimpsonsCisco-tn.png" URL="TFTP:Desktops/320x212x12/SimpsonsCisco.png"/> </CiscoIPPhoneImageList>
<?php echo "AUTHORIZED"; ?>Man kann hier auch eine komplette Benutzerverwaltung aufziehen. Das Telefon ruft die Datei ciscoauth.php wie folgt auf (Auszug aus der Logdatei des Webservers):
sep001f6cabcdef.marty44.net - - [26/Oct/2011:15:24:26 +0200] "GET /ciscoauth.php?UserID=BENUTZER&Password=PASSWORT&devicename=SEP001F6CABCDEF \ HTTP/1.1" 200 22 "-" "Allegro-Software-WebClient/4.34"Um eine Benutzerverwaltung aufzubauen, muß man sich mit den Parametern UserID und Password auseinandersetzen. Im Erfolgsfall soll der Webserver nur AUTHORIZED zurückmelden.
Folgende Informationen kann man aufrufen:
http://192.168.44.80/CGI/Screenshot liefert einen Screenshot im BMP Format:
http://192.168.44.80/CGI/CallInfo liefert ein paar Infos über den Status der Line und einiger Buttons
http://192.168.44.80/CGI/LineInfo liefert ein paar Infos über die Konfiguration der Schnellwahlbuttons
http://192.168.44.80/CGI/SettingsInfo liefert ein paar Infos über einige Einstellungen
<?php header("Content-type: text/xml"); ?> <CiscoIPPhoneMenu> <Title>Telefonbuch</Title> <Prompt>Dir External</Prompt> <MenuItem> <Name>Oma</Name> <URL>Dial:0123456</URL> </MenuItem> <MenuItem> <Name>Frisoer</Name> <URL>Dial:01265432</URL> </MenuItem> </CiscoIPPhoneMenu>
zurück zu Sonstiges
Letzte Aktualisierung dieser Seite: 8. Juni 2015