Wednesday, September 22, 2010

Lync Click-to-Call in Internet Explorer

In the olden days before Lync, if you wanted to use Communicator to dial a phone number from a webpage, you had to follow a multi-step process: 
  1. Select the phone number
  2. Copy the phone number using Control-C or right mouse click and select Copy
  3. Bring up Communicator
  4. Click on the phone dialing window
  5. Control-V or right mouse click and select Paste.
  6. Click Dial.
Man, I'm tired just from reading that!  A feature that I've been waiting for a long time has finally made its way into Lync 2010: click-to-call from within Internet Explorer.  This has been an oft-asked for feature by several clients.  This feature was available in the past via some 3rd party add-ons, with limited success.  It's nice to see it in the base Lync client product.

When you install Lync, it will also install two IE add-ons:  Lync Browser Helper and Lync add-on, which you can see by clicking on Manage Add-ons from the IE Tools menu.  There are no configurable options.

Also from the Tools menu, you will see an option for Lync add on, which gives you a few simple options (enabled by default).

On every IE webpage you visit, Lync will determine what is a phone number using some internal normalization rules (non-viewable or editable at this time).  When a match occurs, Lync 2010 will place a small icon beside the number like this:

When you hover over the icon in a webpage, you'll see something like the following:
I've found that Lync is fairly good at determining what is a phone number and what isn't. Oddly, it doesn't seem to accept E.164 formatted phone numbers (ie. +15195551111), unless there's a space in it. Other add-ons I've tried would treat pretty much any string of numbers as a dialable number, which was irritating. 

Clicking the icon will bring up a Lync call window and Lync will automatically dial the number.
Instead of six steps, you can dial with just one click of the mouse.  An extremely useful and handy feature!

