Welcome to TechNet Blogs Sign in | Join | Help

Disable Inbound Ring on Communicator 2007 R2

This question has come up a couple times.  How can I disable Inbound Ring on MOC but still keep all of my other windows sounds.  The sound options for communicator are hidden, but there are a lot of options once you find them.

Open Communicator 2007 R2 Options and go to the Alerts Section.  From here you will select the “Configure Sounds” button.

image 

In the Sounds you will find a Category of Microsoft Office Communicator 2007 R2.  Under this section look for a option of “Incoming Call”.

image

Set the Sounds to “None” and apply changes.

image

That’s it, now Communicator will not play ring tone on incoming calls.

Posted by gclark | 0 Comments

OCS DNS Automatic Configuration when Split DNS is not an Option

##### UPDATE ######

It was brought to my attention today, the below configuration does not work if you have non-window clients.  I will post the network traces to why this will not work with non-windows clients soon.  But in the meantime, if you have non-window clients Doug’s blog will help create the “Split-Brain DNS” for this scenario.

http://blogs.technet.com/dougl/archive/2009/06/12/communicator-automatic-configuration-and-split-brain-dns.aspx

#################

I have run into a couple issues with customers that are unable to or unwilling to create DNS Zone of Public namespace internally into their AD environment.

In order to get Automatic configuration to work we need to create a SRV Records or a fall back A Record.  DNS Records that Office Communicator look at for Automatic Configuration are as follows.

DNS Records (These records are not in any specific order)

  • _sipinternaltls._tcp.domain.com
  • _sipinternal._tcp.domain.com
  • _sip._tls.domain.com
  • _sip._tcp.domain.com
  • sip.domain.com

A typical SRV Record for OCS is configured as below.

image

This is where the problem starts to come in.  The AD Domain is corporate.contoso.local and your SIP URI is first.last@contoso.com to match your primary SMTP domain (email address).  In most environments contoso.com is managed by Public DNS Servers and is not available from the internal AD DNS Servers.  One option is to create this namespace internally.  This works for a lot of companies, but some organizations do not want to manage Split DNS. 

The requirement for this is do to how Communicator looks for your Office Communication Server.  When a user logs in with first.last@contoso.com, Communicator starts its built in DNS Queries and will search for the above mentioned DNS Records with the domain portion of the users SIP URI.  This can become a problem for some Organizations that do not have their Public namespace in their internal AD DNS.

Communicator cannot tell the difference between “Internal or External” SRV Records.  So if you create a _sipinternaltls._tcp.contoso.com record in your external dns zone, this will take care of users logging into your internal OCS Pool, but users externally will also use this record and fail to login, because they will be unable to reach your internal pool server.

The following outlines a way to create your SRV and Host records internally without having to manage Split DNS.

First we need to create a new dns zone that mimics the SRV Record Domain.  The finished domain will look like below.

image

Now that the SRV Domain has been created we will create the SRV Record in the domain.  Since the zone was created with _tcp when we create the record it will create it in the root of this zone.

image

You can see the record _sipinternaltls._tcp.contoso.com has been created in the root of the _tcp.contoso.com zone.

image

Last step is to create the the host record you used when creating the SRV Record.  In this scenario we used ocs.contoso.com.  Unfortunately we can not just create this host record in the SRV Zone we created earlier.  If we did create the host record in this zone it would become ocs._tcp.contoso.com which is not where the SRV record we created points to.  We will create a new zone as the host record.

image

Now we will create a blank host record in this zone that points to the OCS Server.  This will use the Parent (Zone Name) for this record.

image

That is it.  Now you have created a SRV & Host Record in your internal AD DNS with out having to manage your Public DNS Records internally.

Posted by gclark | 2 Comments

CWA R2 / Error: 0-1-492 / Windows 2008 Server

Symptoms

When you sign in to Office Communicator Web Access R2 Web Site you receive the following error.

Cannot sign in because your computer clock is not set correctly or your account is invalid.  (Error Code: 0-1-492)

Cause

This issue occurs because the Service Principal Name (SPN) of the CWA site is missing.

Resolution

In short the solution is usually just add a SPN to the CWAService account that matches the FQDN of the CWA Website.

Example: https://cwa.nwtraders.com

Followed by a reboot of the server.

My Experience

If the above does not resolve the issue, then the following will usually resolve the issue.

  1. Add CWAService account to the Local Administrator Group on the CWA Server
  2. Add CWAService account to the AD Domain Windows Authorization Access Group
  3. Disable the following on the CWA Server NIC
    1. Jumbo Packet
    2. Large Send Offload
    3. TCP Checksum Offload

Microsoft KB 968978 References above steps.

Posted by gclark | 1 Comments

Exchange 2007 UM - Transfer to Voicemail

I was recently working with a Customer who wanted to transfer calls to voicemail directly without ringing the phone first.  We discussed a couple different options.

