The Great world of Lync UC SDK

After some time , i decide to write this post to share some of my thoughts about Lync developing. Some time ago I’ve wrote a Lync plugin (CallViaPhone app ) that let to use Lync client to start calls directly from an ip-phone, and it gave me a lot of challenges . So, questions could be :

  • Why do I need to develop an application for Lync ?

Professionals that know Lync , know that a lot of features are still not available (or not designed at all) and sometimes this lack of features, could move customers decisions to another technology. In this case we could “extend” Lync with SDK. A good example of cauldron of ideas could be : http://lync.ideascale.com/  .

  • Where should I start and what approach should I have?

First of all , we must have little confidence about developing, example could be install Visual Studio and try to develop some “hello world” application on different enviroments like WPF (XAML) to develop Windows applications with rich graphical interface, or console applications to develop Windows services , or .NET web applications , web services , and so on. But the question could be, why should I have to learn all of these ? Because we need to have a 360° vision and we must use the right enviroment for the project.

Secondly we must have clear what we want to do : do we need a client application to extend Lync client , or we need to develop a server side application centralized for all users , or both? In all of these case we could find a lot of example on how to do it . A good starting point could be this : http://msdn.microsoft.com/en-us/library/office/jj162980(v=office.15).aspx , in which there is a lot of explanations about these :

  • Lync 2013 SDK (client side)

– These API gives you the possibility to control almost all Lync client behavior ,and interact with it. Example could be CRM integrations , client PBX integration , etc…

– There are also the option to add some custom menu in Lync interface to call applications or web url with registry key; for more information visit : http://msdn.microsoft.com/en-us/library/office/jj945535(v=office.15).aspx

– One of the most advantage of Lync Client API , compared to the others Lync API, is that you can develop also in a Office365 enviroments without the needs of a Lync On-Premisev env.

  • Lync Server 2013 SDK (server side)

– With these API you can manage,  in Lync Front End role , all sip communications. This means that, for example, i would like to create the BusyOnBusy feature (actually missing from Lync features)  , so i could develop a “Sip application”  with the “SIP application manifest” (MSPL script) that intercept a call if the user lync called is actually in another audio call.

– Another way to use Lync Server 2013 SDK is to develop a “Managed SIP applications API” ;  the mode is similar to MSPL script , indeed you must start from a MSPL script that route (forking or forwarding) the sip signaling to one or more specific endpoint, and then you can develop a .NET application that manage it. An example could be a reporting third party solution, or some advanced applications that take care of all Lync conversations .

  • UCMA 4.0 (Server side)

– With UCMA we can develop almost all of advanced features needed in enterprise scenario , for example , based on business needs we can develop a full functionally contact center with IVR (not response Group 🙂 ) , routing logic and so on. Great advantage is that we can extend it with all lync communications channel  , such as Audio, Video, IM, federation, Public (Skype, etc…) . UCMA give us also all tools that typically you have to pay so much with other vendors , for example : “Text To Speech”, “Speech Recognition” in a IVR enviroment.

  • UCWA 1.0 (web side :))

–  Unified Communications Web API ,  actually with these API you can develop your own web applications with some features like authentication, presence, IM and the Call Via Work (you simply manage the call forwarding , simultaneosly call, of your lync user) . We hope as soon as they will be ready , also Audio, Video and other lync features could be used in web applications. http://ucwa.lync.com/documentation/core-features .

  • Lync Software Defined Networking (SDN) API

– Imagine that you are at carrier side and you have to monitor some indicators for Lync quality , network performance , etc.. You have to integrate all of these in a third party monitoring system  ; these API is exactly what you need; take a look at this for other informations : http://msdn.microsoft.com/en-us/library/office/dn387069(v=office.15).aspx . A very interesting tool inside this API is the “SIP Obfuscator” that let you to hide username for privacy.

Conclusion

We have a lot of other sources to read about Lync SDK, for example these resources below are absolutely useful and saved my time in a lot of situations   :

Remember that deep knowledge of Lync API is not enough to develop a Lync applications ready for the market , we have to consider that there are a lot of aspects in terms of exceptions, enviroments , usability , integration with other not Lync application  , licensing , security, and so on .

A lot of companies today invest in Lync developing , awesome example are :

 

CallViaPhone Advanced new feature for Outlook 2010/2013

