Cisco Support Community
cancel
Showing results for 
Search instead for 
Did you mean: 
New Member

Programitically Update Unity 3.x

Is there a way to programitically reset the greeting and pin in unity 3.x . I want a triggered event to fire from an external db and reset the pin and greeting.

Basically is there a way in, where change will replicate.

I see in future 4.x there is a utility to do such a thing.

7 REPLIES
Cisco Employee

Re: Programitically Update Unity 3.x

Resetting the PIN is one thing, but I'm not sure what you mean by resetting the greeting... that sounds like it could be trickier than you may be thinking.

Short story, in 3.x and earlier I wont help folks do programatic administration of Unity (I get lots and lots of requests for such assistance). In 4.0(1) and later I will and, in fact, will be publishing sample code on AnswerMonkey.net for how to do many of the more common items remotely from off box. A group of us are also working on a book that includes a section on programatic administration of Unity.

There's been lots of work done to make the off box programatic access via SQL store procs and views work smoothly in 4.0(1) that just isn't there in 3.x - you have to jump through some moderately ugly hoops and in some cases use the proprietary DOH interface to do some things, dance with COM DLLs and all that good stuff. Messy, difficult to support, difficult to document - I just don't want to go there. For 4.0(1) and later I'll start trying to help with items along these lines as they come up.

New Member

Re: Programitically Update Unity 3.x

I have read the system architure for 4.x and saw you could do some direct database access. As for the question about greeting, If a user has recorded a greeting, I want to remove it, and go to a standard system prompt.

What this is basically for is a Higher Education installation, where if a student changes a room we want to reset all voice mail box properties that he/she could have extablished. And prepare the mailbox for a new resident.

Cisco Employee

Re: Programitically Update Unity 3.x

I'm doing something very similiar for the Hospitality/PMS integration - when a guest checks out I need to reset the mailbox and "archive" it for 72 hours (i.e. so if they got a message they can get to it after leaving the hotel a few days later - state law in some places).

You'd probably want to set the "First time enrollment" flag, clear the voice name, reset the "last access time" and probably a few other little tidbits. Easy enough to do in 4.0, perhaps I'll make this one of the programming examples that I post code for here in the next couple months.

The one thing here, though, is what about the messages in the mailbox? There's no easy way to go get rid of them without dancing with MAPI (or at least CDO) which can get moderately to heavily ugly depending on what you're doing. Perhaps an easier approach would be changing the DTMFAccessID on that box (the primary extension number for the subscriber), leave it in the system as an "archive" for a while and create a new mailbox with all clean settings. Then you can worry about sweeping through and removing the AD accounts/mailboxes for the moved users as a seperate task.

Just a thought...

New Member

Re: Programitically Update Unity 3.x

I was going to use CDO to dump the messages in the mailbox. I can post the code if it is useful.

Basically enumurate all the messages and loop through deleting them.

What we decided to do is use the exchange store to house voice mail but users only have access to their messages through the phone. The rooms these boxes are attached to, only use exchaneg as a storage area, it is not trueley unified messaging, so the active directory account is meaningless and can even be deleted and re-created on the fly if that helps.

I do like your idea about "archiving" the mailbox for a few days, how would Unity handel this. Is it safe to write directly to the Untiy Database using sql, to set/reset the flags you had talked about.

If I change the primary extension in Active Directory will Unity know better and simply reset all attribs, on that account. Looked like 4.0 woudl but 3.x had some issues, namely it "forgets" to get rid of them all.

I am just alittle early, aren't I. If I could wait for 4.0 this would be a snap. If it has to wait, it will wait until that release.

Cisco Employee

Re: Programitically Update Unity 3.x

Yeah, writing directly through to SQL using stored procedures and doing ad hoc queries using defined views is going to be how you administer Unity programatically in 4.0. Down the road snappy XML/SOAP interfaces will be layered on top but for my money I'll take a direct SQL connection any day. We have a data dictionary just about done and I'm working now on documenting the most useful stored procedures. You can take a sneak peak at the data dictionary with the CUDLE (Cisco Unity Data Link Explorer) tool on AnswerMonkey.net here:

http://www.answermonkey.net/App_CUDLE.htm

If it were me I'd work out a scheme where when you moved someone the extension number would get changed to something like "day of year"+X where X is the original extension and the alias gets changed to Alias+date. Then you force Unity to synch that information to the directory so the AD account's alias now matches and then create a new account from scratch with the old extension number and a new alias. This would make it easy to keep track of which accounts are archived - you could even get fancy with a "seep" tool that went through and removed AD accounts that are older than X days or the like.

In 3.1(5) the triggers to clean up the database when an AD account is deleted out from under us are pretty clean - I've tried this numerous times myself and the directory monitors pick up the missing account and take care of business consistently. Earlier versions of 3.x had problems with the triggers kicking in properly here and it would leave all or parts of the subscriber data hanging around in the database which, of course, caused headaches when you wanted to import someone with the same extesnion and/or alias again.

You can also delete the account via SQL directly in Unity 4.0 but that will only clean the Unity properties off the AD account and all their SQL data, it will not remove the AD account itself. None of the Unity interfaces will do this for you - that's so we're not even on the short list of suspects when an account goes missing (although you'd be suprised how many times folks blame us for such things anyway). You'll have to do that directly in AD yourself if you want. I used the ADO interface into AD, makes doing such things pretty easy as long as you're running under an account that has rights to do so. In 3.x if you delete a user in SQL it does not clean the Unity properties off that object in the directory for you, which is a major headache to have to deal with...

New Member

Re: Programitically Update Unity 3.x

Given what has been said, is there anyway to automate the usage of the bulkedit utility (ie, build a csv file on the fly and run the program on a timed basis)

Cisco Employee

Re: Programitically Update Unity 3.x

ugh... that's actually a tall order. The CSV file for the user selection is a snap but a file listing all possible properties that can be changed on the subscriber/handler is ugly indeed. Lots of properties, lots of valid value checking and all that good stuff. That'd be a pretty beefy project to take on, I don't think I can step up for that one at the moment. Too much other stuff in the air...

79
Views
0
Helpful
7
Replies
CreatePlease to create content