Cisco 7811 directory xml


Sorry to revamp an old thread.
I have a bunch of cisco 7811 phones which I have successfully integrated with freepbx and they are connected and calls made. All softkeys are working well.

The only challenge is getting the phonebook directory to work.

I have included the directory.php file in the /var/www/html folder and it is visible via a browser, but the cisco phones still do not recognise it. Says, “contact not found” when I press the directory button om the phones

Could you please help with a working directory.php or directory.xml file?

Please note thay contacts list is up to 100.

I would be so grateful.
Thank you.

It’s always best to start with a fresh post when encountering an issue like this. Here are some steps to help you troubleshoot a potential mismatch between a button press on a phone and the expected script execution on your server:

1. Monitor the Apache Logs:

  • Start by tailing your Apache error logs. The usual location is /var/log/httpd/error_log. Use the following command:
    tail -f /var/log/httpd/error_log
  • Press the button on your phone and observe the log output. Look for any error messages or requests that might indicate whether the phone is reaching the server and the intended script correctly.

2. Verify URL Accuracy:

  • Double-check that the URL configured on the phone to trigger the script is exactly the same as the one you would use to access it from a web browser on your computer. Pay close attention to the hostname (or IP address), the path, and any parameters included.
  • Sometimes, phones may modify or add unexpected elements to the URL.

3. Network Considerations (if applicable):

  • If your phone and server are on different networks, ensure that any firewalls or network configurations are not blocking the phone’s request from reaching your server.

Thank you so much for this.

  1. I have been monitoring the apache log, and funny enough, there is no error. The phone actually accesses the file, but doesn’t load it.

I even went as far of creating a dummy phonebook.xml as well as directory.php files.
The phones see them (from my apache log) but still says “Contacts not found”.

I have included a screenshot of my apache error and access log.
-Access log

  1. URL is very accurate. My 8865 phones access the phonebook easily.

  2. The phones and server are on the same network. 10.100.60.x

I wanted to upload the files but “New users can’t upload documents”.

Your kind help will be really appreciated.

Thank you.

Here is a screenshot of the phone when the directory button is pressed.

Thank you.


Any help PLEASE?

I really need help, I am stuck.

Was able to get this working after troubleshooting.

I’m so happy. Will share the files later when I settle down for future reference.

Hello good, I am very interested in your configuration files, since I have two Cisco IP phones (CP-7841 and CP-8841) and what I am not able to work in either of the two models is the agenda, thank you very much, thank you very much, And sorry for my English I am Spanish.

Do you need the agenda? Or is something lost in translation.
I have xml files for the Phonebook, (called Directory on Cisco)

At least working on the 8841. (And it’s a typical Cisco thing)
The phone expects a XML (CiscoIPPhoneMenu) object.

Let me know if you need the files.

This is the SEP file for the 8865 phone. Working well
NB: ! - Gateway - IP PBX server IP
I created a cisco folder in my /var/www/html/ directory where I created the phone directory files ( a “menu.xml” file and some directory xml files).

authPAssword - is the password created for that extension on freepbx gui interface
authName - 408 is the phone extension number created on freepbx gui as well.

Hope this helps.