Hi all,
I am pleased to announce a new version of CallViaPhoneAdvanced 2013 . As already mentioned in my previous posts,  CallViaPhone application,  through Lync interface, can be used to make and handle calls (similar to Better Together features of snom and polycom) to your phone (make call, close, hold, transfer, conference) , for more details please refer to this post CallViaPhone post detailed description .
Here below you can find new features of this version more in deep :

  • One of the most important new feature added is  that, from now, you can also use Microsoft Outlook 2010/2013, regardless of Lync. So the “call by phone” can be made ​​as described below:
    • From contacts in mail header or in appointment header:

mail-item

  • From Outlook Contacts Folder :

contact-item

  • New menu in configurator to use CallViaPhone with these ip-phone models :

PhoneModelsChoose

    • Snom Phones (default selection)
    • Cisco ip-phone (require some configuration on Cisco Call Manager, with this version we don’t have yet features like Close call, Hold Call, transfer call and conference call and Incoming call feature)
    • Yealink ip-phones (not available Incoming call feature)
    • Automatic check for new applications updates

You can download full version  (15 days limited) :

  • If you don’t have Lync  installed you can install any of these above for using Outlook callviaphone feature.
  • If you already have an old version of CallViaPhone , you don’t have to uninstall it, just install over.

For any questions don’t hesitate to contact sales@callviaphoneapp.com or support@callviaphoneapp.com

Review of “Getting Started with Microsoft Lync Server 2013” by Fabrizio Volpe

Hi all,

I just finished reading the book written by Fabrizio Volpe on Lync 2013 and my first impression is very positive (you can find information about Fabrizio here) .

The book has a well-organized structure and has a very fluid writing. This allows readers to read without getting bored. Entering deeper into technical topics I can say that is very comprehensive in all of it and personally there are parts of it that I’ve not yet had the opportunity to implement in my various projects such as SQL witness and all scenario in which disaster recovery is necessary by design. Topics about Enterprise Voice is very clear and to start learning about this very important argument it’s a good starting point.

Another important aspect is that it can be very useful for post-delivery documentation, for example during a project, each of us should write a lot of documentation and it must be complete and especially comprehensive as much as possible because customers could not be a Lync Expert; so this book could be for you. Obviously there are certain aspects that each of us must deepen with external resources , and for this reasons Fabrizio wrote, in the book, a lot of external link that help us on it.

So in conclusion for me it is a must-to-have book and if you want to buy it you can go to PacketPub store or Amazon Store .

Getting started with Microsoft Lync Server 2013 by Fabrizio Volpe

Call Via Phone ADVANCED for Lync 2010 & Lync 2013 , deep review and download link

Hi all ,

As i wrote in my previous article that you can find here : CallViaPhoneAdvanced  , this plugin is developed for SNOM phone and Lync 2010/2013 and permit to control the phone with right click on a contact in Lync (Lync contacts, Outlook contacts , Active Directory contacts) and start calls directly from the phone, like CTI (Computer Telephony Integration) .

We know that in WPC 2013 , SNOM demonstrate Enhanced Better Together that could be available at the end of 2013 , in Matt Landis blogpost here , you can find a detailed description.  This new SNOM feature add a new driver in Lync that let you choose what default Audio device use for every call that you made from lync , these calls start from the phone , also when you receive a call you pick up the call from the phones and not from the client (if you have already configured  the snom audio device in Lync down- left menu ), but a good things is that you when you are in conversation , you can switch this call between Lync client and snom phone.

So what’s the difference between CallViaPhoneAdvanced and SNOM EBT ? There are more than one difference and benefits :

  • CallViaPhone Advanced doesn’t not require Lync user to have Enterprise voice for Outgoing call functionality (for example if you use snom phone connected to other vendors like asterisk, cisco ,etc.. and you use Lync with or without PBX integration )
  • When you start a call , if you want to decide call per call which phone use (snom phone or lync client) with CallViaPhoneAdvanced you can.
  • CallViaPhone Advanced allows  future customization and it’s in continuous developing  (Programming Phone keys, full interaction with any functionality available on the Phone)

Thanks to Michael LaMontagne,  a very skilled Lync Expert in Canada , i also develop the incoming call feature that let you to answer an inbound call from the phone, this simple adding another toast in left side of Lync toast with an “Answer by Phone” button, simply and immediate for user experience. But starting from this imagine how many customization we can implement :

  • when and incoming call arrive, start an external application with caller information (CRM?)
  • Busy on second call or based on presence status

In addition i want to encourage who want try the application (15 days limited) to download from link below  :

For last version please refer to this post.

if you want to learn more you can find an awesome review here made by  Michael LaMontagne.

Don’t hesitate to comment or ask information about it .

