• Expected outdialing behavior for ‘Play on Phone’ scenarios in Microsoft Exchange Unified Messaging


    The Microsoft Exchange Unified Messaging ‘Play on Phone’ feature provides access to voice mail messages for UM-enabled users. However, instead of playing the media attachment from a voice mail message over their computer speakers, users can listen to voice mail messages on a telephone handset.

    When UM-enabled users work in office cubicles, use a public computer, have a computer that isn't enabled for multimedia, or have a voice message that's confidential, they may not want to or may be unable to play a voice message over their computer speakers. The Play on Phone feature lets UM-enabled users play the voice message over a telephone. The Play on Phone feature is available in Exchange 2007 Outlook Web Access, Exchange 2010 Outlook Web App, and in Microsoft Office Outlook 2007.


    In Exchange 2007 Unified Messaging, the default behavior for processing ‘Play on Phone’ requests can be summarized as follows:
    - Accept the request from CAS (which includes telephone dial string entered by user in Outlook/OWA)
    - Check dial string to determine whether it is an extension, national number, or international number (e.g. 8005551212)
           
    Ex2007EvalTable
    - Look up user information in Active Directory (extract ADUser, mailAddress, UMExtension, UMEnabled, etc.)
    - Look up IP Gateway associated with UM Dial Plan that is enabled for outbound dialing
    - Check whether dial string is permitted by validating against UM Mailbox Policy:

            If dial string is ‘International’, compare against International Dialing Restrictions from UM Mailbox Policy
            If dial string is ‘National’, compare against In Country/Region Dialing Restrictions from UM Mailbox Policy
            If dial string is ‘Extension’, compare against the ‘Allow calls to users/extensions…’ options from UM Mailbox Policy

    - If dial string is permitted, send to IP Gateway (e.g. 8005551212)

    Although various dial code entries may be configured on the Dial Code tab of the user’s UM Dial Plan, the dial string is never manipulated.  Rather, the format of the dial string remains constant throughout the entire ‘Play on Phone’ outdialing process.  Please note that this behavior only applies to ‘Play on Phone’ calls which are placed by Exchange 2007 mailbox users.


    In Exchange 2010 Unified Messaging, the default behavior for processing ‘Play on Phone’ requests has changed from that of Exchange 2007, and as such the default behavior can be summarized as follows:

    - Accept the request from CAS (which includes telephone dial string entered by user in Outlook/OWA)
    - Check dial string to determine whether it is an extension, national number, or international number (e.g. 8005551212)
           
    Ex2007EvalTable
    - Look up user information in Active Directory (extract ADUser, mailAddress, UMExtension, UMEnabled, etc.)
    - Look up IP Gateway associated with UM Dial Plan that is enabled for outbound dialing
    - Get the National Number Prefix [1], Country or Region Code [1], and Outside Line Access Code [9] from the Dial Codes tab of UM Dial Plan
    - Determine whether dial string should be manipulated to accommodate the configured Dial Codes from UM Dial Plan:

            If dial string is ‘International’ number, prefix with Outside Line Access Code and International Access Code (e.g. 90114412345678)
            If dial string is ‘National’ or ‘International’ number, prefix with Outside Line Access Code and National Number Prefix (e.g. 918005551212)
            If dial string is ‘Extension’, do not prefix dial string with Dial Code values

    - Check whether dial string is permitted by validating against UM Mailbox Policy:

            If dial string is ‘International’, compare against International Dialing Restrictions from UM Mailbox Policy
            If dial string is ‘National’, compare against In Country/Region Dialing Restrictions from UM Mailbox Policy
            If dial string is ‘Extension’, compare against the ‘Allow calls to users/extensions…’ options from UM Mailbox Policy

    - If dial string is permitted, send to IP Gateway (e.g. 918005551212)



    As you can see, this change in behavior may require you to make some changes to your Dialing Rule Entries for your UM Dial Plans in Exchange 2010 Unified Messaging.


    Hope this helps!


    -- Dave

  • How to get a free DID SIP Trunk for testing your Unified Communications lab environment

    I recently stumbled on a free offering for a DID SIP Trunk (inbound calls only) from a company called IP Communications.  Having already added a magicJack device to my Unified Communications lab for routing both inbound and outbound calls, an additional DID line was exactly what I needed for routing calls to my Exchange UM Auto Attendant.  The SIP Trunk offered by IP Communications requires SIP registration and also leverages the UDP transport protocol.  As such, a third party SIP Proxy or IP PBX (like pbxnsip) is required.

    The following steps describe how to request a free DID SIP Trunk from IP Communications and how to add a new trunk in pbxnsip IP PBX to support it.

     

    Sign Up at IPComms.Net


    1. Visit http://www.ipcomms.net and click on the Sign Up link located at the top of the page.
    2. From the packages offered, choose the Free US Phone Number option.
    Free 
    3. Complete the registration form (request the new SIP trunk to test features of your IP PBX).
    4. Upon receiving the provisioning letter, locate the Incoming Settings details about your new SIP trunk.

     

    Add New Trunk in pbxnsip


    1. Launch Internet Explorer and navigate to your pbxnsip server (http://pbxnsip)
    2. After authenticating to the system, click on the Domains option from the main menu
    3. Next, click on the hyperlink for your pbxnsip domain (pbxnsip.contoso.com)
    4. Under the Domain Administration menu, click on the Trunks tab
    5. Locate the New Trunk option, then create a new SIP Registration trunk called IPComms Inbound
    newtrunk

    6. After creating the new IPComms Inbound trunk, click on the Edit option to edit its settings.
    7. Edit the settings of the new trunk using information from the Incoming Settings of your provisioning letter.

    Note: Please accept the default settings unless otherwise specified. 

    Name : IPComms Inbound
    Type : SIP Registration
    Direction : Inbound Only
    Display Name : IPComms Inbound
    Account : {Username value / e.g., 8035551212}
    Domain : {Host value / e.g., sipconnect.ipcomms.net}
    UserName : {Username value / e.g., 8035551212}
    Password/Repeat : {Secret value / e.g., 1234567890}
    Outbound Proxy : {Host value / e.g., sipconnect.ipcomms.net}
    Override Codec Preference : {Allow value / e.g., ulaw – verify that G.711U is at top of list}
    Lock Codec during Conversation : Yes
    Proposed Duration : 360
    Accept Redirect : Yes
    Interpret SIP URI always as phone number : Yes
    Is Secure : No
    Send to Extension : 99999

    trunksettings

    8. Verify that the new SIP Trunk registers successfully with the IPComms.Net provider.

     

    Add New Forwarding Extension in pbxnsip


    1. Again under the Domain Administration menu, click on the Accounts tab.
    2. Click Create to create a new account using the following settings:

    Number : 99999 
    First Name : UM Auto 
    Last Name : Attendant 
    SIP Pass. : 99999 
    Web Pass. : 99999 
    PIN : 99999

    CreateExtension

    3. Configure forwarding for the new account by clicking the Edit option beside it in the list of extensions.
    4. In the properties of Extension 99999, click on the Redirection tab and configure forwarding as follows:
    Do Not Disturb : Off 
    Login : Off 
    Call Forward All Calls to : {Pilot Number of UM Auto Attendant / e.g., 59999}

    Ext99999 


    After successfully configuring the new SIP trunk in pbxnsip, calls placed to your free DID number should route successfully to your Exchange Unified Messaging Auto Attendant.

    As always, I hope this helps!

     

    -- Dave

  • How to configure interoperability between Microsoft Exchange Server 2010 Unified Messaging and pbxnsip IP PBX version 3.0

    Introduction

    This guide describes how to configure interoperability between Microsoft Exchange Server 2010 Unified Messaging and pbxnsip IP PBX version 3.0.  pbxnsip is an IP PBX solution for Windows that supports SIP communication over either the TCP or UDP transport protocols. When configured with a free permanent demo key, pbxnsip can be used for testing various call flow scenarios in lab environments which host Microsoft Unified Communications products (maximum call duration of 3 minutes).

    To request a free permanent demo key for using pbxnsip Version 3 in a lab environment, visit http://www.pbxnsip.com/sales/trial.php. After completing and submitting the request form, a demo key will be sent to you in email. The Windows 32-bit pbxnsip installation package can be downloaded at http://www.pbxnsip.com/download-software/software.php, and it can be installed on either a stand-alone or domain-joined Windows 2003 or Windows 2008 server or virtual machine.  At the moment, there is no publicly released 64-bit version of the pbxnsip product available for download, however.


    Environment

    The lab environment described by this configuration guide contains the following server and/or hardware configuration:

    LabEnvironment_Blog



    Configure pbxnsip

    After installing the pbxnsip application, there are many options that must be configured correctly before calls can be routed successfully to or from our lab environment.  To begin the configuration of the pbxnsip system, launch Internet Explorer and navigate to http://pbxnsip (or the FQDN or NetBIOS name of the server where pbxnsip was installed).

    AdminMenu


    Settings Menu

    The first step of setting up the pbxnsip system involves configuring the options available under the Settings menu. The options available under the Settings menu of the IP PBX affect the overall behavior of the PBX. It is also where you can find the option to enter the permanent demo key that you requested from http://www.pbxnsip.com.

    Note: Please accept the default settings unless otherwise specified.

    General
    System Name – Enter the hostname of the computer where pbxnsip was installed
    Default Language – Choose the default language for pbxnsip installation
    Time Zone – Choose the correct time zone for the pbxnsip installation
    Username/Password – Enter the logon credentials for pbxnsip specified during setup

    License
    Enter the permanent demo license key that was mailed to you from pbxnsip

    Ports
    RTP Port Range Start/End – Verify that this port range is accessible/not firewalled
    Follow RTP – Enabled/On
    Codec Preference – Choose G.711U for North America/Japan, G.711A for Europe
    Lock Codec During Conversation – Enabled/On
    Packet Length – 20 ms

    Logging
    Log Level – 5
    Log Length – 300 Lines
    Log Filename – pbxnsip.log
    SIP Logging – Enable all SIP logging events

    Other Settings
    There are a number of other configuration options that can be found under the Settings menu, however the configuration of these menu options will not be covered by this guide.

    Configuration – Used to import/export configuration settings for the system
    Certificate – Used to enable TLS communication for the system
    Music on Hold – Allows custom music on hold definition files to be enabled
    Plug and Play – Provides common configuration settings for many IP phones
    Access – Used to configure network restrictions based on IP/Subnet

    Domains Menu

    The second step of setting up the pbxnsip system involves configuring the various domains that the IP PBX will support. A default domain called sip.company.com is automatically created whenever pbxnsip is installed for the first time. Although a new domain can be created from scratch, we will instead edit the existing default domain to support our lab environment.

    To begin editing the default domain, click on the Edit option beside either the localhost or sip.company.com aliases in the list of current domains.

    Note: Do NOT remove the localhost domain alias. This will cause all call routing to fail.

    defaultListofDomains

    Edit Domain
    Although there are a number of configuration options available under the Edit Domain menu, only the Primary Name entry must be changed to support our lab environment. Enter the Fully Qualified Distinguished Name (FQDN) of the computer that hosts the pbxnsip application.

    Note: Do NOT use the domain name sip.contoso.com. This is a common internal DNS host record used by Office Communicator clients to find the IP address of an OCS Enterprise Pool or Standard Edition Front End server.

    Primary Name – Change this value to {computername}.contoso.com (e.g., pbxnsip.contoso.com)

    Domain Administration Menu

    After editing the Primary Name of the default domain, you will find pbxnsip.contoso.com in the list of Current Domains. Click on the hyperlink pbxnsip.contoso.com to open the Domain Administration (pbxnsip.contoso.com) configuration menu. The Domain Administration menu is where all PBX-specific configuration options can be found.

    Note: Please accept the default settings unless otherwise specified.

    domainadministration

    Settings Menu

    There four configuration menus that are available under the Settings tab of the Domain Administration menu. The options contained within the Domain Settings menu control voice mail settings, feature access codes, and phone provisioning information.


    Domain Settings
    Country Code – Enter the value ‘1’ for the United States, or your country code
    Area Code – Enter ‘704’ or your area code/region code
    VoiceMail Timeout – 20 seconds
    Calling own extension number goes to mailbox – Yes

    Other Settings
    There are a number of other configuration options that can be found under the Settings menu, however the configuration of these menu options will not be covered by this guide.

    Feature Codes – Short-cut key combinations for common tasks
    Address Book – List of contact/numbers which are accessible by all users on the system
    Buttons – Controls how IP phones are automatically provisioned by the system


    Accounts Menu

    You will find that there are a number of extensions which are already defined for the system, ranging from 41 – 76. These exist because we chose to edit the default domain and use it as a template rather than create a new domain altogether.

    Our UM Dial Plan is based on a 5 digit extension scheme. Considering this, we need to modify a few of the entries to make them 5 digits in length, and we will remove any extensions that we do not need.  To begin editing the existing extensions, click the Edit option beside extension 41.

    First Name Last Name Extension UM Extension/Dial Plan
    PBX UserA 60001 60001 / PBXNSIP Dial Plan
    PBX UserB 60002 60002 / PBXNSIP Dial Plan

    For each of these users, edit an existing account within pbxnsip by populating the following values on the General tab of each account:

    Account Number – Enter 60001 or the extension of one of your users
    First Name – Enter PBX or the first name of one of your users
    Last Name – Enter UserA or the last name of one of your users
    SIP Password – Enter 60001 (and repeat to confirm)
    Web Password – Enter 60001 (and repeat to confirm)
    PIN – Enter 60001 (and repeat to confirm)
    Block Outgoing Caller ID – No

    When completed, our list of user accounts should appear as follows:

    ListofUserAccounts


    Trunks Menu

    The Trunks menu is used to configure routing targets for calls that are handled by the pbxnsip system. In our Unified Communications lab, there are two possible routing targets, as shown in the table below:

    Routing Target IP Address Protocol/Transport
    Exchange 2010 Unified Messaging 192.168.1.11 SIP / TCP
    AudioCodes MP-114 VoIP Gateway 192.168.1.12 SIP / TCP

    With this in mind, one or more SIP trunks need to be created to support call routing in our lab environment. Since we chose to edit the existing default domain rather than to create a new domain, you will find an existing ‘PSTN Gateway (1)’ entry in the list of available trunks.  Not only will we edit the existing PSTN Gateway trunk to accommodate our needs, we will also create an additional trunk for Exchange 2010 Unified Messaging.

    Note: Please accept the default settings unless otherwise specified.


    Edit the PSTN Gateway Trunk
    Name – AudioCodes MP-114
    Type – SIP Gateway
    Direction – Inbound and Outbound
    Domain – audiocodes.contoso.com (DNS name for AudioCodes MP-114 VoIP Gateway)
    Outbound Proxy – 192.168.1.12:5060;transport=tcp (IP address of AudioCodes device)
    Override Codec Preference –G.711U (for North America) / G.711A (for Europe)
    Lock Codec during Conversation – Yes
    Accept Redirect – Yes
    Interpret SIP URI always as Telephone Number – Yes

    Create New Exchange 2010 Unified Messaging Trunk
    Name – Exchange 2010 UM Server
    Type – SIP Gateway
    Direction – Inbound and Outbound
    Domain – exchangeum.contoso.com (DNS name of ExchangeUM Server)
    Outbound Proxy – 192.168.1.11:5060;transport=tcp (IP address of ExchangeUM Server)
    Override Codec Preference –G.711U (for North America) / G.711A (for Europe)
    Lock Codec during Conversation – Yes
    Accept Redirect – Yes
    Interpret SIP URI always as Telephone Number – Yes


    Dial-Plans Menu

    The Dial-Plans menu is used to configure routing logic for calls that are handled by the pbxnsip system. While trunks may provide a number of possible routing targets for an example, dial plans are used to determine which of the available trunks to use for routing the call. Likewise, each dial plan is configured with one or more pattern matching and/or number masking rules which are used to process dial strings for calls that are handled by the system.

    Since we chose to edit the existing default domain rather than to create a new domain, you will find an existing ‘Standard Dialplan’ entry in the list of available Dial Plans. To begin editing the default dial plan, click on the Edit option beside the ‘Standard DialPlan’ entry.


    Pref – 200 / Highest Processing Order
    Trunk – Exchange 2010 UM Server
    Pattern – (6[0,9][0,9][0,9][0,9])
    Replacement – {Leave Empty}

    Pref – 300 / Lowest Processing Order
    Trunk – AudioCodes MP-114
    Pattern – *
    Replacement – {Leave Empty}  


    Status Menu

    If you experience unexpected call routing issues or call processing failures, the options that are available within the Status Menu can help to troubleshoot problems. One of the most helpful tools can be found under the Logfile tab.

    Logfile


    Email Menu

    One of the nicest features of the pbxnsip product is its extensive reporting capabilities. The system can be configured to send various usage reports and/or event notifications to an external SMTP server.  Although there are a number of reporting options which can be configured under the Email menu, configuring Email options for the system will not be covered by this guide.

     

    Status Menu

    The Status menu provides you with a general overview of the current health of the pbxnsip system.

    StatusMenu


    Upon completing the configuration of the pbxnsip system, restart the pbxnsip server.

     


    Configure Exchange Unified Messaging

    Our next task will be to configure Microsoft Exchange 2010 Unified Messaging, which will serve as the voice mail system for pbxnsip. There are several configuration steps that must be completed for call routing to work successfully, including the following:

    • Create and configure UM Dial Plans, IP Gateways, and Auto Attendants
    • Define pilot numbers for Subscriber Access and Auto Attendants
    • Create mailbox enabled user accounts and enable them for UM

     

    UM Dial Plan

    1. Complete the information necessary to create a new UM Dial Plan for pbxnsip:
    Name of Dial Plan : PBXNSIP Dial Plan
    Digits in Extension : 5
    URI Type : Telephone Extension
    VoIP Security : Unsecured
    Country/Region Code : 1

    2. Configure the new PBXNSIP Dial Plan object as follows:

    Subscriber Access
    Pilot Number: 60000

    Features
    Allow callers to transfer to users : Enabled
    Allow callers to send voice messages : Enabled
    Callers can contact : Anyone in the default Global Address List

    Dialing Rule Groups
    Under In Country/Region Rule Groups, click Add and configure a new rule as follows: 
         Name : All Outbound Calls Allowed
         Number Mask : *
         Dialed Number : *
    Under International Rule Groups, click Add and configure a new rule as follows: 
         Name : All Outbound Calls Allowed
         Number Mask : *
         Dialed Number : *

    Dialing Restrictions
    Allow calls to users within the same Dial Plan : Enabled
    Allow calls to extensions : Enabled
    Select In-Country/Region Groups from Dial Plan : All Outbound Calls Allowed
    Select International Groups from Dial Plan : All Outbound Calls Allowed

    3. Assign the PBXNSIP Dial Plan to the Exchange UM Server.

     

    UM IP Gateway

    Complete the information necessary to create a new UM IP Gateway object for pbxnsip:

    Name of UM IP Gateway : PBXNSIP
    IP Address : 192.168.1.13 
    Dial Plan : PBXNSIP Dial Plan 

     

    UM Mailbox Policy

    Configure the new PBXNSIP Dial Plan Default Policy object as follows:

    PIN Policies 
    Minimum PIN Length : 4
    PIN Lifetime (days) : Disabled (Unlimited)
    No. of previous PINs to disallow : 1
    Allow common patterns in PIN : Enabled

    Dialing Restrictions
    Allow calls to users within the same Dial Plan : Enabled
    Allow calls to extensions : Enabled
    Select In-Country/Region Groups from Dial Plan : All Outbound Calls Allowed
    Select International Groups from Dial Plan : All Outbound Calls Allowed

    UM Auto Attendant

    1. Complete the information necessary to create a new UM Auto Attendant object for pbxnsip:

    Name of UM Auto Attendant : AutoAttendant
    Associated UM Dial Plan : PBXNSIP Dial Plan
    Pilot Identifier List : 69999
    Create as Enabled : Enabled
    Create as Speech Enabled : Enabled

    2. Configure the new Unified Messaging AutoAttendant object as follows:

    General
    Auto Attendant is enabled for Directory Lookups: Enabled

    Features
    Allow callers to transfer to users : Enabled
    Allow callers to send voice messages : Enabled
    Callers can contact : Anyone in the default Global Address List

    Dialing Restrictions
    Allow calls to users within the same Dial Plan : Enabled
    Allow calls to extensions : Enabled
    Select In-Country/Region Groups from Dial Plan : All Outbound Calls Allowed
    Select International Groups from Dial Plan : All Outbound Calls Allowed

    UM Enabled Users

    Complete the information necessary to create two new mailbox-enabled user accounts which are also enabled for Unified Messaging:
    User Name : PBX UserA
    Email Alias : PBX.UserA
    Exchange Database : Default Exchange 2010 Mailbox Database
    Unified Messaging Mailbox Policy : PBXNSIP Dial Plan
    Manually Specify PIN : {Enter 4 Digit Value}
    Manually Entered Mailbox Extension : 60001
    User Name : PBX UserB
    Email Alias : PBX.UserB
    Exchange Database : Default Exchange 2010 Mailbox Database
    Unified Messaging Mailbox Policy : PBXNSIP Dial Plan
    Manually Specify PIN : {Enter 4 Digit Value}
    Manually Entered Mailbox Extension : 60002


    Upon completing the configuration of Exchange Unified Messaging, restart both the Microsoft Exchange Unified Messaging and Microsoft Exchange Speech Engine services.

     


    Configure Soft Phone

    Our final step involves configuring a soft phone client to connect to the pbxnsip system. One of the more popular freeware soft phone clients that can be used to connect to pbxnsip is 3CX Phone which can be downloaded at the following URL:

    3CX Phone - http://tinyurl.com/ylyrrpf

    After downloading and installing the 3CX Phone client, use the following configuration steps to connect your soft phone client to the pbxnsip system.

     

    1. Launch the 3CX Phone client.

    2. Click on the Home button.

    3cxConfig0

    3. Select the Connections option.

    3cxConfig1

    4. Configure the Connection settings as follows, then click OK:

    Credentials
    Extension: 60001
    ID: 60001
    Password: 60001

    My Location
    I am in the office – local IP: 192.168.1.13
    SIP Domain: contoso.com

    Advanced Settings
    PBX voicemail: 60000

    3cxConfig_Blog

    5. Verify that registration with the pbxnsip system was successful.

    3cxConfig2 


    Conclusion

    This information is provided AS-IS with no warranties, and confers no rights.  This solution is considered UNSUPPORTED by Microsoft, and as such should not be deployed in a production capacity.

    I hope that you have found this configuration guide to be helpful.  As always, any questions or comments are always welcome.

    -- Dave

  • Need an extra phone line for testing call flows in your Unified Communications lab? Why not try magicJack!

    One day while at work, my buddy Geoff Clark and I were discussing how expensive it can be to deploy a lab environment at home, especially one that supports VoIP telephony.  When you combine the initial cost of purchasing new server hardware and telephony equipment with the monthly expense of one or more additional telephone lines or SIP trunks, you’ll soon find that deploying a lab environment at home is far from cheap. 

    Suddenly Geoff asked, “I wonder if you can connect magicJack to the FXO port on a VoIP gateway to dial out to the PSTN?” 

    Unless you live outside the United States (or perhaps under a rock), you’ve probably heard of magicJack.  The magicJack device, roughly the size of a pack of gum, connects to the USB port of a computer.  Upon installing the ad-driven software and selecting a telephone number, magicJack provides unlimited local and long distance dialing for less than $20 per year.  The magicJack USB device can be purchased from a variety of major retailers or from their website at http://www.magicJack.com.

    magicjack-productShot-original-cord

    While I would never encourage anyone to drop their existing telephone service in favor of switching to magicJack, this little device can provide a cost-effective means of connecting your UC lab environment to the Public Switched Telephone Network (PSTN).  Unfortunately, the magicJack service is not intended to act as either a SIP trunk or as a B2BUA.  Rather, the customer is expected to connect an analog telephone to to the RJ-11 port on the device.  This means that unless you have a VoIP gateway in your lab, you will not be able to place external calls through magicJack using a SIP client or IP phone.

    The magicJack device must be physically connected to either a computer or thin-client.  A sound card is required, even though the magicJack device is recognized by Windows to be a generic USB sound device.  When you connect the magicJack device to a computer and launch the magicJack software, it quickly scans the available audio devices on the machine.  After automatically determining which sound device to leverage for encoding/decoding audio for the RTP stream, several audio-related registry keys are then set under the HKCU container in the registry.

    After purchasing magicJack for my own UC lab, determining where to connect the magicJack USB device was simply a no-brainer.  Since my entire Unified Communications lab runs on a single Hyper-V host computer, it was the logical candidate for hosting both the magicJack device and the magicJack software.  After connecting the magicJack to the USB port of my Hyper-V host computer, I used a simple telephone cable to connect the RJ-11 port on the magicJack device to one of the FXO ports on my AudioCodes MP-114 gateway.

    LabEnvironment


    While magicJack can potentially save you a lot of money over time, there are some … well, let’s call them nuances … that can (and probably will) drive you nuts.  For example, the magicJack software runs under the context of a user account, not as a service.  This means that if your host computer restarts due to patching/etc, magicJack will fail to send or receive calls until someone logs in to the computer locally.  Another nuance with magicJack involves the automatic pop-up of the magicJack software whenever a new call is received, causing loss of focus if you’re working on something important.  Although there are workarounds or free utilities available for addressing both of these issues, they may violate the magicJack Terms of Service.

    A few of the other issues that I encountered with magicJack are as follows: 


    Unable to hear or understand caller

        1. Log on locally to the magicJack host computer.
        2. Launch the magicJack software (it should select a preferred audio device).
        3. Configure the audio settings within the magicJack software as follows:
             a. Click on the ‘Menu’ option, then select ‘Volume/Headset Control’.
             b. Under ‘Choose your device’, select your preferred audio device.
             c.  The Speaker/Microphone settings for the audio device should be configured as follows:
                     Speaker – Move the slider all the way to the right (maximum)
                     Microphone – Move the slider all the way to the right (maximum)
        4. After committing changes, place a call to your magicJack number and test the audio levels. 


    Connecting remotely using RDP causes loss of audio settings

        1. Log in locally to the magicJack host computer using your Administrator account.
        2. Manually disconnect (unplug) the magicJack device from the host computer.
        3. Locate the magicJack installation folder (C:\Users\Administrator\AppData\Roaming\mjusbsp).
        4. Remove the mjusbsp installation folder or move it to another location on disk (i.e. the desktop).
        5. Launch the Registry Editor, then locate and remove the cdloader value from the following registry key:
               HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
        6. Create a new user account called ‘magicJack’ and give it administrative rights.
        7. Log on locally to the magicJack host computer using the ‘magicJack’ user account.
        8. Reconnect the magicJack device (magicJack software should install automatically).
        9. Configure the audio settings in the magicJack software and verify that you can send/receive calls.
        10. Configure the settings for all RDP sessions to this computer as follows:
               - Never log on remotely as the ‘magicJack’ user account
               - Never connect to Console (mstsc /c or mstsc /admin)
               - Configure the Remote Audio Settings to ‘Leave at Remote Computer’

    Oh, one last thing…

    This information is provided AS-IS with no warranties, and confers no rights.  This solution is considered UNSUPPORTED by Microsoft, and as such should not be deployed in a production capacity.

    As always, I hope this helps!

    -- Dave

  • Calls routed to Exchange 2010 Unified Messaging servers may be rejected due to URI parsing logic

    During the development of Exchange 2010 Unified Messaging, several changes were made to the URI parsing logic for calls that are handled by Unified Messaging servers.  When a call is routed to Unified Messaging server, each of the URI values contained in the SIP INVITE are extracted in an effort to resolve the identities of the calling and called parties. 

    The format of the URI values contained in SIP INVITE requests sent to a Unified Messaging server must match the URI type of the UM Dial Plan in order for the call to be processed successfully.  When you create a new UM Dial Plan object, you are prompted to choose a URI type for the Dial Plan.  The available URI options include Telephone Extension (TelExtn), SIPName, or E.164, and the URI type that is selected for the UM Dial Plan directly affects how the URI values are parsed by the UM server. 

    For Telephone Extension (TelExtn) type UM Dial Plans, URI values must be presented in one of the following three formats for the call to be accepted and processed by an Exchange 2010 UM server:

    • Numeric extension
    • Numeric telephone number
    • Anonymous

    There are certain IP PBXs and VoIP gateway devices which are known to send SIP INVITE requests containing a user name value in the URI of the From header (sip:user@192.168.1.101…) and an extension value in the URI of the To header (4001@192.168.1.102…).  While Exchange 2007 Unified Messaging servers have traditionally accepted this type of SIP INVITE, the URI parsing logic in Exchange 2010 Unified Messaging will reject the call with the following error:

    Unified Messaging server rejected an incoming call with the ID “27759cc8116497b61a94b38b7719e731@192.168.1.101".

    Reason: The Unified Messaging server has received an incoming call with a SIP URI "sip:user@192.168.1.101" that is not valid for dial plan “TelExtnDialPlan”.

    To determine whether you are impacted by this issue, increase the Diagnostics Logging level for UMCore from Lowest to Expert using either the Exchange Management Console or the Exchange Management Shell.  Next, place a call to the Subscriber Access number of the Unified Messaging Dial Plan.  Finally, open the Application Log on the Unified Messaging server, and search for Event ID 1004.

    EventID1004 

    Although this article describes the default behavior for processing URI values in the initial release of Exchange Server 2010 Unified Messaging, it is expected that the URI processing logic will be updated to accommodate non-numeric URI values in a future Roll-Up or Service Pack release. 

    At the moment, there are three known workarounds for this issue, listed as follows:

    • Configure the IP PBX or VoIP gateway to provide an anonymous URI value (Anonymous)
    • Configure the IP PBX or VoIP gateway to provide a numeric URI value (60001)
    • Configure the IP PBX or VoIP gateway to prefix a non-numeric URI value with a numeric digit (1user)

     

    As always, I hope this helps!

    -- Dave