Tuesday, March 29, 2016

Cisco SIP IP Phone On Avaya Session Manager

Cisco SIP IP Phone to Avaya

What you are about to read took me several weeks to compile the code together, so several of the file structures are missing due to what was needed in my environment. This may not work for what you are looking for, but this will hopefully get you up and running with a working Cisco SIP IP Phone connected to Avaya.

First things first, things you will need:

·         TFTPD32 – I used this for the ease of use, you can use whatever you are comfortable with for TFTP.
·         Any text editor to edit the code – I prefer Notepad++
·         You will need the IP of the SIP server domain so that the phone can register to the Avaya Session Manager. Once you have that, go to www.cisco.com and download the latest SIP firmware (ie. 7942 –firmware I used was 9.4(2)SR1). Unzip the file and place them into the root directory of the TFTP path (ie. C:\TFTP)
·         DHCP Server – You will need to have the option setup for the Cisco phones to pick up the files and TFTP path. The option for a Windows server will be option 150, you can give it any name and description. When you set it up, be sure to point the IP to the IP of your TFTP server.
·         Since I don’t like coming across sites that have linked files that may have been removed, I have the base code that I have built out for the 7942 below.

Before you can start to make changes to the config file, you need to start by creating your SIP extension in your Avaya System Manager. I am going to assume that you have already built the SIP trunk to Avaya Call Manager as well as everything that goes along with that. If you are here just for setting up the Cisco phone you can go ahead and scroll down, don’t worry, you won’t hurt my feelings. I may go over setting that up in a future post, but this post is just focused on getting a Cisco IP converted to SIP and setup on Avaya PBX. The Avaya version we have is 6.3, so your options may not be the same. Let’s get started…