Call Via Phone ADVANCED for Lync

Hi all ,

I’m glad to announce the new Call Via Phone ADVANCED for Lync 2010 & Lync 2013 .

Call Via Phone Advanced application is a plug-in developed for interoperability between Microsoft Lync 2010/2013 and SNOM (but not limited to). This plug-in permits making call from your phone directly using your Lync client 2010/2013, via a simple click on a contact or a number and selecting “Call Via Phone” from Lync menu; the call will start directly from your phone without having to dial the number or search your contacts on the phone itself. The usage scenarios can be many, and the common denominator is surely to simplify and consequently save time in day by day activities.

Call Via Phone Advanced is fully integrated with Lync client, in fact after  installation you don’t need to run any additional service or application, but it’s called through a menu inside Lync client.

CallViaPhoneADV2

Below some scenarios in which Call Via Phone ADV can be used  :

  • Infrastructure Lync 2010/2013 integrated with voice, and phones connected directly to Lync .
  • Infrastructure Lync 2010/2013 not integrated with voice, and ip-phones connected to any other PBX .
  • As we know Lync 2013 and Skype are integrated also with audio, with Call Via Phone Advanced you can quickly call a skype users from Lync client and use IP-Phone insted of Lync client.

Call Via Phone Advanced installation is very simple and can be installed centrally because it’s provided with the installation package MSI (Microsoft Installer) and distributed through group policy on all clients.

The configuration of each client is due by entering IP Address of the phone to associate with, Lync extension or username, password or Lync PIN.

With “Call via Phone Advanced” you can also have the ability to handle the call (today only for SNOM phones) with various tools that allow to :

  • End Call
  • Hold call
  • Party adding
  • Transfer
  • Conference

The product is under continuous development with additional features, and on specific demand it can be also change to adapt to your enviroment.

Today Call Via Phone Advanced is available for SNOM ip-phones.

Under specific request to sales@callviaphoneapp.com , Call Via Phone Advanced can also be used in enviroment with these ip-phone vendors but not all models  :

  • Cisco
  • Polycom
  • Grandstream
  • 3CX
  • Yealink

Don’t hesitate to contact sales@callviaphoneapp.com for information and to request your evaluation copy.

If you want you can also download free-version here :

Link to : Call Via Phone freeware

Here below you can find brief functions description that you can have with freeware version :

Call Via Phone Description

NEW: Call Via Phone application freeware for Lync 2013 and Lync 2010

Hi all,  after a couple of months I’m happy to inform that I implement a new version of  Call Via Phone app for SNOM device. This version work also for Lync 2013 and obviously Lync 2010.

Step to install this new version :

  • Uninstall any old version of callviaphone   before install this one.
  • Install the latest KB for lync 2013 kb2760512, otherwise it don’t work on lync 2013 and work only on Lync 2010. 

Following all Windows version tested :

  • Windows 7 32/64 bit
  • Windows 8 64 bit

Following is a brief guide:

Unique Installation for 32 and 64 bit :

Download link :  Call Via Phone app

Once installed go ahead with the setup.

Configuration

  • Start Lync 2013/2010 Client and go to Tools –> Configure Call Via Phone App
  • After that a Message Box appear , and after you fill the field with phone IP address  , Extension or Username and PIN or Password,  click to save.
  •  After that, you are now ready to use the call via phone app.

Usage

On your buddy list , right click to a contact and click “Call Via phone” , at this point your SNOM phone must start to call the contact selected from Lync.

Please give feedback and do not hesitate to contact me for any kind of information or problem.

if you want to donate to help and encourage the development you can follow this link :

 

NEWS *  :  You can find also Call Via Phone Advanced version here :

Link to Call Via Phone Advanced for Lync 2010/2013

Feature added on CVP Advanced :

  • When you click on a contact you can choose which number to call using the phone (Lync , Mobile, Work, Voice mail)
  • After a call has started you can control  (Close, Hold, Add call, Transfer, Conference)

PBX replacement with MS Lync (with Dual Forking) Part 2

As i mention in my last post (part 1) we can choose to use the Voice gateway in pass-through as shown here :

PBXReplacementPart2_Example_base scenario

but to do this , we have to consider various steps before moving the IP-PBX in production  and insert voice gateway between PSTN and the enviroment, so let start from the beginning,  these are necessary steps :

1.  Voice gateway configuration for PSTN trunk (only configuration not yet connected), in the other side (to lync and to PBX) configuration of SIP trunk to Lync and SIP trunk to IP-PBX (IMPORTANT : to obtain a dual forking of calls in this scenario we must use only sip trunk to and from  PBX , so we must have an IP-PBX with sip trunk enabled ).