1.  Adding additional EUM Proxy Address to each users mailbox. 

This would give the flexibility of routing a call directly to Voicemail for any user without ringing the phone line. 

The down side to this approach is having to assign and remember two extensions for each user.  Also having to route additional extensions thru the phone switch / PBX to UM for each user.

 

2. Route calls through the PBX with Diversion / History-Info to UM

This can be implemented by creating an extension such as 7XXXX.  So any extension with a preceding '7' would get routed with Diversion / History-Info to UM.

Example from a Asterisk PBX might look like this:

exten => _7XXXX,1,Answer
exten => _7XXXX,n,SipAddHeader (Diversion:<tel:${EXTEN:1}>)
exten => _7XXXX,n,Dial(SIP/EXCH_UM/${SA-NUM})
exten => _7XXXX,n,Busy

Again this solution would require some programming from the PBX in order to implement this solution.  This would not require any additional configuring on Exchange UM to implement this solution.

3. Create an Auto Attendant that only forwards calls to Exchange UM for voicemail. 

This is done by creating an Auto Attendant, using your normal process.  But I will take you through how this gets created and what the customer discovered that works for them.

New-UMAutoAttendant -Name VoiceMail -SpeechEnabled $False -Status Enabled -UMDialPlan PBXDial -PilotIdentifierList 4606

This will create your Auto Attendant, but we will still need to make a couple more modifications to Auto Attendant. 

Set-UMAutoAttendant -Identity VoiceMail -AllowExtensions $False -CallSomeoneEnabled $False -SendVoiceMsgEnabled $True -NameLookupEnabled $False

When calling into the Auto Attendant now you will hear the following:

"Welcome to the Microsoft Exchange Auto Attendant.  Enter the extension for the person you are calling."

When you dial the Extension / Voicemail Number.  You will then be taken directly to Voicemail with out ringing any phone lines.

In the customers environment, they now call an extension associated with the newly created Auto Attendant.  They are prompted for a users extension.  Then transferred to the users Mailbox to leave a message.

I must give credit to the Customer for coming up with Option 3.  This seemed to answer their needs and work in their environment.

Cisco CUPS 6.x + OCS 2007 RCC Configuration

I do not want to spend a lot of time discussing the configuration of CUPS since this is already documented by Cisco.  I would like to document the configuration of Office Communication Server 2007 when enabling users for RCC with Cisco Unified Presence Server.

 

These steps are fairly straight forward.  There are a few items to keep in mind when configuring RCC.  I will identify these items as I am explaining the configuration.

 

The first item to keep in mind is your SIP URI.  In this example we will be using megalab.com as the SIP URI.  When creating the Static Route for your CUPS Server we will be using a SIP URI.  Just make sure this SIP URI never gets created as a Supported SIP URI for your users to login with.

 

The issue with creating the Static Route Domain the same as your SIP URI, you would be routing all SIP Traffic out to your RCC/CUPS Server.

 

To create the static route, you will go to Front End Properties.

 

 

You will notice we do not check Phone URI, when creating the Static route.  This would create the domain as sip:*@rcc.megalab.com;user=phone.  As you will see when we configure the users Server URI this would cause a failure since the domains would not match.  If this happens you will see the traffic get routed out the default Federation Route and not towards the RCC/CUPS Server.

 

Next step is to configure an Authorized Host entry for the CUPS Server to be trusted when talking to the OCS Server.

 

 

Last step is to configure your OCS Users for RCC.  Below is a screen shot of a user configured for RCC.

 

 

You will see here the Server URI domain matches the Static Route Domain that was configured earlier.

 

Also linked is another blog that goes into Troubleshooting CUPS/RCC Integration issues – No Phone System Connection.

Posted by gclark | 1 Comments
Filed under: , , ,

Asterisk 1.6.0 + Exchange 2007 SP1 Unified Messaging

Last week I discussed how to connect Asterisk with OCS Mediation Server over TCP.  I figured since we can connect Asterisk to OCS, why not to Exchange UM.  I will go over the configuration changes I made to Asterisk for this, but will not go into detail – since most of it was covered last week.

 

** Just wanted to add a side note.  This configuration is not supported, but again I like to play – so here you go. **

 

Asterisk Configuration Changes

 

SIP.CONF

 

[general]

context = default

bindport = 5060

bindaddr = 0.0.0.0

tcpbindaddr = 0.0.0.0

tcpenable = yes

promiscredir = yes  ** This is new line added **

 

promiscredir -> If set to yes, allows 302 or REDIR to non-local SIP Address

 

[SIP_VM]

type = peer

host = 10.100.16.20

qualify = yes

transport = tcp

 

[50012]

type = friend

callerid = Exchange User <50012>

secret = 50012

host = dynamic

canreinvite = no

