Hi Folks
SkykingOH kindly suggested that I share my Cisco XML phone config file implementation on my FreePBX setup. So here is my (somewhat anonymised) Cisco 9971 phone configuration file, together with some configuration tips. I have a lot of people from all over the net to thank for getting me this far. There are still some phone features which don’t work (Conference key for example), but by and large the main phone functions are working very well.
My setup consists of
[List=1]
[] Cisco 9971 phones running 9.2.3-27 firmware, with attached CUVC camera
[] Soft-phones (a mixture of Vippie Video with H.264 support on iPhone and X-Lite 4 on OS X)
[] FreePBX 2.9.0.10 with Asterisk 1.8.7.0 with
[List=I]
[] Asterisk patch Presence Subscription on Cisco Phones as listed on JIRA
[] Asterisk patch video format ‘negotiation’ as published in the Asterisk-Video mailing list from Artem Makhutov
[/List]
[] Linksys SPA3102-UK analogue voice gateway for terminating PSTN circuit (FXO) and analogue extension (FXS)
[*] Dialectic v1.84 dialler integration on OS X
[/List]
Please note the following (hopefully I’m not telling you how to ‘suck eggs’ too much here):
[List=1]
[] Some Basic Stuff
[List=I]
[] Timezone and NTP values. My timezone is set to “GMT Standard/Daylight Time” and my date format “D/M/Ya” set accordingly to my regional preference. The values entered here must conform to the Cisco preferred values for timezones. Change the NTP server IP or DNS name to your preferred.
[*] My asterisk server IP address is 192.168.0.70 - change this to reflect your server IP address.
[*] <loadInformation>
tag is set to reflect the firmware versions on my phone, alter yours to suit.
[*] <featurePolicyFile>
should be set to reflect the name of the Feature Policy file as installed in your /tftpboot directory. The 89xx and 99xx series of phones apparently no longer uses the soft keys.xml configuration method (although I actually have one listed/installed as a hangover from a previous setup)
[*] Labels for the phone and lines labels, secrets for SIP lines etc to be changed from my dummy values.
[/List]
[*] Phone Display Activation
See <daysDisplayNotActive>
I’ve set the phone display to be blacked out on all days, until the phone is used, then remains on for 1 hour; therefore all days Sunday (1) through Saturday (7) are listed here. Note this overrides the settings in <displayOnTime>
and <displayOnDuration>
.
[] BLF and Presence Functionality
[List=I]
[] To enable BLF/presence to function correctly you will need to apply Asterisk patch Presence Subscription on Cisco Phones as listed on JIRA.
[*] Update the cisco phone extension entries in sip_custom_post.conf to include SIP functionality in the presence patch and video patch (more on that below). e.g. for extension 100 include an entry such as:
[100](+)
ciscounified=yes
dndbusy=yes
video_fmtp=profile-level-id=42801E\;packetization-mode=0\;level-asymmetry-allowed=1
video_btias=1000000
video_imageattr=recv [x=640,y=480,q=0.50]
(Please Note: If you have a mixed estate of Cisco and non-Cisco devices it is much better to include these additional SIP settings only for the Cisco endpoints (in the manner above) rather than for the entire SIP estate. I had previously written here that the additional SIP setting can be added via the FreePBX 2.9 GUI under Asterisk SIP settings -> Other SIP settings. This would constitute a global SIP configuration change and is fine if your endpoints are 100% Cisco but if you have a mixture of different endpoints then you will likely get strange error messages in your Asterisk CLI/logs or other strange consequences)
[*] <timerRegisterExpires>
If you have particularly busy/intensive phone users I’ve heard that setting this value to 900 will help from keep the phone from losing the ability to display BLF status after a few weeks. I’ve not personally had reason to change mine from the default. See Asterisk patch Presence Subscription on Cisco Phones.
[/List]
[] SIP Lines
See section <sipLines>
[List=I]
[] Ordinary Lines - this configuration file reflects a phone setup with 2 ordinary lines, per <featureID>9</featureID>
. The first line is a “normal” line and the second line is an “intercom” line which is set to auto answer.
[] Speed Dials - the remaining 4 line keys are configured as speed dials, per <featureID>21</featureID>
. Where presence indication is desired set <featureOptionMask>1</featureOptionMask>
for the speed dial entry.
[] Setting preferred line - as I wanted the phone to default to the first "normal’ line when the phone was taken off hook I set <alwaysUsePrimeLine>true</alwaysUsePrimeLine>
and <alwaysUsePrimeLineVoiceMail>true</alwaysUsePrimeLineVoiceMail>
[/List]
[*] Voicemail
My VM number is defined within the lines section under <messagesNumber>1000</messagesNumber>
. I have a customised dial plan using ‘1000’ to dial into VoiceMailMain, but of course you can use the usual *97 or *98 here or whatever you prefer to dial your voicemail.
[] Video and Camera Capability
[List=I]
[] My 9971 phones have cameras installed hence you will need the tags <ciscoCamera>
and <videoCapability>
as set out variously below.
[*] If you are using your phone with Power over Ethernet supplied by a non-Cisco switch then you will also need to set <powerNegotiation>0</powerNegotiation>
so that the phone can extract the full per port PoE power from the ethernet port on the non-cisco switch, otherwise the camera will fail to initialise due to lack of power. This could also be overcome by using a Cisco power brick to power the phone.
[*] To enable two-way H.264 based video calls you will also need to apply the Asterisk patch as published ion the Asterisk-Video mailing list from Artem Makhutov.
[/List]
[*] Call Lists Application (native)
To enable the built in Cisco application for missed/received/placed calls refer to the code under tags <phoneServices>
. Once you have the presence patch applied BLF for call lists can be applied by <callLogBlfEnabled>3</callLogBlfEnabled>
under the commonProfile
section
[*] Other Applications
I have added apps in the <phoneServices>
section for some existing external Cisco XML services like Berbee, some XML directory demos as well as my own custom PHP-based voicemail application (which I’m not allowed to call by its more commonly know name) residing on my asterisk server.
[List=I]
[] Application Menu. I have set the external Berbee and ‘Australian Services’ XML apps in the “Application” menu of the phone, accessed by the dedicated Application feature button and set by tag <phoneService type="0" category="0">
[] Contacts Menu. To set up apps accessed by the dedicated “Contacts” button set the appropriate phone service using <phoneService type="1" category="0">
. I’ve currently got placeholder (external) XML directory apps there
[*] Messages Menu. Finally apps included in the “Messages” menu accessed by corresponding dedicated button are set using <phoneService type="2" category="0">
. The native voicemail app is here (just need to set your <messagesNumber>
accordingly for one-touch access to voicemail. I’ve also added my custom voicemail app here so when I press the “Messages” button I get a small menu allowing me either (1) dial voicemail or (2) access my custom voicemail app
[/List]
[*] Call Forward All
This can be enabled by setting the following in extension_custom.conf. Note the presence patch noted above must be applied.
[from-internal-custom]
; Strip the x-cisco-serviceuri- prefix
exten => _[x]-cisco-serviceuri-.,1,Goto(${EXTEN:19},1)
; Enable forwarding
exten => _cfwdall-.,1,Answer
same => next,Set(SIPPEER(${CHANNEL(peername)},callforward)=${EXTEN:8})
same => next,Hangup(normal_clearing)
; Disable forwarding
exten => cfwdall,1,Answer
same => next,Set(SIPPEER(${CHANNEL(peername)},callforward)=)
same => next,Hangup(normal_clearing)
[*] Do Not Disturb
The following will enable a customised DND toggle feature, along the lines of the default *76 feature code, but updated to use the ‘DONOTDISTURB’ device state available once the Presence Subscription on Cisco Phones patch has been applied. The benefit is that the Cisco DND animations will be displayed for other subscribers to the extension hint, also the line button assigned for DND on the phone will glow red and also show the DND animation.
[List=I]
[*] firstly enable “Enable Custom Device States” under “Advanced Settings” in FPBX
[*] In extensions_custom.conf create a customised dnd-toggle app. In the example below I’ve used 760 as my assigned extension to call app-dnd-toggle-custom.
[app-dnd-toggle-custom]
; Custom DND Toggle using Cisco DoNotDisturb state
exten => 760,1,Answer
exten => 760,n,Wait(1)
exten => 760,n,Macro(user-callerid,)
exten => 760,n,GotoIf($["${DB(DND/${AMPUSER})}" = ""]?activate:deactivate)
exten => 760,n(activate),Set(DB(DND/${AMPUSER})=YES)
exten => 760,n,Set(STATE=DONOTDISTURB)
exten => 760,n,Gosub(app-dnd-toggle-custom,sstate,1)
exten => 760,n(hook_on),Playback(do-not-disturb&activated)
exten => 760,n,Macro(hangupcall,)
exten => 760,n(deactivate),Noop(Deleting: DND/${AMPUSER} ${DB_DELETE(DND/${AMPUSER})})
exten => 760,n,Set(STATE=NOT_INUSE)
exten => 760,n,Gosub(app-dnd-toggle-custom,sstate,1)
exten => 760,n(hook_off),Playback(do-not-disturb&de-activated)
exten => 760,n,Macro(hangupcall,)
exten => sstate,1,Set(DEVICE_STATE(Custom:DND${AMPUSER})=${STATE})
exten => sstate,n,Set(DEVICES=${DB(AMPUSER/${AMPUSER}/device)})
exten => sstate,n,GotoIf($["${DEVICES}" = "" ]?return)
exten => sstate,n,Set(LOOPCNT=${FIELDQTY(DEVICES,&)})
exten => sstate,n,Set(ITER=1)
exten => sstate,n(begin),Set(DEVICE_STATE(Custom:DEVDND${CUT(DEVICES,&,${ITER})})=${STATE})
exten => sstate,n,Set(ITER=$[${ITER} + 1])
exten => sstate,n,GotoIf($[${ITER} <= ${LOOPCNT}]?begin)
exten => sstate,n(return),Return()
[*] In the dialplan create extensions (in this example 760100 and 760120 for extensions 100 and 120 respectively) which are to be assigned to the line keys on the relevant phones.
[ext-dnd-hints-custom]
exten => 760100,1,Goto(app-dnd-toggle-custom,760,1)
exten => 760100,hint,Custom:DND100
exten => 760120,1,Goto(app-dnd-toggle-custom,760,1)
exten => 760120,hint,Custom:DND120
[*] On the phone assign set up a speed dial on the desired ‘DND’ line key (for the first phone this would be 760100) which calls app-dnd-toggle-custom. This also enables the line key to subscribes to the relevant DND hint for extension 100. As such when DND is activated by pressing the line key the usual audible confirmation is heard, the line key then lights up and the DND animation is displayed. Ditto when the key is pressed again to toggle DND off.
[*] Finally don’t forget to set <featureOptionMask>1</featureOptionMask>
against the relevant line key otherwise it will not subscribe to the DND hint.
[/List]
[*] SIP NOTIFY for reset and restart of Cisco phones
Although it is possible to write a php or perl script (see my recent post) to remotely restart or reset Cisco 89xx and 99xx phones, by far the simplest and quickest method is to use the SIP NOTIFY command. By applying the patch, it is possible to use the following commands from the Asterisk CLI to restart (reloads line keys, dial-plan and soft keys) or reset phones:
CLI> sip notify cisco-restart ${PEERNAME}
CLI> sip notify cisco-reset ${PEERNAME}
Also I’ve just noticed (although it was probably there all along) that the MWI indicator can be manually cleared using the following command:
CLI> sip notify clear-mwi ${PEERNAME}
The following variables and functions should be included in sip_notify_custom.conf settings:
[clear-mwi]
Event=>message-summary
Content-type=>application/simple-message-summary
Content=>Messages-Waiting: no
Content=>Message-Account: sip:[email protected]
Content=>Voice-Message: 0/0 (0/0)
Content=>
; Cisco
[cisco-restart]
Event=>service-control
Subscription-State=>active
Content-Type=>text/plain
Content=>action=restart
Content=>RegisterCallId={${SIPPEER(${PEERNAME},regcallid)}}
Content=>ConfigVersionStamp={0000000000000000}
Content=>DialplanVersionStamp={0000000000000000}
Content=>SoftkeyVersionStamp={0000000000000000}
[cisco-reset]
Event=>service-control
Subscription-State=>active
Content-Type=>text/plain
Content=>action=reset
Content=>RegisterCallId={${SIPPEER(${PEERNAME},regcallid)}}
Content=>ConfigVersionStamp={0000000000000000}
Content=>DialplanVersionStamp={0000000000000000}
Content=>SoftkeyVersionStamp={0000000000000000}
[/List]
Extract from SEPmac_address.cnf.xml
<?xml version="1.0" encoding="UTF-8"?>
<device>
<deviceProtocol>SIP</deviceProtocol>
<sshUserId>admin</sshUserId>
<sshPassword>cisco</sshPassword>
<devicePool>
<dateTimeSetting>
<dateTemplate>D/M/Ya</dateTemplate>
<timeZone>GMT Standard/Daylight Time</timeZone>
<ntps>
<ntp>
<name>130.88.203.12</name>
<ntpMode>Unicast</ntpMode>
</ntp>
</ntps>
</dateTimeSetting>
<callManagerGroup>
<members>
<member priority="0">
<callManager>
<ports>
<ethernetPhonePort>2000</ethernetPhonePort>
<sipPort>5060</sipPort>
<securedSipPort>5061</securedSipPort>
</ports>
<processNodeName>192.168.0.70</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
</devicePool>
<commonProfile>
<phonePassword></phonePassword>
<backgroundImageAccess>true</backgroundImageAccess>
<callLogBlfEnabled>3</callLogBlfEnabled>
</commonProfile>
<loadInformation>sip9971.9-2-3-27</loadInformation>
<featurePolicyFile>DefaultFP.xml</featurePolicyFile>
<vendorConfig>
<disableSpeaker>false</disableSpeaker>
<disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
<pcPort>0</pcPort>
<settingsAccess>1</settingsAccess>
<garp>0</garp>
<voiceVlanAccess>0</voiceVlanAccess>
<ciscoCamera>1</ciscoCamera>
<videoCapability>1</videoCapability>
<usbClasses>0,1,2</usbClasses>
<sdio>1</sdio>
<wifi>0</wifi>
<bluetoothProfile>0,1</bluetoothProfile>
<powerNegotiation>0</powerNegotiation>
<autoSelectLineEnable>0</autoSelectLineEnable>
<webAccess>0</webAccess>
<sshAccess>0</sshAccess>
<g722CodecSupport></g722CodecSupport>
<daysDisplayNotActive>1,2,3,4,5,6,7</daysDisplayNotActive>
<displayOnTime>08:30</displayOnTime>
<displayOnDuration>09:30</displayOnDuration>
<displayIdleTimeout>01:00</displayIdleTimeout>
<displayOnWhenIncomingCall>1</displayOnWhenIncomingCall>
<spanToPCPort>1</spanToPCPort>
<loggingDisplay>1</loggingDisplay>
<loadServer></loadServer>
</vendorConfig>
<commonConfig>
<usb1>1</usb1>
<usb2>1</usb2>
<ciscoCamera>1</ciscoCamera>
<usbClasses>0,1,2</usbClasses>
<sdio>1</sdio>
<bluetooth>1</bluetooth>
<wifi>1</wifi>
<bluetoothProfile>0,1</bluetoothProfile>
<joinAndDirectTransferPolicy>0</joinAndDirectTransferPolicy>
</commonConfig>
<enterpriseConfig>
<usb1>1</usb1>
<usb2>1</usb2>
<ciscoCamera>1</ciscoCamera>
<usbClasses>0,1,2</usbClasses>
<sdio>1</sdio>
<bluetooth>1</bluetooth>
<wifi>1</wifi>
<bluetoothProfile>0,1</bluetoothProfile>
<joinAndDirectTransferPolicy>0</joinAndDirectTransferPolicy>
<videoCapability>1</videoCapability>
<webAccess>0</webAccess>
<eapAuthentication>2</eapAuthentication>
<webProtocol>0</webProtocol>
</enterpriseConfig>
<advertiseG722Codec></advertiseG722Codec>
<networkLocale>United_Kingdom</networkLocale>
<networkLocaleInfo>
<name>English_United_Kingdom</name>
<uid>64</uid>
<version>1.0.0.0-1</version>
</networkLocaleInfo>
<deviceSecurityMode>1</deviceSecurityMode>
<idleTimeout>0</idleTimeout>
<authenticationURL></authenticationURL>
<directoryURL></directoryURL>
<idleURL></idleURL>
<informationURL></informationURL>
<messagesNumber></messagesNumber>
<messagesURL></messagesURL>
<proxyServerURL></proxyServerURL>
<servicesURL></servicesURL>
<dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
<dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
<dscpForCm2Dvce>96</dscpForCm2Dvce>
<transportLayerProtocol>2</transportLayerProtocol>
<dndCallAlert>5</dndCallAlert>
<phonePersonalization>1</phonePersonalization>
<rollover>0</rollover>
<singleButtonBarge>0</singleButtonBarge>
<joinAcrossLines>1</joinAcrossLines>
<autoCallPickupEnable>false</autoCallPickupEnable>
<blfAudibleAlertSettingOfIdleStation>0</blfAudibleAlertSettingOfIdleStation>
<blfAudibleAlertSettingOfBusyStation>0</blfAudibleAlertSettingOfBusyStation>
<capfAuthMode>0</capfAuthMode>
<capfList>
<capf>
<phonePort>3804</phonePort>
</capf>
</capfList>
<certHash></certHash>
<encrConfig>false</encrConfig>
<sipProfile>
<sipProxies>
<backupProxy>USECALLMANAGER</backupProxy>
<backupProxyPort>5060</backupProxyPort>
<emergencyProxy>USECALLMANAGER</emergencyProxy>
<emergencyProxyPort>5060</emergencyProxyPort>
<outboundProxy></outboundProxy>
<outboundProxyPort></outboundProxyPort>
<registerWithProxy>true</registerWithProxy>
</sipProxies>
<sipCallFeatures>
<cnfJoinEnabled>true</cnfJoinEnabled>
<callForwardURI>x-cisco-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>
<retainForwardInformation>true</retainForwardInformation>
</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>0</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>true</alwaysUsePrimeLine>
<alwaysUsePrimeLineVoiceMail>true</alwaysUsePrimeLineVoiceMail>
<kpml>3</kpml>
<natEnabled>false</natEnabled>
<natAddress>192.168.0.70</natAddress>
<stutterMsgWaiting>2</stutterMsgWaiting>
<callStats>false</callStats>
<silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
<disableLocalSpeedDialConfig>false</disableLocalSpeedDialConfig>
<startMediaPort>10000</startMediaPort>
<stopMediaPort>20000</stopMediaPort>
<voipControlPort>5060</voipControlPort>
<dscpForAudio>184</dscpForAudio>
<dscpVideo>136</dscpVideo>
<dscpForTelepresence>128</dscpForTelepresence>
<ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
<softKeyFile>softkey.xml</softKeyFile>
<dialTemplate>dialplan.xml</dialTemplate>
<phoneLabel>Your_Label_Here</phoneLabel>
<sipLines>
<line button="1" lineIndex="1">
<featureID>9</featureID>
<featureLabel>Sean 100</featureLabel>
<name>100</name>
<displayName>Study</displayName>
<contact>100</contact>
<proxy>USECALLMANAGER</proxy>
<port>5060</port>
<autoAnswer>
<autoAnswerEnabled>2</autoAnswerEnabled>
</autoAnswer>
<callWaiting>3</callWaiting>
<authName>100</authName>
<authPassword>your_secret_here</authPassword>
<sharedLine>false</sharedLine>
<messageWaitingLampPolicy>3</messageWaitingLampPolicy>
<messageWaitingAMWI>1</messageWaitingAMWI>
<messagesNumber>1000</messagesNumber>
<ringSettingIdle>4</ringSettingIdle>
<ringSettingActive>5</ringSettingActive>
<forwardCallInfoDisplay>
<callerName>true</callerName>
<callerNumber>false</callerNumber>
<redirectedNumber>false</redirectedNumber>
<dialedNumber>true</dialedNumber>
</forwardCallInfoDisplay>
<maxNumCalls>4</maxNumCalls>
<busyTrigger>2</busyTrigger>
</line>
<line button="2" lineIndex="2">
<featureID>9</featureID>
<featureLabel>Intercom</featureLabel>
<name>101</name>
<displayName></displayName>
<contact>101</contact>
<proxy>USECALLMANAGER</proxy>
<port>5060</port>
<autoAnswer>
<autoAnswerEnabled>3</autoAnswerEnabled>
</autoAnswer>
<callWaiting>3</callWaiting>
<authName>101</authName>
<authPassword>your_secret_here</authPassword>
<sharedLine>false</sharedLine>
<messageWaitingLampPolicy>1</messageWaitingLampPolicy>
<messagesNumber></messagesNumber>
<ringSettingIdle>4</ringSettingIdle>
<ringSettingActive>5</ringSettingActive>
<forwardCallInfoDisplay>
<callerName>true</callerName>
<callerNumber>false</callerNumber>
<redirectedNumber>false</redirectedNumber>
<dialedNumber>true</dialedNumber>
</forwardCallInfoDisplay>
<maxNumCalls>4</maxNumCalls>
<busyTrigger>2</busyTrigger>
</line>
<line button="3">
<featureID>21</featureID>
<featureLabel>Annette</featureLabel>
<speedDialNumber>110</speedDialNumber>
<featureOptionMask>1</featureOptionMask>
</line>
<line button="4">
<featureID>21</featureID>
<featureLabel>Bedroom</featureLabel>
<speedDialNumber>120</speedDialNumber>
<featureOptionMask>1</featureOptionMask>
</line>
<line button="5">
<featureID>21</featureID>
<featureLabel>DECTphone</featureLabel>
<speedDialNumber>130</speedDialNumber>
<featureOptionMask>1</featureOptionMask>
</line>
<line button="6">
<featureID>21</featureID>
<featureLabel>DND</featureLabel>
<speedDialNumber>760100</speedDialNumber>
<featureOptionMask>1</featureOptionMask>
</line>
</sipLines>
</sipProfile>
<phoneServices>
<provisioning>0</provisioning>
<phoneService type="1" category="0">
<name>Missed Calls</name>
<url>Application:Cisco/MissedCalls</url>
<vendor></vendor>
<version></version>
</phoneService>
<phoneService type="2" category="0">
<name>Voicemail</name>
<url>Application:Cisco/Voicemail</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="1" category="0">
<name>Personal Directory</name>
<url>Application:Cisco/PersonalDirectory</url>
<vendor></vendor>
<version></version>
</phoneService>
<phoneService type="1" category="0">
<name>Corporate Directory (Demo)</name>
<url>http://directory.ciscoxmlservices.com/demo1/demo1/</url>
<vendor></vendor>
<version></version>
</phoneService>
<phoneService type="0" category="0">
<name>Australian Services</name>
<url>http://cisco.internect.net/</url>
<vendor></vendor>
<version></version>
</phoneService>
<phoneService type="0" category="0">
<name>Berbee</name>
<url>http://phone-xml.berbee.com/menu.xml</url>
<vendor></vendor>
<version></version>
</phoneService>
<phoneService type="2" category="0">
<name>Visual Voice Mail</name>
<url>http://192.168.0.70/cisco/voicemail.php?user=100</url>
<vendor></vendor>
<version></version>
</phoneService>
</phoneServices>
</device>