At this step we don’t have any disservice on IP-PBX production environment but we are ready to switch PSTN from IP-PBX to Voice gateway .PBXReplacement_part2_Example_step1

2.  We can schedule session tests to verify that all configuration made before work    fine (for example during time range in which we couldn’t have any outages to users, for example during the night?), in this way if not all scheduled tests list will be fine , we can rollback easily and move PSTN trunk to IP-PBX again.

To achieve this we must locate the Voice gateway properly sized, to mantain compliance on  requirement in terms of business continuity, for example redundant power supply , right number of SIP channels to/from lync, and to/from IP-PBX.

In this way we can also test a SIP trunking from a provider instead of PSTN (or buy another PSTN trunk to do a test pilot for Lync voice for example) , because until we switch the PSTN from IP-PBX to Voice Gateway, we can work easily in Voice Gateways side without give any problem in IP-PBX side.

About call flow management and dual forking we have the same behavior as i wrote in my previous post (part 1) , unique difference is that all configuration for dual forking is made in Voice gateways side , and in PBX side we have only to switch all inbound and outbound call to the new SIP trunk instead of PSTN trunk already switched off.

At this point we can assert that we have a lot of way to do a soft migration or simply to use the existence telephony infrastructure for Lync and generally Microsoft UC. We know that Microsoft Lync just for presence/audio/video/conference is really wasted and with a good approach and a small effort we can implement an excellent Lync Voice project for a really Unified Communications experience.

PBX replacement with MS Lync (with Dual Forking) Part 1

Talking about PBX replacement with MS Lync can be a difficult argument when proposed to customers. But as the nature of MS Lync we have a lot of ways to do it. Usually we can meet two different type of customers, one can think that his employees must change how they work day by day, and for this reasons we can explore solution with direct switch to new technology providing a direct cut-off ; the other one,  not so confident,  prefer a soft migration and possibly a true coexistence between old and new phone system, the last one obviosly is more complicated,  but surely the most funny for us:-), i want to explain  you how we can do a soft migration also with a good coexistence, for now i can mention 2 type of IP-PBX or TDM-PBX: ALCATEL OXE and Cisco CCM.

The first important thing is that all of this project must provide a Voice Media Gateway to ensure that all translation and, eventually transcoding,  from one system to Lync and viceversa don’t drive us crazy…:-)

Actual Infrastructure Enviroment without integration

PBXReplacementExample_base scenario

Based infrastructure consider that we have a fully up and running Lync enviroment and a consolidate Phone infrastracture .

Scenario  (Coexistence with Dual Forking)

If we have a ALCATEL OXE (with remote extension license), CISCO CCM (sip forking with extension mobility license) or a TDM/IP-PBX that support forking to another number not included in its dial-plan (for example to a sip trunk or TDM trunk connected) we can consider this scenario :

PBXReplacementExample_scenario1

Using  Voice Gateway between Lync and Phone infrastructure give us a lot of configuration that otherwise we could not easily do without provide a big effort from the Phone system team .

In this scenario we can consider this events :

Inbound call from PSTN : When we receive a call from PSTN to +3906….4444 , call arrive to PBX , PBX at this stage send the call to the extension in its dialplan and see that there’s also another number associated (for example 9994444) and , in parallel , fork this call to that number with 999 (a prefix trunk associated to the Voice gateway).

When the call arrive to Voice Gateway with destination number 9994444 , it translate called number in +3906….4444 and send to lync .

Result  :  Lync client (or lync phone) and PBX phone ring at the same time, and when one of this two pick up the call ,the other one stop ringing .

Inbound call from another PBX phone : When we receive a call from another PBX phone  to 4444 , call arrive to PBX , PBX at this stage send the call to the extension 4444 and see that there’s also another number associated (for example 9994444) and , in parallel , fork this call to that number with 999 (a prefix trunk associated to the Voice gateway).

When the call arrive to Voice Gateway with destination number 9994444 , it translate called number in +3906….4444 and send to lync .

Result  :  Lync client (or lync phone) and PBX phone ring at the same time, and when one of this two pick up the call ,the other one stop ringing .

Outbound call from Lync to other PBX phone : In lync we have two way to make a call to a contact, if we make a classic Lync call , this call remain inside Lync enviroment but if we make a work phone the call is translated for example in extension format :

