CUCM 6.1 - Adding an additonal directory?

Unanswered Question
Sep 5th, 2008

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 have this problem too.
0 votes
  • 1
  • 2
  • 3
  • 4
  • 5
Overall Rating: 5 (4 ratings)
Loading.
msabir Sun, 09/07/2008 - 07:02

Even if you change the directory URL to another URL, the built in directories (Misses calls, Palced calls, etc.), still show up on the phone.

Yes, you can set up an additional server (i.e Tomcat) and use AD as data source.

phretbored Mon, 09/08/2008 - 09:29

Thank you for the reply.

So your response is consistent with what I had believed...that the built in directories Missed Calls, Placed Calls, etc, would not be affected by changing the URL DIRECTORIES...but I wanted to double check.

What about the Corporate Directory?

Is this affected when I change URL DIRECTORIES?

I am working on the very same thing today with CUCM 6.0.

I have been able to get the CUCM server to query AD using the LocalizedDirectory.asp URL. Works well.

However, I have found that when I change the Directory URL on a phone, I lose the Corporate Directory and Personal Address book options for the particular phone.

I have been able to keep the corporate directory and personal address book by creating a phone service with the LocalizedDirectory URL.

My question is this...Can I replace the Corporate directory with the LocalizedDirectory URL but keep the Personal Address book?

I am setting up a managed / hosted environment and do not want users to see the CUCM corporate directory.

phretbored Tue, 09/09/2008 - 11:52

We just tested this today and got it working.

We changed the URL Directories in CUCM to point to our external server XML.

That external XML will display a new item called Mobile Directory on the Cisco phones so we can now search for and auto dial cell phone numbers.

Also in the external XML you just need to point back to the default URL Directories "http://ipaddress:8080/ccmcip/xmldirectory.jsp" and the Cisco phones will use the local CUCM Corp Directory the same as before.

(I believe this is indicated in the SDK examples/notes so I should have realized this early on)

We decided not to enable DirSync on our CUCM at this time but if you enable DirSync then the result should be the same...the external XML will point back to CUCM and CUCM will search the AD data stored locally for Corp Directory.

Do you know if there is a way to get the personal address book and the external server xml without the Corporate directory.

We will be hosting several customers on the same cluster and do not want them to be able to view the CUCM corporate directory. We do want each user to have the personal address book and fastdials.

msabir Tue, 09/09/2008 - 13:25

If you just change the default directory URL to point to an external URL which serves XML, it will remove the corp directory but keep the personal directories (misses calls, placed calls, etc.)

In your external app, you can even give user access to only their corporate directories based on a criteria -- i.e if IP or extension starts with a certain pattern, display this directory, otherwise display that one. (just a small custom app to accomplish this).

Sascha Monteiro Wed, 09/10/2008 - 11:12

you should be able to just add the link to the personal address book in your external directory

you can find the url by going to the old directory url with a webbrowser

The URL for the personal directory is http://x.x.x.x/ccmpd where x.x.x.x is the CUCM ip address.

Basically, I want to have my cake and eat it too.

I would like to be able to Search entries in Active Directory with the Localized Directory script from the IP Phone SDK AND have access to the personal address book.

If I add the link to the personal directory in the External Directory field, I can't use the LocalizedDirectory script for my Corporate Directory and vice versa....

Unless I am completely missing something here, I can't have both without editing the Localized Directory script to add the Personal Address Book options.

The URL I enter in the External Directory field within the phone configuration takes over the default Corporate Directory / Personal Directory options in the Directories menu on the phone. If enter the Personal Directory URL, I only get the Personal Directory option along with Missed Calls, Recieved Calls and Placed Calls when I press the Directories button.

Sascha Monteiro Wed, 09/10/2008 - 14:01

Well,

The url to your external directory will point to a menu, right?

In that page, you need to add another menuitem to link the personal address book so that the complete output will look like;

Select a directory

Personal Directory

http://192.168.216.10:8080/ccmpd/pdCheckLogin.do?name=undefined

Corporate Directory