dtmfmode = rfc2833

mailbox = 50012

disallow = all

allow = ulaw

transport = udp

 

You have seen most of this configuration before.  We created a new Trunk/Peer that will connect to the Exchange UM Server.  I also created a new Extension since I setup my Exchange DialPlan to support 5-Digit extensions.

 

Now we have to make some changes to the Asterisk Dialplan.  There are two different configurations.

 

1.  If you are going to call into Exchange UM.

 

;Exch VM

exten => 79999,1,Answer

exten => 79999,n,Dial(SIP/SIP_VM/${EXTEN})

exten => 79999,n,Busy

This just gets added to the outbound context in your dialplan.

 

2.  Here we will create a simple Macro to dial the extension then redirect to Exchange UM if no one answers.

 

; User Extension Macro

[macro-stdexten]

exten => s,1,Answer

exten => s,n,Set(MBEXT=${ARG1})

exten => s,n,Dial(SIP/${ARG1},20)

exten => s,n,SipAddHeader(Diversion:<tel:${MBEXT}>)

exten => s,n,Dial(SIP/SIP_VM/${EXCHUM})

exten => s,n,Busy

 

exten => _5XXXX,1,Macro(stdexten,${EXTEN})

 

So your extension.conf file will now look like this:

 

[general]

static=yes

writeprotect=no

 

[globals]

EXCHUM = 79999

 

[default]

exten => _5XXXX,1,Macro(stdexten,${EXTEN})

 

include => outbound

 

[macro-stdexten]

exten => s,1,Answer

exten => s,n,Set(MBEXT=${ARG1})

exten => s,n,Dial(SIP/${ARG1},20)

exten => s,n,SipAddHeader(Diversion:<tel:${MBEXT}>)

exten => s,n,Dial(SIP/SIP_VM/${EXCHUM})

exten => s,n,Busy

 

[outbound]

exten => _NXXNXXXXXX,1,Set(EXT=+${EXTEN})

exten => _NXXNXXXXXX,n,Dial(SIP/SIP_TRUNK/${EXT})

exten => _NXXNXXXXXX,n,Busy

 

;Exch VM

exten => 79999,1,Answer

exten => 79999,n,Dial(SIP/SIP_VM/${EXTEN})

exten => 79999,n,Busy

 

Now this is done we will move onto the Exchange UM configurations.

 

The first step is to create a UM Dial Plan.  Open up Exchange Management Console -> Under Organization Configuration -> Unified Message.  Select New UM Dial Plan.  There will be a wizard that walks you thru the configuration.  The important pieces are: 

  

-    URI Type: Telephone Extension

-    VoIP Security: Unsecured

 

 

Once you have the Dial Plan configured -> edit the dial plan and create a Subscriber Access Number.

 

 

This is the number that is dialed from Asterisk to reach your VM Box.

 

Next we need to configure a UM IP Gateway.  This is done by using the New UM IP Gateway wizard.

 

 

You can leave the default UM Mailbox Policy that was created when you created the Dial Plan.  The only thing left is it to associate the Dial Plan with your UM Server.

 

Under Server Configuration -> Unified Message -> Properties.

 

Add your new Dial Plan to the UM Settings.

 

 

Last is to apply the Dial Plan to a User Mailbox. You can use the Wizard to enable the User for Unified Messaging.

 

Now you are ready to test making a call from your SIP Client to Exchange UM.

 

When you make a call from Asterisk and if it fails with the following error, you will need to patch asterisk and recompile.

 

 

 

The formatting of the SIP call is incorrect.  It is showing SIP/::::TCP@79999@10.100.16.20:5065.

 

To download the patch http://bugs.digium.com/view.php?id=13523

 

Download the second patch ‘13523v2.patch’ and apply the patch.  To apply the patch you can follow these instructions.

 

-    Change to install directory (/usr/src/pbx/asterisk-1.6.0)

-    Download patch

-    patch –p0 < 13523v2.patch

-    You will get a success once this patch is installed

-    /etc/init.d/asterisk stop

-    make clean

-    make

-    make install

-    /etc/init.d/asterisk start

 

Now when you make the same call you should see the following output:

 

 

You can see the difference in how the SIP call is formatted.

 

Well that’s it.  Have fun – enjoy playing. 

Posted by gclark | 2 Comments

Asterisk 1.6 with Office Communications Server 2007

I’ve personally been waiting for this release of Asterisk for some time now! After researching a little, I found out that Asterisk 1.6 now supports TCP & TLS.  Currently it is still considered experimental – but hey, it’s always fun to play!

For those of you who are only familiar with Trixbox or FreePBX, there is no support for any graphical interface on 1.6 as of yet.  But,I will keep this simple and to the point.  Installing Asterisk on a Linux box with Kernel 2.6 is fairly straightforward.  In this Lab, I deployed CentOS 5 - Kernel 2.6.18 with Asterisk 1.6.  When installing the OS you will also need the Kernel Sources and Kernel Headers packages.

