We would like to add and additional directory to our Cisco phones.
I have downloaded the SDK and we are looking at the details but some things are still a little unclear.
From what I understand an additional directory will have to sit on an external server and we can use AD as the data source.
How do I make the additional directory, the query fields, and the returned data display on the Cisco phones?
Would this be done via XML scripts that sit on the external server?
In CUCM Administration-->System-->Enterprise Parameters-->Phone URL Parameters-->URL Directories I can see that CUCM points to "http://ip address:8080/ccmcip/xmldirectory.jsp"
If I change the URL Directories field then it looks like CUCM can be pointed to my external server ...but then I am guessing that CUCM will not be able to see the built in Corp Directory, etc, anymore?
So there would have to be scripting to make the Corp Directory, etc, work as well?
Also will changing the URL Directories field cause anything to happenn with the Missed Call, Recieved Calls, and Placed Calls directories?
I also see how DirSync can be enabled on CUCM so it will get AD data, store it locally, and query against it.
If DirSync is enabled and I point the URL Directories field to my external server does CUCM stop querying the AD data locally?
I've got this partially working. I can get the Personal Address book from CallManager with no problem. I get "page not found" when selecting Corporate Directory. I copied the localizeddirectory.asp with a new name, updated the xml doc to reflect this new file name and only change the 5 Variables listed int the .asp file to point to my local AD server (var ldapserver, var ldapsearchbase, etc...). Did you change anyting else in the .asp page to get this thing to work? Funny thing is that my External Web server, my phone and the AD server are firewall seperated and I don't see any connection attempts from either the Phone or the Web Server for LDAP...
My earlier question about the "dictionary.asp" file comes from the .asp file, when opened with Notepad, has a reference in the beginning stating something about copying the dictionary files from CallManager to the External Web server...
Thanks, this post has been a great help. I am looking to get a little more information returned. In my search results I would like to get back the name, the number, and the department. My problem is that I can't seem to figure out how to get my listing back with 3 lines of infor instead of just 2.
the number of lines in a standard directory is controlled by the length of the string you're displaying (and there's a limit to how many characters you can display).. if you have long names and long internal extensions you might run into a cutoff problem if you're trying to add more information.
If you want a really flexible directory you'll have to go outside the directories menu and create a regular ip phone service.. there you are free to use different GUI elements... e.g. I've done directories using a CiscoIPPhoneMenu and list results using that.. I list whatever information fits into the character limit for a menu item, then I have a dial (dials the default number for the user.. if available the office number, then the cell and if not available the personal number) softkey and details softkey - the latter gets you to a detail page that shows whatever info the customer wants displayed including information like department, and a list of all phone numbers found (I usually query another directory than ccm or return a combined search result from ccm and another directory.. hence the possibilty for more numbers) and have softkeys to dial the different numbers (since they're listed in text you cannot select one).
Are you refering to me? I do all my work with JSPs, I have my own custom search libraries that I reference as well as my own library to write the CiscoIPPhone Elements - so while you see me iterating through the results and might get an idea of what I'm doing with my CiscoIpPhone lib I'm not sure how telling the whole thing is (and I cannot post everything.. a snippet of the jsp would be all).
If you're interested though I can just save a couple pages of the output when I connect to the customer the next time so you see the pages my service returns (input, results, details).
What (programming) language do you speak? Though even if I give you a frontend page.. I have complete separation between presentation and search logic.. my jsp pages just contain presentation logic (gather parameters, ask backend to perform the search, list search results) and I cannot give out backend code (for one I have base classes and project specific classes that have the customer name in them.. and customers don't pay for sourcecode access and would feel more than slightly miffed if we shared the code with third parties but not with the guys that paid us to write the code).
But the principle is always the same.. CiscoIPPhoneInput with 2-3 input parameters (usually first and last name, and depending on the customer location or company name), then perform the search and get a vector of my DirectoryEntry class, then iterate through them and generate a CiscoIpPhoneMenu with MenuItems (until you hit the maximum number of allowed items on the page.. or unless you run out of items) or a CiscoIpPhoneDirectory. If it's CiscoIpPhoneMenu it depends on the customer what happens if an item is selected.. default is call the number but there's a call softkey as well (adds a query string action=call to the url).. depending on customer there can be a details softkey which returns a CiscoIpPhoneText items listing all the numbers and a softkey per number... so you could e.g. have 3 softkeys
and depending on which you press, the appropriate number is called (naturally those buttons are only there if the corresponding number is).. there can also be more info about the directory entry e.g. company, location, etc. I even have a directory where the DirectoryItem contains a PNG image.. in that case the details page generates a PNG image composited of a fixed background, the person's image and then I "write" the name number etc onto the background using standard AWT mechanisms for drawing, then save the file to the webserver and return a CiscoIpPhoneImageFile object.
If you are asking me, I do not speak any "programmer" language. All I'm looking for is a way to have an external server perform a search of the Active Directory by OU and provide those results back to the phone...The directory1.asp file that is loaded on my external Web server has the applicable variables set for the AD, but I get "page not found" on the phone when hitting button 5 for "corporate directory". Has anyone gotten this proposal to work?
Yes, I got it to work. I posted a response to this thread on Sept 11, 2008 with the details.
What url are you using?
What happens when you try to access the url with a PC web browser?
Here's my topology:
External Web Server: 10.96.0.53
AD Server: 10.32.0.21 with domain "test.local". OU for Users = "Test Customers". User for AD login = CUCM in "Test Service Accounts"
the Directory1.xml file has this:
The Directory1.asp file has the following Variables set and nothing else changed...
var ldapserver = "10.32.0.21";
var ldapsearchbase = "OU=Test Customers,DC=test,DC=local";
var ldapport = "389";
var ldapuserid = "CN=CUCM,OU=Test Service Accts,DC=test,DC=local";
var ldappassword = "test";
Any thoughts would be GREATLY appreciated...
Does the external webserver have the Cisco IP Phone Services Software Development Kit (SDK) installed?
so what happens if you enter the url in a web browser?
check if the virtual directory CiscoIPServices exists in IIS
I get "page cannot be found" with HTTP error 404.
The Directory "CiscoIPServices" does exist under IIS->Web Sites->Default Web Site. When I expand the Directory I see all the folders that SDK created and when expanding the LocalizedDirectory folder I see my files there.