http://10.10.10.10/myexternaldirectory.jsp

I haven't looked at the sdk localizeddirectory, you might have to tweak it, and it is probably asp..??

Brilliant!

This is exactly what I was looking for!

I created an xml file for customer1 in C:\CiscoIPServices\ASP\LocalizedDirectory\.

Here is my topology.

CUCM: 10.168.10.80

Microsoft AD: 10.168.10.82

I have two files for customer1:

C:\CiscoIPServices\ASP\LocalizedDirectory\customer1.asp

C:\CiscoIPServices\ASP\LocalizedDirectory\customer1.xml

I enter the following URL in the external directory on the customer's phone:

http://10.168.10.82/CiscoIPServices/LocalizedDirectory/customer1.xml

Here are the contents of my XML file:

Select a directory

Personal Directory

http://10.168.10.80:8080/ccmpd/pdCheckLogin.do?name=undefined

Corporate Directory

http://10.168.10.82/CiscoIPServices/LocalizedDirectory/customer1.asp?action=search

Big thanks to s.monteiro!!

Now, I have not tested this, but I imagine you could create several connections to different LDAP databases with the LocalizedDirectory Script and edit the xml file to query several directories by adding menu items to the above xml configuration.

Example:

Select a directory

Personal Directory

http://10.168.10.80:8080/ccmpd/pdCheckLogin.do?name=undefined

Directory 1

http://10.168.10.82/CiscoIPServices/LocalizedDirectory/directory1.asp?action=search

Directory 2

http://10.168.10.82/CiscoIPServices/LocalizedDirectory/directory2.asp?action=search

Corporate Directory

http://10.168.10.80:8080/ccmcip/xmldirectoryinput.jsp

phretbored Thu, 09/11/2008 - 08:57

nice!

i have to say it is really great to have a cell phone directory available in the Cisco phones.

d.teal Thu, 09/25/2008 - 11:47

Would you be willing to post you're directory1.asp file?

Thanks.

Kevin Porter Fri, 01/02/2009 - 13:29

The file metions copying the "dictionary.asp" file to the external server, did anyone find those in CUCM Version 6?

Kevin Porter Fri, 01/02/2009 - 16:34

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...

bcorbet2004 Thu, 09/25/2008 - 13:04

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.

Any ideas?

stephan.steiner Thu, 09/25/2008 - 23:20

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).

bcorbet2004 Fri, 09/26/2008 - 05:25

That is exactly what I am trying to accomplish. Would you mind posting your pages that you are using for this IP service?

Thanks

BC

stephan.steiner Fri, 09/26/2008 - 07:38

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).

stephan.steiner Mon, 01/05/2009 - 01:19

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

office

home

cell

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.

Kevin Porter Mon, 01/05/2009 - 07:50

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?

Kevin Porter Mon, 01/05/2009 - 08:10

Here's my topology:

CUCM: 10.96.0.40

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:

Select a directory

Personal Directory

http://10.96.0.40:8080/ccmpd/pdCheckLogin.do?name=undefined

Corporate Directory

http://10.96.0.53/CiscoIPServices/LocalizedDirectory/directory1.asp?action=search

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...

Kevin Porter Mon, 01/05/2009 - 12:13

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.

Kevin Porter Mon, 01/05/2009 - 13:08

I'm sorry but were do you "enable Browse for Testing"?