33 comments:

  1. Nice Tipp!
    Do you know if it works only with IE? Are phone numbers for instance are also recognized in Mails or the Global Adressbook (Outlook/Exchange2010)

    ReplyDelete
  2. Yes, the plugin only works with IE. And sadly, it doesn't work from within Office apps. It does sort of work from within the GAL in Outlook 2010, but it isn't a single-click action. You have to look at the properties of the user object and click on the Phone tab, where you can click the phone number for Lync to dial. This is part of the core functionality though, and doesn't really have anything to do with the IE plugin though.

    Cheers!
    Ken

    ReplyDelete
  3. Many thanks for this useful Information. Would be nice from Microsoft if there could enable it through all Programs.
    Even Siemens has a click to dial Program that works pretty well, why not Microsoft.

    Wish you successful testing with Lync

    ReplyDelete
  4. Hi Ken,

    Can you provide more information about the 3rd party add-ons for 2007?

    Thanks

    ReplyDelete
  5. One 3rd party add-on I used with Communicator was a catchy-named product called "Highlight and Call" from Genesys. Genesys makes remote call control solutions for enterprises. I was testing their RCC solution with OCS for a client, and they included this Highlight and Call product as part of it. I'm not sure if you can purchase it separately. You can contact Genesys at www.genesyslab.com

    ReplyDelete
  6. Hi,

    I tested Lync 2010 with RCC (GETS and CUPS) and this IE click to call plugin also works in RCC mode, which is a good point for RCC (still not dead !)
    One question: Are you sure this plugin uses normalization rules from Lync ? I tested a simple +E.164 number without any character between digits, and it doesn't work...

    ReplyDelete
  7. Hmmmm, you're right on that. I recall hearing about the add-in getting its info from the normalization rules during Ignite training. To test, I made sure I had a normalization rule that will accept a full E.164 phone number. I even updated the Company_Phone_Number_Normalization_Rules.txt file, and nothing I did would allow me to click-to-dial an E.164 formatted telephone number. Maybe we'll see this updated/fixed in time for the final release.

    ReplyDelete
  8. Simply inspect hte ochelper.dll and you can read some RegEx

    (\+?1[\-\. ])?(\(\d{3}\)|\d{3})[\-\. ]?\d{3}[\-\. ]?\d{4})
    ((\+?1[\-\. ])?(\((800|880|888|877|866|855|844|900)\)|(800|880|888|877|866|855|844|900))[\-\.0-9A-Za-z]{7,9})
    (\+\d+[\-\. ](\(\d+\)[\- ]?)?\d[\d\-\. ]+\d)
    ((x|X)\d{3,5})

    ReplyDelete
  9. Is there a way to disable this plugin within HTML textareas? Rich-Text Editors seem to save the icon's html and then causing problems in other browsers/platforms.

    ReplyDelete
  10. I don't believe there's any way you can be that granular in where the feature is enabled. It's either on or off globally.

    ReplyDelete
  11. http://technet.microsoft.com/en-us/library/gg195695.aspx - only works for U.S numbers :(

    ReplyDelete
  12. This is a great feature! However, we need to dial a 9 to get an outside line. Clicking on a number from a web page won't work. Is there any way to have it automatically add a 9 when we click the click-to-dial icon?

    ReplyDelete
  13. To make Lync automatically add a 9 to outbound calls, use a trunk translation rule as I describe in my post on the subject: http://ucken.blogspot.com/2011/01/enterprise-voice-best-practices-in-lync_21.html. The 9 will be added in the background without the user being aware of it, so they will still see that they're dialing +1.555.333.4444.

    I also recommend using the Dialing Rule Optimizer (http://lync.buchanan.com/LyncOptimizer), where it will create all the necessary rules, including adding the 9 to outbound calls.

    ReplyDelete
  14. Thanks Ken...

    I made a translation rule of ^\D*(\d{3})\D*(\d{3})\D*(\d{4})$ with a translation of 91$1$2$3 (to get a number like 5552223333 to dial as 915552223333). However, it doesn't seem to work when I click-to-dial from a webpage.

    This brings up another question. Should changes I make in the admin console take effect immediately in the Lync client? Do I need to close/reopen the client? Or is there some service I need to recycle or something?

    Thanks!

    ReplyDelete
  15. That's quite the translation rule! You could simplify by just making it ^(\d{10})$. Lync will strip out any non-numeric characters for you.

    Although, in this case, it won't matter, because the Click-to-dial uses its own internal translation rules. See the comment above from Frank Carius.

    Regardless, you shouldn't be putting the 9 in your normalization rules. You should always aim to normalize to E.164, and use trunk translation rules to add the 9. You've already experienced one reason to use E.164, here's another example:

    Imagine you have a Lync implementation that connects to PBXs in 2 sites. SiteA requires a 9 to get out. SiteB doesn't. You set your routes up to use SiteA first, and SiteB if SiteA goes down. Using your method, if SiteA goes down, calls won't route out SiteB properly because you've added a 9 in the normalization. If you normalize to E.164, then you should add a trunk translation rule to SiteA to add the 9. That way, calls will be able to get out of either site without issue.

    Make sense?

    ReplyDelete
  16. Sorry, perhaps I got confused.

    That string above was my Trunk Translation rule, not my dial plan rule.

    Here is what I have:

    Global Dial Plan - My code above with a translation of +1$1$2$3

    Global Trunk Configuration - Translation Rule - My code above with translation of 91$1$2$3.



    Now, if the click-to-dial uses hardcoded strings in a .dll file as Frank suggested, I suppose it won't matter what I put for a translation rule right? Or did I misinterprete what Frank meant.

    I appreciate the help by the way! I've been at this all day and I'm pretty sure I'm going to see these normalization strings in my sleep.

    ReplyDelete
  17. OK, here's where you're going wrong. Your dial plan normalization rule uses that code to translate to +12223334444 (for example). You're trying to use the same code in the trunk translation rule, which won't work because the number has already been modified from the first rule.

    Your trunk translation rule should be expecting an E.164 phone number. So, for the rule to fire, it needs to be something like this:

    ^\+(1\d{10})$ ---> 9$1

    I still recommend starting from scratch and using the Dialing Rule Optimizer. It will take care of just about everything for you, so you don't have to dream about normalization rules. :)

    ReplyDelete
  18. Thanks for the response. A few questions/comments:

    1. I tried those settings without luck. For instance, I tried to redirect an incoming call to my cell, and Lync said it was't able to do that. My cell is showing up in Lync looking like (610) 555-1212 so I'm thinking the normalization is working. However, the forward won't work and neither does the click-to-dial.

    2. This brings up my question of, if I make changes to dial plan or trunk translation in Lync admin, do they get applied immediately to my Lync client? Do I need to restart the Lync client or restart a service on the Lync server or anything?

    3. I tried to use that Optimizer. I used our area code of 610, but I wasn't sure what to put for the Exchange. We are a small company, so I basically just need 1 rule for external dialing.

    4. Could my issues stem from having a misconfigured PSTN gateway? I admit that I totally guessed when setting that up. We have a Mitel 3300 phone system and their Live Business Gateway set up to link the phone system to OCS/Lync. I used the IP of the Live Business Gateway at the PSTN. Maybe that's not correct...

    I don't expect you to answer all of these, but as always, any help is extremely appreciated...

    ReplyDelete
  19. If you make changes to the dial plan, it will usually take effect in a few minutes. I find restarting the Lync client hurries things along. As for trunk translation rules, those should take effect in a few minutes (client restart won't help there).

    When using the optimizer, put in your 3-digit area code for the NPA, and the next 3-digits as the NXX. To make sure everything is setup right in Lync, I would just delete everything you've done (dial plans, usages, routes, trunk translation rules) and use the .PS1 from the Optimizer. That way, everything will be setup right.

    Your issue can definitely be at the PSTN gateway level (and probably is). Its rarely as simple as putting in an IP address. There is likely lots that need to be done on the Mitel, and there's no guarantee it will even work. A lot depends on the level of SIP support on the Mitel. You'll probably need the help of a Lync expert along with your Mitel people to get it working.

    ReplyDelete
  20. We have a phone list that displays the Telephone number in the ADUC profile for each user. It is a text box in ADUC if we put the individuals' DID in as their telephone number all is well.. but we have several users that don't have a DID, any way to get click to call to recognize +10000000000;extn=1234?

    ReplyDelete
    Replies
    1. Hey Jason,
      The IE click-to-call functionality only seems to work with a small subset of numbers. There isn't any way to change the functionality at this time.

      Ken

      Delete
  21. Is it possible to prevent installation of ochelper.dll or to prevent registration as browser add-on? Are the any setup parameters?

    ReplyDelete
    Replies
    1. There are some setup parameters available for Lync client installation (http://technet.microsoft.com/en-us/library/gg425733.aspx), but none of those allow you to prevent the browser add-on from registering.

      You can use Group Policy to manage add-ins. Check this out: http://technet.microsoft.com/en-us/library/cc985351.aspx

      Ken

      Delete
  22. In my situation Lync will detect my client’s phone numbers in one web page but not another. Someone sitting right next to him will detect the numbers in that web page. All numbers are in (123) 456-7890 format. What settings in IE8 should I look for that might block number detection?

    ReplyDelete
    Replies
    1. I guess this is a server blog. Thanks anyway.

      Delete
  23. So from what I am reading here there is no way to globally set it so that the lync click to call client will dial a 9? I'd have to go to the thousands of machines I plan on rolling this out to and do it manually (or configure a script to do so)?

    ReplyDelete
    Replies
    1. You shouldn't have to set the Lync click-to-call client to dial a 9. That should be handled behind the scenes in your trunk translation rules. The client should be able to click on a number in a webpage that is in E.164 format and from the client's perspective, it should just work. Your trunk translation rules should add the 9 before sending it on to the next hop gateway.

      Ken

      Delete
  24. How much control do we have over how the "Click -to- Call" icon? We have custom phone book and we would like for it to appear right justified and not at the edge of each number.

    ReplyDelete
    Replies
    1. There is zero control over where the icon appears in IE. Its all buried in the code and not accessible. Sorry.

      Ken

      Delete
  25. It's also too bad that the plug-in enforces an arbitrary limit of how many phone numbers it will find. Longer listings like www.pianoacoustics.com/piano_tuning_wa.htm only have a portion of their entries marked. Again, the plug-in is so poorly configurable that you cannot do anything to get around this annoyance except disable it.

    ReplyDelete
  26. I don't have the add-on on IE I have tried to get installed by going to Manage add-ons and no luck.

    Could you please advise?

    ReplyDelete
  27. IT monolith controls the servers and elephants don't budge...any way to have the click to call that finds (222) 333-4444 convert this to 12223334444 in Lync on the client side? Reg setting or OC client setting?

    ReplyDelete
    Replies
    1. As long as you have a normalization rule that normalizes 10-digits to 11-digit, it will work.

      Delete