Setting Up Avaya SIP Endpoint In Avaya Session Manager
  1.  Login to and on the left side under Users click on User Management
  2.  Next, click on Mange Users
  3.  On the User Management screen click on the New button to add a user
  4. Then, you will need to fill out the information for the phone. This will include:
    1. Last Name
    2.  First Name
    3.  Login Name which will be the extension followed by the SIP server (XXXXX@sip.mydomain.org)
    4.  Password to (This one needs to be letters and numbers)
    5. Localized Display Name - (This will be the display name for outbound calling)
    6.  Endpoint Display Name - (This will be the display name for outbound calling)
    7. Commit & Continue button at the top right or bottom left of the page.  
  5. Once that is saved, click on the Communication Profile tab at the top of the page.
  6. You will need to make the following changes on this page:
    1. Communication Profile Password – 123456 (This can be any string of digits, six minimum)
    2. Under Communication Address click the New button.
      1. Type will be Avaya SIP
      2. Fully Quallified Address will be the Extension Number @ click the dropdown to your SIP domain name.
    3. Check the box for Session Manager Profile
      1. SIP Registration:
        1. Click the dropdown for Primary Session Manager and choose your primary one
        2.  If you have a secondary, you can fill this out too
        3.  ***Max. Simultaneous Devices – This dropdown is used to have a SIP device used on more than one device. One thing I learned with this, this one is a lifesaver when you move an entire office over to SIP and the receptionist needs to also answer the CEOs phone. Use this dropdown and change the CEOs phone line to Max of 2, and add the second line to her phone and you have just made both of them happy J
        4. Application Sequences – Choose your SIP Origination and Termination links that you created the Session Manager to accept calls on behalf of the user 
    4. Call Routing Settings – Choose the Home Location so that 911 calls will be routed properly
    5. Check the box for CM Endpoint Profile
      1. Select the appropriate Avaya Call Manager you want this extension to ride on
      2. The Profile Type will be Endpoint
      3. The Extension will be a new, unused one. If you are porting a number over, you must remove it from Avaya before you can add it here.
      4.  The Template will be 9630SIP.
      5. The Security Code will be any six digits
      6. Port, you can leave blank since the system will configure it for you.
      7. Voice Mail Number is where you will enter the extension of your voice mail system should you have one.
    6. Click the Commit & Continue button
    7. Scroll to the CM Endpoint Profile section and click the Endpoint Editor button next to the extension.
    8. Enter the SIP trunk number that these phones will be riding over.
    9. Click on the Feature Options tab at the top
    10. Make changes to:
      1. MWI Server User Type – change this to: sip-adjunct (This will allow the red light to show up on the Cisco phone when there is a voicemail to the extension)
    11. Click on the Site Data tab at the top
    12. Make changes to: ( You can use this to locate the phone for better ease in the future
      1. Floor
      2. Building
    13. Now, click the Done button at the top right or bottom right of the page.
    14. Then, click the Commit button at the top right or bottom right of the page to commit the changes made.

Changes to the XML Configuration File

Now that we have the SIP extension done for the phone, let’s make the changes to the config file for the phone. Again, since I don’t like coming across sites that have linked files that may have been removed, I have the base code that I have built out for the 7942 below. Copy the below config, paste it into your flavor of text editor and make the changes as you follow along. I have made notes next to the important spots to be changed using the < !-- --> annotation:

 <device>  
      <deviceProtocol>SIP</deviceProtocol> <!--Set the device to SIP-->  
      <devicePool>  
           <dateTimeSetting>  
                <dateTemplate>M/D/YA</dateTemplate>  
                <timeZone>Central Standard/Daylight Time</timeZone> <!--Time Zone-->  
                <ntps>  
                     <ntp priority="0">  
                          <name>192.168.10.100</name> <!--NTP Server IP Address-->  
                          <ntpMode>Unicast</ntpMode>  
                     </ntp>  
                </ntps>  
           </dateTimeSetting>  
           <callManagerGroup>  
                <members>  
                     <member priority="0">  
                          <callManager>  
                               <ports>  
                                    <ethernetPhonePort>2000</ethernetPhonePort>  
                                    <sipPort>5060</sipPort>  
                               </ports>  
                               <processNodeName>192.168.0.1</processNodeName> <!--SIP Server IP Address-->  
                          </callManager>  
                     </member>  
                </members>  
           </callManagerGroup>  
      </devicePool>  
      <sipProfile>  
           <sipProxies>  
                <registerWithProxy>true</registerWithProxy>   
           </sipProxies>  
           <sipCallFeatures>  
                <cnfJoinEnabled>true</cnfJoinEnabled>   
                <localCfwdEnable>true</localCfwdEnable>   
                <callForwardURI>service-uri-cfwdall</callForwardURI>   
                <callPickupURI>service-uri-pickup</callPickupURI>  
                <callPickupGroupURI>service-uri-gpickup</callPickupGroupURI>  
                <callHoldRingback>2</callHoldRingback>  
                <semiAttendedTransfer>true</semiAttendedTransfer>  
                <anonymousCallBlock>2</anonymousCallBlock>  
                <callerIdBlocking>0</callerIdBlocking>  
                <dndControl>2</dndControl>  
                <remoteCcEnable>true</remoteCcEnable>  
           </sipCallFeatures>  
           <sipStack>  
                <sipInviteRetx>6</sipInviteRetx>  
                <sipRetx>6</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>   
           </sipStack>  
           <sipLines>  
                <line button="1">   
                     <featureID>9</featureID>   
                     <featureLabel>XXXXX XXXXX</featureLabel> <!--Name To Be Displayed on the phone-->  
                     <proxy>USECALLMANAGER</proxy>   
                     <processNodeName>XXX.XXX.XXX.XXX</processNodeName> <!--SIP Server IP Address-->  
                     <port>5060</port>   
                     <name>XXXXX</name> <!--Extension-->  
                     <displayName>XXXXX</displayName> <!--Extension-->  
                     <autoAnswer>  
                          <autoAnswerEnabled>2</autoAnswerEnabled>   
                     </autoAnswer>  
                     <callWaiting>0</callWaiting>   
                     <authName>XXXXX</authName> <!--Extension-->  
                     <authPassword>XXXXXX</authPassword> <!--Communication Profile Password-->  
                     <sharedLine>false</sharedLine>  
                     <messageWaitingLampPolicy>1</messageWaitingLampPolicy>  
                     <messagesNumber>XXXXX</messagesNumber> <!--Voicemail Extension-->  
                     <ringSettingActive>5</ringSettingActive>  
                     <forwardCallInfoDisplay>  
                          <callerName>true</callerName>  
                          <callerNumber>true</callerNumber>  
                          <redirectedNumber>true</redirectedNumber>  
                          <dialedNumber>true</dialedNumber>  
                     </forwardCallInfoDisplay>  
                </line>  
           </sipLines>  
           <enableVad>true</enableVad>  
           <preferredCodec>g711alaw</preferredCodec>   
           <softKeyFile>softkeyDefault_kpml.xml</softKeyFile>   
           <dialTemplate>dialplan.xml</dialTemplate>   
           <kpml>1</kpml>  
           <phoneLabel>XXX-XXX-XXXX</phoneLabel> <!--Full Extension to be displayed on the top of the display-->  
           <stutterMsgWaiting>2</stutterMsgWaiting>  
           <disableLocalSpeedDialConfig>true</disableLocalSpeedDialConfig>  
           <dscpForAudio>184</dscpForAudio>  
           <dscpVideo>136</dscpVideo>  
      </sipProfile>  
      <commonProfile>  
           <phonePassword>cisco</phonePassword>   
           <backgroundImageAccess>true</backgroundImageAccess>   
           <callLogBlfEnabled>2</callLogBlfEnabled>  
      </commonProfile>  
      <loadInformation>SIP42.9-4-2SR1-1S</loadInformation> <!--Firmware version that the phone looks for at boot. This one is for the 7942-->  
      <vendorConfig>  
           <disableSpeaker>false</disableSpeaker>   
           <disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>  
           <ehookEnable>1</ehookEnable> <!--Allows Headset To Be Used-->  
           <videoCapability>1</videoCapability>  
           <webAccess>0</webAccess>  
      </vendorConfig>  
      <versionStamp>1143565489-a3cbf294-7526-4c29-8791-c4fce4ce4c37</versionStamp>  
      <userLocale>  
           <name>English_United_States</name>  
           <langCode>en</langCode>  
      </userLocale>  
      <networkLocale>United_States</networkLocale>  
      <networkLocaleInfo>  
           <name>United_States</name>  
      </networkLocaleInfo>  
      <authenticationURL></authenticationURL>  
      <directoryURL></directoryURL>  
      <servicesURL></servicesURL>  
      <dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>  
      <dscpForCm2Dvce>96</dscpForCm2Dvce>  
      <transportLayerProtocol>4</transportLayerProtocol>   
 </device>  

I’m going to break this part into sections and only touch on the areas that you will need to make the changes to.

Leave the Device Protocol as SIP since this is the protocol that we want the phone to pick up.

Let’s look in the Device Pool field first. Make the changes to the Date Template if the Month/Day/Year format does not fit your preference. The Time Zone field is where you will go to the template above and pick out the proper zone code for your area, otherwise the screen will revert to UTC. In the NTP field is where you will add an NTP IP address should you have an internal NTP server. If you don’t, there are several that are online that you can point these to. You don’t need to make changes to the next one, but it’s good to know what it is for. The < ethernetPhonePort > allows the Ethernet port on the back of the phone to pass data traffic, so that a PC can be plugged in if needed. The < sipPort > is the port that your SIP traffic will be passing over. The IP address of your Avaya Session Manager’s SIP trunk will go in the <
processNodeName > section. The < timeZone > filed is where you will need to enter the Time Zone Code exactly as it is written. Do not change any of the formatting (do not use an underscore for a space and do not change the caps where they are) as the time will revert to UTC. A few of the Time Zone Codes are:

  • Eastern Standard/Daylight Time
  • Central Standard/Daylight Time
  • Mountain Standard/Daylight Time
  • Pacific Standard/Daylight Time 

 <devicePool>  
      <dateTimeSetting>  
           <dateTemplate>M/D/YA</dateTemplate> <!--Format the Month/Day/Year-->  
           <timeZone>Central Standard/Daylight Time</timeZone> <!--Format to your Time Zone-->  
           <ntps>  
                <ntp priority="0">  
                     <name>192.168.1.254</name> <!--NTP Server IP Address-->  
                     <ntpMode>Unicast</ntpMode>  
                </ntp>  
           </ntps>  
      </dateTimeSetting>  
      <callManagerGroup>  
           <members>  
                <member priority="0">  
                     <callManager>  
                          <ports>  
                               <ethernetPhonePort>2000</ethernetPhonePort> <!--Allows the ethernet port on the back of the phone to be used to pass data.-->  
                               <sipPort>5060</sipPort> <!--Port to be used-->  
                          </ports>  
                          <processNodeName>192.168.1.10</processNodeName> <!--SIP Server IP Address-->  
                     </callManager>  
                </member>  
           </members>  
      </callManagerGroup>  
 </devicePool>  

Next, we will look at the SIP profile section. I’m going to break this into three sections, since this is a pretty big section. The configuration is the first major part that you need to change. The < featureLabel > will be the Name that will be displayed on the phone next to the button that will ring. The < processNodeName > is the same as before, it is the IP address of your Avaya Session Manager’s SIP trunk. This will be the same as before, as well, just named a little differently, it is the port that your SIP traffic will be passing over. The field is where an underlying extension field from what I can find on the web, I couldn’t find that this field is where it actually registered. I left it as five digits since every time I searched on the web I only found four digits in this field and wasn’t sure if our five-digit dialing would work, it does. The < authName > is the where the extension actually registers with the extension, this field should be the same as the field. The < authPassword > is the Communication Profile Password that was setup when you created the extension. This was the one that had to be a minimum of six digits. The < messagesNumber > field is where you would enter the voicemail extension to assign it to the Messages button on the Cisco phone. You can leave this blank if you don’t have voicemail or if you don’t want users to use this feature.

 <line button="1">   
      <featureID>9</featureID>   
      <featureLabel>MyPhone Label</featureLabel> <!--Name To Be Displayed on the phone-->  
      <proxy>USECALLMANAGER</proxy>   
      <processNodeName>192.168.1.10</processNodeName> <!--SIP Server IP Address-->  
      <port>5060</port> <!--Port to be used-->  
      <name>51234</name> <!--Extension-->  
      <displayName>51234</displayName> <!--Extension-->  
      <autoAnswer>  
           <autoAnswerEnabled>2</autoAnswerEnabled>   
      </autoAnswer>  
      <callWaiting>0</callWaiting>   
      <authName>51234</authName> <!--Extension-->  
      <authPassword>123456</authPassword> <!--Communication Profile Password-->  
      <sharedLine>false</sharedLine>  
      <messageWaitingLampPolicy>1</messageWaitingLampPolicy>  
      <messagesNumber>55555</messagesNumber> <!--Voicemail Extension-->  
      <ringSettingActive>5</ringSettingActive>  
      <forwardCallInfoDisplay>  
           <callerName>true</callerName>  
           <callerNumber>true</callerNumber>  
           <redirectedNumber>true</redirectedNumber>  
           <dialedNumber>true</dialedNumber>  
      </forwardCallInfoDisplay>  
 </line>  

Still within the < sipProfile > field, if you want to add a secondary line or have incorporated Cisco 7962 or 7975 IP Phone into the mix, you can add multiple lines. Copy the entire < line button=”1” > to the < /line > and paste it right after the < /line >. Change the button= to the button number that it will be. If it is a 7942 you only have two button’s so the next one would be < line button=”1” >. If you are making the changes to a 7965 it has six buttons, so you can have up to six buttons.

 <line button="2">  
     …  
     …  
 </line>  
 <line button="3">  
     …  
     …  
 </line>  

Staying within the < sipProfile > field still, the next field is going to be the < softKeyFile >. You can leave the default file that comes with the firmware from Cisco within your TFTP structure. This file is the layout of how the soft keys on the phone appear. I have noticed that Call Forwarding, Call Park and placing callers on Hold are an issue with moving users over to SIP on Cisco IP Phones. My only resolution to the Call Forwarding and Call Park is with the Feature Access Codes within Avaya. Placing callers on hold however, I have not been able to fix and Avaya documentation and support have confirmed, to me, that this does not work with the Cicso SIP IP phones. I just remarked out (< !-- -- >) the Park, Call Forwarding and Call Hold portions within this file so end users would move over the Feature Access Codes.

<softKeyFile>softkeyDefault_kpml.xml</softKeyFile> <!--Softkey file that it will for at bootup, no need to change the default-->  

Still within the < sipProfile >, the < dialTemplate > is a major one that you will need to make changes to according to your Avaya dial plan. In this XML file, you will need to add the dial patterns to call out, Feature Access Codes, internal dialing for each location if you have multiple, etc. This one was a little daunting. But, with a little searching on the web and our dial plan within Avaya I was able to accomplish this. Here is a snippet including some of the FAC templates. I couldn’t find an easier way to add it other than each one individually unfortunately.

 <DIALTEMPLATE>  
           <TEMPLATE MATCH="0" TIMEOUT="0"/> <!-- Operator -->  
           <TEMPLATE MATCH="9,......." Timeout="0" User="Phone"/> <!-- Local numbers -->  
           <TEMPLATE MATCH="9,1.........." Timeout="0" User="Phone"/> <!-- Long Distance -->  
           <TEMPLATE MATCH="\*1" TIMEOUT="0" User="Phone"/> <!-- Feature Access Code Forward Extension -->  
           <TEMPLATE MATCH="\#1" TIMEOUT="0" User="Phone"/> <!-- Feature Access Code to UnForward Extension -->  
 </DIALTEMPLATE>  

The next section is going to be < commonProfile >. The < phonePassword > will be the desk phone password that you, as the administer, will use to login and there will be more options. The default is “cisco” so there is really no reason to change this unless you see a reason to. The field after it will be the < backgroundImageAccess >. This just allows the phone to access custom background images. During some frustrating times while working on these phones, I took a break and worked on pushing this out just to get a kick, along with custom ringtones. I will work on another blog post in the future on getting this working.

 <commonProfile>  
      <phonePassword>cisco</phonePassword> <!--Phone password to get in administratively on the desk phone-->  
      <backgroundImageAccess>true</backgroundImageAccess> <!--Allows you to push out background images to the phone-->  
      <callLogBlfEnabled>2</callLogBlfEnabled>  
 </commonProfile>  

The next field will be the < loadInformation >. This one is important since this is where you tell the firmware for it to look for when the phone boots. You need to make sure that this one is typed in there correctly, otherwise it will not load the correct firmware and WILL NOT convert to a SIP phone. Type the firmware that you have downloaded for the phone, minus the extension of the file type between the < loadInformation > HERE < /loadInformation > so the phone know to look for that filename.

 <loadInformation>SIP42.9-4-2SR1-1S</loadInformation> <!--Firmware version that the phone looks for at boot.-->  

The last field will tell the phone what language you want the menus to be in. These next fields will be a pain to find the right files, when I can remember the proper way to find them I will update this document, but for now these next few fields are for changing the languages of the menus from what I have found. Under the < userLocale >, the English_United_States will be a folder name within your TFTP path on your TFTP server so the phone can access this. The < langCode > is the language that will be chosen, so I have set it to be English with the ‘en’. The < networkLocale > is a folder that comes with the firmware that has default tones and fonts within it.

 <userLocale>  
      <name>English_United_States</name> <!--Language folder that the phone will look to load from-->  
      <langCode>en</langCode> <!--Language that the phone will boot up in-->  
 </userLocale>   
      <networkLocale>United_States</networkLocale>  

Once you have all of these changes made, be sure to save this file with the prefix of SEP followed by the ENTIRE MAC address of your phone minus the dashes or dots with the extension of .cnf.xml. (Example SEP0000AAAAEEEE.cnf.xml) Save this file in the root of you TFTP server along with your firmware and we will move on to the TFTP Section.

TFTP

Now that we have the firmware downloaded and placed in the TFTP path, SIP extension setup on Avaya, the config file created and saved, we are ready to move on. If you are wondering what your TFTP folder should look like, it should basically look like this image:


This folder has the firmware and your XML config file in. Make sure that your TFTP application is pointing to this folder and that you have everything in your DHCP server setup properly. You can go ahead and plug the phone in.

When you power the phone on you will see the Cisco logo splash screen. In the bottom left you will notice a box. If it has a checkmark in it, it is has all of the correct information to boot to the network. If you see an X in this box, don’t fret, it should  reboot once more. When it does, this may mean that it found new firmware so it will go to another screen.


Once it is on the screen for downloading the firmware, you will get percentages for the download of each file which is nice. Once it is finished downloading, it will reboot once more. When it comes back up, you will see the typical Cisco IP Phone screen and at the bottom you will see that it is Registering. Next to the line appearance you will see an X on the phone next to the label name, once the phone is registered and is talking SIP on the network, this will go away.

 

Once everything is good and the phone has registered, the phone will look just as it was connected with Cisco Call Manger, but it is actually running SIP with Avaya on the backend J


Have fun!

Issues observed during this:
·         The phone wouldn’t register – Make sure that the Communication profile password is in the < authPassword > field. This is where the phone will register with Avaya Session Manager.
·         Placing Users on Hold Does NOT Work – Yep. I fought this one for a while. I have been told by several Avaya engineers that it does not work with the Cisco IP phones. It even says so on their white paper that walks you through this process.
·         Call Forwarding Does NOT Work – Yep. Fought this one as well. Send the users the Avaya Feature Access codes and make sure to put this in the dialplan.xml.
·         Call Pick Up  Does NOT Work – Yep. Again, fought this one for a while. Send the users the Avaya Feature Access codes and make sure to put this in the dialplan.xml
·         Dial Plan 911 Call Routing – MAKE SURE TO PUT 911 CALL ROUTING IN THE dialplan.xml FILE. You do NOT want to be held liable for a call not going through because of this.

I am no pro with this, this was just my experience and my living walkthrough of this documentation to pass along to others that may use this, so don’t use this walkthrough and my observations of what everything is literally. I notated what I found from experience.

Monday, February 29, 2016

Hi

Well, look at me, I think I started a blog. Let's see how long I can keep at this. I plan for this blog to be a giving blog. I have been taking from so many over the years to piece together projects that I feel that it is time to give back and hope that someone out there will hit upon a key word in this blog and get that warm and fuzzy feeling that they have finally found what they are looking for.

It may take me a few days to get the first post up here, but one of my greatest accomplishments was converting Cisco IP Phones to SIP and getting them connected to Avaya Communication Manager. So, that one will be my first post, just need to convert it from a how-to guide to an instructional walk-through.

Any who, enjoy the blankness for a while and come back to visit!