Error: I'm afraid this is the first I've heard of a "blog;_CCNA" flavoured Blosxom. Try dropping the "/+blog;_CCNA" bit from the end of the URL.
Cisco Log Decoding
On the Cisco-voip mailing list, there was reference to a couple of sites that provide log decoders for Callmanger and IOS:
They aren't necessarily TAC supported, but they may help to weed through and make sense of what would be otherwise painful troubleshooting. #
Asterisk Cisco CallManager Voicemail Integration
Asterisk Cisco CallManager Voicemail Integration #
Recording Calls in a Cisco Environment
In one of today's Cisco listserves, there were a few suggestions for Call Recording software:
Internet Based 911
For those of you setting up IP based telephone solutions and are needing to set up E911 connections, there are a number of ways to do this.
The typical way to do this is to ensure that analog or digital lines are available at each location being serviced. Then be sure to route all calls originating from those specific geographical areas are sent out the nearest POTS (Plain Old Telephone Service) line, ie, analog or digital line.
If this isn't possible, for one reason or another, there is an alternate way of doing this. There are internet based E911 services available. According to Robert Kulagows, you "setup something like a SIP trunk and route e911 calls to them. You'd tell them which DIDs are located in which city, and allow them to handle the 911 call and send it to the correct PSAP."
One provider who can do this is 9-1-1 Enable. According to their site, they are in the Pulver 100 and the Internet Telephony 2006 Product of the Year. #
Writing Callmanager Call Detail Records to Excel Spreadsheet
In an earlier article, I described how to access the Cisco Callmanager CDR tables to obtain billing records through the use of the Sybase DBI drivers for Perl. The database needs to be placed into "mixed mode" for this type of thing to work.
I've created two perl modules to make use of this technique: cdr2file.pm and billing2file.pm.
cdr2file.pm takes as input three parameters: an extension, a starting date, and an ending date. It creates an Excel spreadsheet using a temporary file name, which allows multiple requests to be processed simultaneously. The spreadsheet contains four worksheets: a list of inbound calls, a list of local calls, a list of long distance calls, and a list of internationally placed calls. The selection is based upon four digit extensions and the North American Dialling plan. The duration of each call is included. Because both the 'Original Called' and the 'Final Called' fields are included, one can determine which calls ended up going to voicemail or transferred elsewhere.
The other module, billing2file.pm, takes as input a starting date and an ending date. For all outbound calls placed within that date range, a summary spreadsheet is created. The first worksheet contains a summary of call duration by user with the following fields: Extension Number, Name of the Phone, Total Duration in Seconds, Total Duration in Minutes. Each line contains a hyper link to a worksheet containing the actuall call details for that extension. On the detail worksheet for each user, the following details are provided: Date the call was placed, extension number originating the call, the original called number, the duration in seconds for the call, the phone identifier, and the phone description. This spreadsheet makes it convenient to produce monthly billing reports by user. For large companies, this may not be suitable as a spreadsheet may not be able to handle enough rows or worksheets (a limitation of Excel).
By creating suitable web pages, say through mod_perl or mason, members of the accounting department have direct, easy, live access to the Callmanager Call Detail Records in a ready to use format. #
Cisco Callmanager Call Detail Records (CDR) with Perl
It is possible to obtain Cisco Callmanager Call Detail Records through Perl. However, there are a few prepatory steps to make it work.
Because Cisco recommends that Callmanager not be a member of a domain, it isn't possible to use flow through authentication to access the SQL Database server when on a host other than Callmanager. Cisco therefore suggests that SQL Authentication be changed to 'Mixed Mode'. This can be accomplished by starting sQL Enterprise Manager on the Callmanager Server containing the CDRs (there should only be one server in the cluster with CDR responsibilites), right click on the server name and select properties, select the security tab, and choose 'SQL Server and Windows' for authentication. Callmanager will need to be restarted.
To connect to the database tables, one could code the sa username and password into the queries, but that probably isn't a very good thing. Instead, I'd suggest creating a new login, call it cdr_reader, and assign it to the CDR database with public and db_owner roles.
Perl DBD drivers for Sybase can be used for connecting to the SQL 2000 database tables in Callmanager 3.3 and 4.X. For those who aren't using Debian, steps outlined at Linux Journal and FreeTDS: Tabular Data Stream.
For Debian users, obtaining the package is as simple as running 'apt-get install libdbd-sybase-perl' from unstable or testing. As of the time of this writing, I don't think Stable has the most recent and appropriate version.
I then modified the example from a Perl HowTo slightly to give it a try:
#!/usr/bin/perl
#-- open database
use DBI;
my $dbh = DBI->connect('DBI:Sybase:server=10.10.10.10','cdr_reader','password') or die $DBI::errstr;
$dbh->do("use CDR");
#-- sample query
my $rows = $dbh->selectrow_array("SELECT COUNT(*) FROM CallDetailRecord");
print "CDR has $rows records\n" if ( defined $rows );
That turned out to be quite straightforward. I'll publish another article with some perl queries and summaries I've used. #
NTP for Callmanager
Since Cisco generally recommends that the Callmanager server not be a member of an Active Directory domain, is is unable to make use of the time distribution protocols normally available to member servers and computers. As background, I think Cisco's stance is understandable, and reflects the quantity of testing Cisco performs with each upgrade and service pack install. If a server is a member of a domain, it is entirely possible that registry entries, dlls, or applications coulds be modified through Group Policies that may affect the reliable functioning of the phone server.
As an alternative to Microsoft's time distribution protocol, the industry standard NTP (Network Time Protocol) can be used. The Callmanager installation automatically installs an NTP client, but does not turn it on.
To turn it on is quite simple. Obtain an address of an NTP server, either on your network or an external one. Using the one that drives the Active Directory domain controllors would be best. As a last resort, an address from pool.ntp.org could be used.
Edit the file C:\WINNT\system32\drivers\etc\ntp.conf and apply the ip address to the server line. Save the file. Bring up Microsoft's Services management application. Set the Network Time Protocol service to Automatic and start it up.
The Event Log will record startup and synchronization messages for your reference.
Be aware that with each Callmanager upgrade you perform, the service may be turned back to Manual and the ntp.conf file may be overwritten. You may want to make a backup of the configuration file so you can easily re-apply after your next upgrade. #