First step of course is to build a Linux Box – I built mine in a VM, but installing on hardware will work just the same. 

You can download Asterisk from www.asterisk.org. On your Linux box make a directory under /usr/src – called pbx.  From that directory you can use the following command:

wget http://downloads.digium.com/pub/asterisk/releases/asterisk-1.6.0.tar.gz

Next step is to unpack the package:

tar zxvf asterisk-1.6.0.tar.gz

With that done – we use the common method to build the source:

Change into that directory – cd asterisk-1.6.0

./configure

make

make install

make config

make samples

Start Asterisk by running /etc/init.d/asterisk start

Then run asterisk –vr.  This will bring you into the Asterisk CLI:

Now you know Asterisk is up and running and we can get into modifying some configuration files.  For this Lab there are only 2 files we need to be concerned with; SIP.CONF & EXTENSIONS.CONF which can be found under /etc/asterisk.

Starting with the Sample Config files that were created we can just select and delete everything and then paste these example configs in:

SIP.CONF

[general]

context = default

bindport = 5060

bindaddr = 0.0.0.0

tcpbindaddr = 0.0.0.0

tcpenable = yes

 

[SIP_TRUNK]

type = peer

host = 10.100.16.78

qualify = yes

transport = tcp

 

[5001]

type = friend

callerid = Linux User <5001>

secret = 5001

host = dynamic

canreinvite = no

dtmfmode = rfc2833

mailbox = 5001

disallow = all

allow = ulaw

transport = udp

 

EXTENSIONS.CONF

 

[general]

static=yes

writeprotect=no

 

[globals]

  

[default]

exten => _+XXXX,1,Answer()

exten => _+XXXX,n,Set(CALLERID(name)=You Did It)

exten => _+XXXX,n,Set(CALLERID(num)=${CALLERID(num):1})

exten => _+XXXX,n,Goto(${EXTEN:1},1)

 

exten => 5001,1,Answer()

exten => 5001,n,Dial(SIP/5001,20,tr)

exten => 5001,n,Hangup

 

include => outbound

 

[outbound]

exten => _NXXNXXXXXX,1,Set(EXT=+${EXTEN})

exten => _NXXNXXXXXX,n,Dial(SIP/SIP_TRUNK/${EXT})

exten => _NXXNXXXXXX,n,Busy

SoftPhone

 

Next we will use X-Lite SoftPhone to register extension 5001 to Asterisk.

 

 

 

Configure the SIP Account on the SoftPhone:

 

 

When you hit the Apply button you will be registering the SoftPhone with Asterisk:

 

 

You can also see the registered extension from the Asterisk CLI/Console:

 

 

Now onto the OCS Configuration (In my lab I have a single SE server, and I installed a Mediation Server).  Let’s start with the Mediation Server. 

 

As you see below, there are 2 IP Addresses on the Mediation Server.  Both of them are on the same network.  Of course you can place them on different networks if needed.  Note, if they are in the same Network make sure that the External or PSTN facing interface set to not register with your internal DNS:

 

 

On the Next Hop Connections Screen, you can see that we are pointing this back to the Asterisk PBX and the Inbound Routing is pointing back to the OCS Pool.

 

 

The Mediation Server configuration is not any different than other configuration when setting up Enterprise Voice pointing to any other SIP Gateway.

Now, onto the Global Forest Property and Pool configurations.

 

I have added this Location Profile Normalization Rule for this test:

 

 

Now that you have a Normalization Rule built you will need to make a Policy and Route.  Here is an example of the Route I built for Testing:

 

 

One final step before making a call from the OCS MOC Client to the Softphone is to configure your OCS User for Enterprise Voice.

 

Under your OCS Pool, select Users then right click to get to the Properties of the user.  Click Configure on the User Properties Screen.

When you log in from you MOC 2007 Client, you will be able to dial 5001.  This will get normalized to +5001 and Dial out via the Mediation Server then through Asterisk to the SoftPhone. 

 

On the PC with the SoftPhone you will a pop-up for the call will appear and you can answer or ignore it:

 

 

Now let’s make a call in the other direction.  On the “MOC Side” you will get the toast indicating a call is coming in:

 

 

 

Well that’s about it! I am sure I could have gone into more detail regarding setting up OCS and the Mediation server.  But I wanted to concentrate on showing how to configure Asterisk, since the configuration for OCS is the same as when configuring it for any other SIP Proxy/SIP Trunk (Mediation Server/Media Gateway).

 

Also there is so much you can do with Asterisk.  No physical TDM cards were used, but in a production environment one could easily add Analog and/or T1 TDM and make phone calls across the PSTN.

 

 

Posted by gclark | 8 Comments
 
Page view tracker