> <device>
>     <fullConfig>true</fullConfig>
>     <deviceProtocol>SIP</deviceProtocol>
>     <devicePool>
>         <dateTimeSetting>
>             <dateTemplate>D.M.Y</dateTemplate>
>             <timeZone>British Summer Time</timeZone>
>             <ntps>
>                 <ntp>
>                     <name></name>
>                     <ntpMode>Unicast</ntpMode>
>                 </ntp>
>             </ntps>
>         </dateTimeSetting>
>         <callManagerGroup>
>             <tftpDefault>true</tftpDefault>
>                 <members>
>                 <member priority="0">
>                 <callManager>
>                 <name></name>
>                 <description>Station</description>
>                 <ports>
>                   <ethernetPhonePort>2000</ethernetPhonePort>
>                   <sipPort>5060</sipPort>
>                   <securedSipPort>5061</securedSipPort>
>                 </ports>
>                 <processNodeName></processNodeName>
>                 </callManager>
>                 </member>
>                 </members>
>              </callManagerGroup>
>     </devicePool>
>     <commonProfile>
>         <phonePassword></phonePassword>
>         <backgroundImageAccess>true</backgroundImageAccess>
>         <callLogBlfEnabled>1</callLogBlfEnabled>
>     </commonProfile>
>     <vendorConfig>
>         <disableSpeaker>false</disableSpeaker>
>         <disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
>         <pcPort>0</pcPort>
>         <settingsAccess>1</settingsAccess>
>         <garp>0</garp>
>         <voiceVlanAccess>0</voiceVlanAccess>
>         <videoCapability>1</videoCapability>
>         <autoSelectLineEnable>0</autoSelectLineEnable>
>         <daysDisplayNotActive>1,7</daysDisplayNotActive>
>         <displayOnTime>10:30</displayOnTime>
>         <displayOnDuration>06:05</displayOnDuration>
>         <displayIdleTimeout>00:05</displayIdleTimeout>
>         <webAccess>1</webAccess>
>         <spanToPCPort>1</spanToPCPort>
>         <loggingDisplay>1</loggingDisplay>
>         <loadServer></loadServer>
>     </vendorConfig>
>     <deviceSecurityMode>1</deviceSecurityMode>
>     <idleTimeout>0</idleTimeout>
>     <directoryURL></directoryURL>
>     <servicesURL>$SERVICESURL</servicesURL>
>     <idleURL></idleURL>
>     <messagesURL></messagesURL>
>     <proxyServerURL></proxyServerURL>
>     <dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
>     <dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
>     <dscpForCm2Dvce>96</dscpForCm2Dvce>
>     <transportLayerProtocol>2</transportLayerProtocol>
>     <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></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>g711ulaw</preferredCodec>
>        <dtmfAvtPayload>101</dtmfAvtPayload>
>        <dtmfDbLevel>3</dtmfDbLevel>
>        <dtmfOutofBand>avt</dtmfOutofBand>
>         <alwaysUsePrimeLine>false</alwaysUsePrimeLine>
>         <alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
>         <kpml>3</kpml>
>         <stutterMsgWaiting>1</stutterMsgWaiting>
>         <callStats>true</callStats>
>         <silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
>         <disableLocalSpeedDialConfig>true</disableLocalSpeedDialConfig>
>         <startMediaPort>10100</startMediaPort>
>         <stopMediaPort>10300</stopMediaPort>
>         <voipControlPort>5060</voipControlPort>
>         <dscpForAudio>184</dscpForAudio>
>         <ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
>         <dialTemplate>dialplan.xml</dialTemplate>
>         <phoneLabel>Cisc8865</phoneLabel>
>           <natReceivedProcessing>false</natReceivedProcessing>
>           <natEnabled>false</natEnabled>
>           <natAddress></natAddress>
>         <sipLines>
>           <line button="1">
>             <featureID>9</featureID>
>             <featureLabel>408</featureLabel>
>             <proxy></proxy>
>             <port>5060</port>
>             <name>408</name>
>             <displayName>GRace OKK</displayName>
>             <autoAnswer>
>               <autoAnswerEnabled>2</autoAnswerEnabled>
>             </autoAnswer>
>             <callWaiting>3</callWaiting>
>             <authName>408</authName>
>             <authPassword>BIG_4408</authPassword>
>             <sharedLine>false</sharedLine>
>             <messageWaitingLampPolicy>3</messageWaitingLampPolicy>
>             <messagesNumber>*98</messagesNumber>
>             <ringSettingIdle>4</ringSettingIdle>
>             <ringSettingActive>5</ringSettingActive>
>             <contact>408</contact>
>             <forwardCallInfoDisplay>
>               <callerName>true</callerName>
>               <callerNumber>false</callerNumber>
>               <redirectedNumber>false</redirectedNumber>
>               <dialedNumber>true</dialedNumber>
>             </forwardCallInfoDisplay>
>           </line>
>           <line button="2">
>           <featureID></featureID>
>           <featureLabel></featureLabel>
>           <speedDialNumber></speedDialNumber>
>           </line>
>         </sipLines>
>     </sipProfile>
>     <phoneServices>
>      <provisioning>2</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>PhoneBook</name>
>                 <url></url>
>                 <vendor></vendor>
>                 <version></version>
>         </phoneService>
>     </phoneServices>
> </device>


Thank you for the offer. I later got it to work, Although wouldn’t mind having a look at yours.

I have up to 100 contacts so I had to create multiple phone book directories, and link them to a menu.xml.

Good you found the solution, and so to hear the same as I did.
First a DirMenu.xml and then Sub directories from there.
Then I have not much to add.

However I red more people push the menu xml files in /var/www/html
and they should be in /tftboot folder, that’s designed for it.
If you did it like this:

in the SEPmac.xml

In this case FreePBX is on and Port: 84 is reserved for http acces into /tftpboot
so my files reside in: /tftpboot/phonebooks

Hmmm… this is interesting.

I will test this in my lab and see how it goes. Thank you.

One challenge I have, when dialing from phone B (jack) for example, to phone A (jill). On phone B, I dial 100 (the extension number for Jill) and on phone A, I receive the call with all the contact details of the caller (phone B) showing. But on phone B (who is the caller), I don’t see the contact details of the recipient “in-call” (Jill), even though it exists in my address book.
So it just displays the recipient’s extension number only.

Have you experienced this? Any thoughts on what could have caused it?

I am currently to busy to test with you.

I just tested quick with my SPA504G Sip firmware. It has no contacts, but does report the
name of the extention I dial on the screen. No sure why you don’t get that.

1 Like

I am available anytime you can.


Totally slipped my mind. What can I do for you to test?

I am confident that what you discribe is, working as intend.

So you’re phones know the names of users because of what you filled in at the Extensions tab,
and that can be overrulled by the: Subscriber Information > Display Name: XXXX that has been
filled in the webinterface/SEPmac from the phone.
At least that is how Cisco’s SPA504G and the 88xx know oneother.

You for sure don’t have to add users to you’re Adressbook because the phone won’t use it as a
CallerID lookup-source.