– Digited : +3906……4444 , normalized in 4444  so the call are sent outside Lync through the Voice Gateway  and arrive to the extension 4444 , as i mention before in pbx enviroment 4444 have another extension configured (9994444) that corrisponds to the Voice gateway trunk and the same call was also diverted to Lync client .

Result  :  Lync client (or lync phone) and PBX phone ring at the same time, and when one of this two pick up the call ,the other one stop ringing .

Yes i know , a little cumbersome but it’s work fine .

Inbound call from lync to PBX and dual forked to lync

Outbound call from Lync to other PSTN: All external calls made from Lync follow the classic flow to PSTN (Voice Gateway –> PBX –> PSTN) , it’s important to know that all calls made by Lync can have the same Calling number as the associated extension in PBX dial plan :

– for example if i make a call from PBX phone my external DID is : +3906……4444, but PBX add instead of me the +3906….. (* maybe that +39 is not considered in a national call) .

When i make a call from lync if i want that it must be the same calling number as the PBX phone ,  i have to configure on Voice Gateway a good format for PBX to accept DID so for example in ALCATEL enviroment i must pass to it the call in this format :

calling number (Lync side) +3906…..4444  — >  Translated by VG in  : 06…..4444 , in this way ALCATEL recognize the call as one from its dial-plan, otherwise can appean that my calling number is only +3906……. without the extension.

Result : the call appear to PSTN exactly from one number shared by Lync and PBX and we can realize a true Single Number Reach

Requirement for this scenario

We have to consider that if we make a QSIG trunk between PBX and Voice Gateway my advice is to use a QSIG-GF (Generic Function) not basic because there are a lot of service such as call diversion, line identification, etc.. that is not implemented on QSIG-BC (Basic Call).

If we choose a SIP trunk between PBX and Voice Gateway we have to consider in Voice Gateway side licenses for IPtoIP and eventually transcoding with DSP onboard because if we configure trunk from/to PBX in a RTP codec different from G711, for example G729 , all calls are trascoded (Lync Mediation server work only in G711).

I hope that this post can be useful for you , and please don’t hesitate to comment 🙂

In part 2 we’ll consider a scenario in which I’ll describe the positioning of Voice Gateway in passthrough between PSTN and PBX to prepare a clean migration phase.

UPDATE 1.1.5: Call Via Phone application for Lync 2010

Hi all, I developed an application  to grow the capabilities of the call via telephone in an environment that includes Lync and SNOM as ip-phone with the firmware Apollo or oldest. At this time only Lync IP-PHONE version with a “USB “Better Together” can make call via Lync 2010 Client. So with this application you can able to do also with all the SNOM UC Apollo firmware and also with the oldest SNOM OCS firmware. As most of you know the new Apollo firmware allows authentication by inserting Extension and PIN, or as an alternative, but more cumbersome, the use of username and password.

At this time it work only in Lync 2010 client , the extension of Lync 2013  is still in development.

Following all Windows version tested :

  • Windows 7 32/64 bit
  • Windows 8 64 bit
  • Windows Server 2008 R2 64 bit

Following is a brief guide:

Installation

Updated 32 bit version 1.1.5 download:  Call Via Phone app 32

Updated 64 bit version 1.1.5 download:  Call Via Phone app 64

Before install it , unistall the old version from Control Panel. This new version  solve an issue regarding “phone-context” string manged by the SNOM phone , thanks to Olivier Kiel for feedback about it.

Once installed go ahead with the setup.

Configuration

Start Lync 2010 Client and go to Tools –> Configure Call Via Phone App

After that a Message Box appear , and after fill the field (information below is not real, provide you own configuration) click to save.

 After that, you are now ready to use the call via phone app.

Using

On your buddy list , right click to a contact and click “Call Via phone”

Please give feedback and do not hesitate to contact me for any kind of information or problem.

if you want to donate to help and encourage the development you can follow this link :

Download Link :

Updated 32 bit version 1.1.5 download :  Call Via Phone app 32

Updated 64 bit version 1.1.5 download:  Call Via Phone app 64

NEWS *  : New Call Via Phone Advanced version  coming soon with this feature :

  • When you click on a contact you can choose which number call using the phone(Lync , Mobile, Work, Voice mail)

SNOM UC apollo 8.8.1.13 released

This new firmware solve all problem that i mentioned in my last post with firmware 8.8.1.11 :

  • There’s no need to have  an edge server in Lync infrastructure for Ringback issue
  • “Not registered” message on snom phone during the day.
  • Problem when you add a snom phone from a Lync based conference

For other information and to download last firmware please visit http://www.snom.com/