Right now, just hitting that wbe site comes back with HTTP error 403 ("Website Declined to show this webpage"

Kevin Porter Mon, 01/05/2009 - 13:17

All I see when Right-Clicking the VD is "Browse". Clicked that and got the HTTP Error 403

Sascha Monteiro Mon, 01/05/2009 - 13:19

sorry, meant properties, then enable Directory Browsing, same screen where you verified the execute permissions...

Kevin Porter Mon, 01/05/2009 - 13:24

Got it. I can drill all the way down to the .asp files, then HTTP Error 404

Sascha Monteiro Mon, 01/05/2009 - 13:34

on the VD - properties, "remove" the application, then "create" it again and make sure execute permissions is set to scripts only.

then restart iis (commandline: iisreset /timeout:0 )

Kevin Porter Mon, 01/05/2009 - 13:46

Done, same result, HTTP Error 404. The .xml files work perfectly, but the .asp pages don't. I see in the .asp file the following reference: var fileName = "c:\\ciscowebs\\ipphoneservices\\ccmcip\\locales\\" + locale + "\\ccmcipdictionary.asp";

which I know does not exist on CUCM Version 6.1 and 7.0, could this be part of the problem?

Sascha Monteiro Mon, 01/05/2009 - 15:05

could well be, try to get those files from a cucm4 install and copy them to that path on your webserver

Kevin Porter Mon, 01/05/2009 - 16:07

No joy. I can't "browse" through IIS and open that dictionary.asp file either. I could when it was on the CallManager 4.1 server...

Kevin Porter Tue, 01/06/2009 - 06:53

WOW, 1 day of chasing the IIS 6.0 permissions that PROHIBIT Active Server Pages by default...

Anyway, I now can browse to the directory1.asp page (but ONLY after I copied a "ccmipdictionary.asp" page from CCM 4.1 to the LocalizedDirectory folder for IIS.)

The Phones are now getting further, to the point that when I hit the "submit" button on the phone, I see the External Web Server hit my AD box for info on port 389, but the Phone shows: "XML Error[4] Parse Error"

Balasubramanian n Mon, 10/15/2012 - 02:11

Hi , Can you please provide "ccmipdictionary.asp" locale which is copied from CCM 4.1 I am also looking for this, but i dont have CCM 4.1.

stephan.steiner Wed, 01/07/2009 - 08:35

bah.. forum messed up display and didn't show that there was already a solution.

Anyway, now comes the part where you launch the page in the browser and simulate phone input through the browser. Since I'm not using that custom dir I'll refer to the default enterprise directory on CCM6 (http://10.145.206.141:8080/ccmcip/xmldirectoryinput.jsp). If you launch that on the phone you can enter the first name, last name and number.

first name is

First Name

f

A

And we have http://10.145.206.141:8080/ccmcip/xmldirectorylist.jsp

So, to search for first name = ste you'd now call

http://10.145.206.141:8080/ccmcip/xmldirectorylist.jsp?f=ste

(or for last name = ste it would be

http://10.145.206.141:8080/ccmcip/xmldirectorylist.jsp?l=ste

or first and last name

http://10.145.206.141:8080/ccmcip/xmldirectorylist.jsp?l=ste&f=ste

You can see, the query string parameter is named as defined in the QueryStringParam tag for the appropriate InputItem (each Input Item represents one line where you can type something on screen), and to the right of the equal sign you put the value.

So that way you can navigate any app using your browser. If you're using Internet Exploder, you may have to look at the page source since it craps out when using non 7bit ASCII characters (äöü and the likes).

Now basically what is interesting here is the response you get to your query.. is it valid XML (you can save the resulting source code as xml file and then open it.. if it's renderer properly in your browser that's promising) and if so, does it correspond to the schema (e.g. max length of title, prompt and menu item = 32 chars)

Kevin Porter Thu, 01/08/2009 - 13:05

Can you open a browser to the xml page and to the .asp page(make sure that ?action=search is in the URL)? If not, Check IIS and make sure that Active Server Pages are not set to prohibited.

Kevin Porter Thu, 01/08/2009 - 13:42

Sounds like the phone is passing paramters that don't match what is in the asp page. Are you doing a search by name or extension, if so, try a blank search and see if it will pull back something...When you browse to the .asp page with ?action search, do you see the Input items for First Name, Last Name and Number?

michaeljbyrne Thu, 01/08/2009 - 13:48

Any search off the phone generates the xml error. Yes when we browsethe the.asp page we see the input items.

We are doing this as a service and not to replace the corp directory.just an FYI if that makes a a difference

Sascha Monteiro Thu, 01/08/2009 - 14:21

can you post the output of the search from a web browser, also maybe include the page info like headers/meta

Actions

This Discussion