Microsoft Introduces the Azure Communication Services (ACS): Twilio Competitor, Not a Native Microsoft Teams API & Comparison to Microsoft Teams Graph Communication API


In Feb 2020 I wrote a prescient article entitled "Where is MS & Microsoft Teams in the OnPrem to CPaaS Journey?" in which I explored where Microsoft was with a "Twilio-like API" for Microsoft Teams. At that time I estimated Microsoft is about 25% (looking back, perhaps a bit generous) of the way to a "Twilio-like API" for Microsoft Teams.

Well, today at Microsoft Ignite 2020 Microsoft has announced the Azure Communication Service, which is most definitely aimed at being a "Twilio-like API", but to accommodate no AAD requirement, it does not interface directly with Microsoft Teams. 

What is the Azure Communication Service?

The Microsoft Developer article describes it like this "Built on the same Microsoft 365 infrastructure that supports Microsoft Teams, ACS offers developers consumption-based use of those same enterprise-ready chat, SMS, video and WebRTC capabilities".

It is an communication platform as a service that provides apis to build your own communication enabled apps. This means for those developers wanting to build a SMS, IM, audio, video & desksharing app, developers don't need to build the low level communication components, they can just use the apis to utilize Microsoft's services.

What is the difference between the "Microsoft Graph Communication APIs" for Microsoft Teams and "Azure Communication Service"?

Here is a quick comparison, first Teams Graph Communications API | Azure Communication Service:

Calls automated with CommAPIs show up in MS Teams reports | Unrelated to MS Teams

Utilizes the MS Teams platform you already paid for | Consumption based, unrelated to MS Teams billing

Requires Teams/AD Users | Does not require AD Users

Integrated to MS Teams/Automated MS Teams calls/meetings | Separate systems from Teams/Could integrate via SBC/Federation? (appears like Microsoft "light up integration to Teams in Preview soon..."-CVP Scott Van Vliet source: )

Increasingly complete server API & no client API | Server API's & Client API's

audio calls, video, PSTN | SMS/IM/audio/video/PSTN/


What Modalities Does ACS Support?

Below are some of the communication methods supported by ACS per the current Docs page:

  • Chat
  • Telephony
  • SMS
  • Voice
  • Video

Our Experience Using the ACS Preview

Building a simple chat and video conferencing app with ACS is very simple. 


ACS looks to provide a very nice Microsoft alternative to Twilio and other CPaaS API options. The Server and Client API components are complete enough to create many interesting solutions today. It is not a replacement to create native Microsoft Teams solutions.

To learn more about the ACS, watch the session "Innovate with Azure Communication Services" from Microsoft Ignite 2020.


Azure Communication Service API Docs:

Ignite 2020 Microsoft Teams Developer Platform Article:


Microsoft Adds "Advanced Communication" License That Teams Users Need On Top of Existing Commercial Licenses to Use Recent Meetings & API Features

At Microsoft Inspire 2020, Microsoft noted that it will be adding a new user license for some select meeting and calling features called "Advanced Communication" license. This license will be additive to existing commercial licenses (like E5).

Some of the types of features that will require the "Advanced Communication" license noted at Inspire 2020 are:

  • Large meetings
  • Customized lobby controls
  • Compliance / policy call recording
  • Etc.
Angela Donohue, in session IDB151 noted the license would be available later this month.

Update: Microsoft has now communicated more granularity[1] on what will be included with the "Advanced Communications" license:

  • Released at launch
    • Live event limits to 20k participant (50 concurrent, 16 hours)
    • Compliance Recording integration (ISV)
    • Contact Center solution integration (ISV)
  • Released later in CY2020
    • 1000 person interactive Teams meeting
    • Interactive meetings for 1000 participants with the capability to enabled up to 20,000 in a 'view only' meeting
    • Custom branded meeting lobby
  • Beyond
    • Additional customizations, tool and communications enhancements will be added to the SKU throughout the calendar year

Some Questions We Had

I had a chance to chat with a person at Microsoft who answered some of my questions related to "Advanced Communications":

Q. Will "Resource Accounts", used to call auto attendants and call queues require the "Advanced Communication" license?
A. No, "Advanced Communication" license is just a user license and resource accounts will not be changed.

Q. Do Teams Apps or Bot require this license?
A. No.

Q. What features will all need the "Advanced Communication" license?
A. [still collecting the exactly list of what features will require the new license...]

Q. Cost?
A. The "Advanced Communication" license will be available on August 1, 2020. A 60-90 day trial license will be available on August 1. All commercial  licenses can have this added to it, and at this time no license includes it. The license will be $12 per user per month. EDU licensing is $2.50 per user per month.

Some Comments on this change

For users who do not need to advanced meeting features, but need compliance recording, the net effect is paying for usage of the Microsoft Graph API's, and in the case of call recording, a license that costs more than call recording vendors typically charge per user. It is also somewhat unusual for Microsoft to charge for using Graph API's. I am not aware of other products like Exchange, SharePoint or Azure charging to use Graph API to interact with a product a user is already licensed for. Also, in the industry, as already noted, vendors like Zoom include REST API's in their lowest tier user pricing. This could seem like Microsoft is not incentivizing ISV's to build their solutions on the Microsoft communication platform, which is almost certainly not the effect Microsoft is wanting to achieve. 

In Conclusion

Covid19 has been putting pressure on Microsoft to add some features. Microsoft Teams has indeed been receiving a tsunami of features recently. It seems the "Advanced Communication" license may be an effort by Microsoft to recoup some of the costs going into adding these features, and question is if this should be passed on to the customer.

[1] Microsoft "Advanced Communication FAQ" 

Microsoft Teams User tip #28: How Does a Teams Recording Handle Switching Between Webcams?

One of the things I've noticed using Microsoft Teams recording is that the recording will not necessary look or sound exactly like what the meeting organizer saw.

One of the items I noticed today is around switching webcams. When you switch between webcams you will can a momentary blank/black screen. By momentary, I should clarifying that this actually can take some time. Then the new webcam will start presenting.

The interesting thing is that the recording handles this slightly different. In recording the webcam image will freeze until the next camera starts.

In my opinion its really nice that you can switch between webcams so easily using native Microsoft Teams switching capability. In normal scenarios switching between webcams only happens to those with way too much hardware plugged into their PCs, but its good to know what effect switching will have on a recording.

If you want the switching on the recording to happen more smoothly, take a look at using OBS Studio  & webcam driver.

How Microsoft Teams Calls App for Slack Works

Slack and Microsoft Teams have surprised industry watchers by adding a "Microsoft Teams Calls" Slack app. A question is: How does this work? Let's install and see.


First you will need a Slack and Teams account. Sign into Slack and go to: Click "Add to Slack"

Now you will get a Slack permission. Next Teams/Microsoft permissions.

Create & Join Meetings

In essence you will now have a "/teams-calls" bot in Slack that you can create a meeting in any Slack channel. Using the Join button others in the Slack channel can join the meeting.

From my test the time "Meeting started xx ago." is when the meeting was created. The only user that shows for me is the user that created the meeting. If more people join the meeting, the do not show up in the bot post in the channel.

The below example was created 10 minutes ago. I joined the meeting 5 minutes ago. And another user joined after that, but does not show in the channel link to the meeting.


Slack has a call button at the top of the screen. It looks you can set this call button to use Microsoft Teams. I suspect this will use the protocol handler to dial a call using Microsoft Teams (similar to how Outlook and web pages dial from Teams) but I could not find where to configure this feature.

Jump Into Scheduled Meetings

This looks like Slack reminders will surface Outlook Teams Meeting Join info.


From what I can see, this Slack app allows meetings and calling to be initiated from Slack if a user has a Teams account.

COVID19 Progress Tracking

The above chart track the raw number of confirmed cases based on John Hopkins report.

The above chart tracks the percent of country population of confirmed cases.

To see the up to date spreadsheet: Click Here

Microsoft Changes Microsoft Teams Compliance Recording API Name to "Policy Recording"

Its interesting to note that Microsoft has changed the name of the Microsoft Teams "Compliance Recording" API to "Policy Recording" to more accurately describe what it does. This name change was noticed on Github as shown below.

I find this an interesting and good move as Landis Technologies has developed a Microsoft Teams Call Recording solution using the "Policy Recording" API's (formerly Compliance Recording) for convenience and customer service scenarios. (We are not focusing on compliance recording scenarios at this time.) You can see a demo of the Landis Call Recording for Microsoft Teams here.

A few nice things that the Policy Recording api's allow in Landis Call Recording for Microsoft Teams:

  • Any peer to peer call can be recorded (PSTN, p2p or Meetings) for a user with the policy enabled
  • The recording happens no matter what client the Teams users is using
  • There is a notification banner in the Teams client that call recording is happening
  • Using our agent the user can pause recording or stop recording if Landis Call Recording policy allows that.

I think this name change is a good move as it more accurately reflects the breadth of what the "Policy Recording" apis/ hooks can do.


Landis Call Recording for Microsoft Teams on Appsource:

Demonstration of Landis Call Recording:

Where is Microsoft & Microsoft Teams in the OnPrem to CPaas Journey?

In a recent Microsoft Community article Marissa Salazar noted that:

"The last piece of the puzzle is here! The last API to enable partners to develop contact solutions is now available."

Translated into plain English for the rest of us this is saying: "You can now connect existing contact centers to Teams via a SIP tie trunk" and there is an initial Graph presence API to see presence of Teams users from a client/user perspective. (See more of my technical details on the API here.). Or in other words, "The last piece to integrating existing contact centers to Teams is now in place"

Vendors that are producing Contact Centers using only the Microsoft Teams Communication API do not have all the API's they need to produce a complete Contact Center. In Microsoft parlance this is a "Power" contact center. (most people in the industry I hear calling this "native" Microsoft Teams Contact Center.)

For those integrating to an existing SBC SIP tie trunk connected Contact Center (Microsoft parlance is "Connect" contact center) the ability to do Direct Routing plus a Presence API opens up connections to existing Contact Centers. A UC solution really should be able to facilitate an SBC connected contact center, so this is really good progress! This might be better explained as the last piece of the first half of getting parity with Skype for Business Server: Microsoft now can "integrate" contact centers to Teams, and now Microsoft needs to complete an API to create Contact Centers that only use Teams and are based completely on Office 365 Phone System components.)

So where is Microsoft and Microsoft Teams in the OnPrem to CPaaS journey? This is my "back of the envelope, quick scribble on the naptkin" version of where I would estimate we are at:

  1. OnPrem: Skype for Business Server
  2. Hosted: Skype for Business Server 
  3. UCaaS: Skype for Business Online & MicrosoftTeams
  4. CPaaS: Microsoft Teams + MicrosoftGraph + Communication API
  5. What's next?

A bit more detail on 3 and 4:

No, "the last piece of the puzzle" is *not* quite here yet. Maybe a more accurate announcement to avoid confusing customers would be "We now have the last piece of the first half of the puzzle." ;-)

But its coming along. And right now I would not be switching away from Microsoft Teams and would not recommend anyone else to do so either. The new Microsoft Teams features are raining down so fast its hard to keep up. Its the best time to be a Microsoft Teams focused Microsoft Partner, ISV and user.

PS-Landis Technologies is creating a Contact Center and Attendant Console that is entirely built on Microsoft Teams & Phone System. (Native). We get the question multiple times a day: We want a Contact Center and Attendant Console solution built entirely on Microsoft Teams like Landis is doing and Microsoft people are telling us "We have the last piece of the puzzle for API's!". What is the real state? Landis Contact Center for Microsoft Teams, which has many of the most requested contact center features already, is in Preview due to some key features being dependent on Calling API's which are still BETA. There are additional contact center features we would like to add, like outbound calling & more, that are not BETA/Preview yet from Microsoft. And a client based Teams Attendant Console is depending on the lack of any Teams Client Call Control API at all. In the mean time some customers can use our existing Attendant Pro in interop mode.)

My details on what is released on Teams Communication API:

"Last Piece of Puzzle" article:

Luca Vitali: Skype for Business and Teams features comparison table

Landis Contact Center for Microsoft Teams:

Landis Attendant Console for Microsoft Teams

UserVoice Teams Client API for Call Control

My First Impression Review of the Lenovo Thinksmart View Microsoft Teams IP Phone

The Thinksmart View is an interesting new form factor IP Phone-like device that is Certified for Microsoft Teams by Lenovo. Lenovo calls it a "...collaborative smart device that works from an individual’s workspace...". I might call it a next gen IP Phone for users who tend to use a bluetooth headset.

My Video Review

Plugs and buttons

  • Power plug
  • Volume up and down
  • web cam privacy shade
  • microphone mute slide button

Lenovo ThinkSmart View Official Page Tidbits

  • Cortana Integration: Based on the Lenovo landing page images there will be Cortana integration.
  • The Lenovo landing page also shows a home screen apart from the Microsoft Teams client, but my unit starts up right into the Teams client like other Teams IP phone. 
  • Hotdesking: "It’s flexible enough for hotdesking..."
  • FUTURE: Chat/FileSharing: Also, this interesting tidbit: "Future updates are planned for the deployment of convenient features such as chat, file-sharing, and more."
  • When you’re not using the device, it will stay locked with a four-digit personal identification number (PIN), and if they’re paired via Bluetooth®, the device will lock in tandem with your PC.


  • 5MP wide angle (720p)
  • 1.75" 10W full-range speaker
  • Bluetooth® 4.2 (LE)
  • 8" HD (1200 x 800) IPS touchscreen
  • NOTE: This device does not have a battery.


  • What might be unexpected for a corporate communication device is that this devices has no Ethernet or USB ports, but it just might not be needed.
  • Landscape AND portrait mode 
  • It might look like a control unit for a Teams Room System, but without a video output it doesn't seem ideally suited for Room video, even for a fairly small room. (Individual video is a different story) 

Some of My initial Usage Notes:

  • Pros
    • 8" screen means Teams client is a nice size for touch
    • Solid build quality: It feels like "Think" quality
    • Interesting form factor
    • Speaker phone produces solid sound
    • Lenovo mention of "hot desking" sounds interesting
    • Hardware video and audio mute is execellent

  • Cons
    • The lack of USB might feel limiting for some applications
    • Webcam is 720p and I'm used to PC 1080HD cameras, so this seems a step back
    • Shows meeting content, but an 8" screen doesn't show a PC desktop monitor very well


The ThinkSmart View is an interesting form factor. Build quality is excellent. Its not for those who want a traditional IP Phone experience, but it could fill the need for a dedicated device a user can walk up to and start using on the desk. Lenovo is positioning this device as something that can fill a hot desk or common area scenario. Perhaps "hot desk" but it seems a lack of handset makes it a bit unhandy for walk up/ad hoc usage. Likely the best fit is the millennial executive desk communicator device.

Official Lenovo landing page:

How to configure a Microsoft Teams Compliance Recording BOT Policy Using PowerShell

Some organizations using Microsoft Teams in telephone/voice scenarios need the ability to record every call. Microsoft has opened up the ability to address this scenario by giving Microsoft Teams Administrators the ability to assign a policy to users that adds a Microsoft Teams Calling Bot to every call they take. In short, the PowerShell assigned policy lets you define an App ID that is invited to the calls the target user makes. 3rd Party ISVs can build these bots that are invited to the calls.

Create & Assign Compliance Recording Policy to User(s)

Create Application Instance
  • New-CsOnlineApplicationInstance -UserPrincipalName <> -DisplayName <displayName> -ApplicationId <your_botappId>
  • Sync-CsOnlineApplicationInstance -ObjectId <objectId>
Note: <Your_botappId> will be an ID your Compliance Recording vendor will give you, unless you are a developer making your own.

Create a Compliance Recording Policy: Requires the application instance ID created above. Continue your PowerShell session and run the following commands.

  • New-CsTeamsComplianceRecordingPolicy -Tenant <tenantId> -Enabled $true -Description "Test policy created by <yourName>" <policyIdentity>
  • Set-CsTeamsComplianceRecordingPolicy -Tenant <tenantId> -Identity <policyIdentity> -ComplianceRecordingApplications ` @(New-CsTeamsComplianceRecordingApplication -Tenant <tenantId> -Parent <policyIdentity> -Id <objectId>)
After 30-60 seconds, the policy should show up. To verify your policy was created correctly:
  • Get-CsTeamsComplianceRecordingPolicy <policyIdentity>
Assign the Compliance Recording Policy

Requires the policy identity created above. Continue your PowerShell session and run the following commands.

  • Grant-CsTeamsComplianceRecordingPolicy -Identity <> -PolicyName <policyIdentity> -Tenant <tenantId>

Compliance Recording Policy Settings


Some Other Notes & Discoveries

Here are a few other interesting facts about the Compliance Recording Bot functionality:

  • This ability to add a bot to every call is not limited to "call recording" functionality and it could be used for other functionality an organization wants to apply to call calls of a set of users.
  • The bot that is invited into the call does not show up on the roster of the user in the Teams client. If a call is recording the ISV will utilize API functionality to display a banner message in the Teams conversation window "Recording Started".
  • Is there a notification for PSTN callers? As far as I can tell there is no audible notification to PSTN callers that a compliance recording bot is in a call. This would presumably be the responsibility of the organization via an auto attendant or 3rd party IVR.
  • Another note: bots more generally do not currently show up in reports in the Teams Admin Panel. (You can ask Microsoft to mark your tenant so they do, but by default they do not)
  • Since its server-side, the bot works with all clients: Desktop/Web, Mobile, Teams IP Phones & Teams Rooms.
  • Only available for Office 365 Phone System users (via E5 or E3 addon)
  • When is a compliance recording bot invited to a conversation?
    • It seems like when there is a media call: audio call, PSTN Call, joining a meeting or a chat with desk share going.

Landis Contact Center for Microsoft Teams Call Recording

We are glad that Microsoft is providing this mechanism to hook into calls as we are utilizing the compliance recording bot in our native Microsoft Teams contact center to do customer service  callrecordings and sentiment analysis. Below is a demonstration of how sentiment analysis looks on a live call in the Landis Contact Center for Microsoft Teams.

If there is anything more you know about Compliance Recording bots, I'd be glad to hear it, so comment.



Microsoft Ignite 2019 VCE40

Lenovo to Enter Microsoft Teams IP Phone Market with SmartThink View

Lenovo provides these specs:

The ThinkSmart View is a new form factor that provides the following

Standalone productivity device with integrated audio and video camera

  • Always on, always connected, with an 8” HD IPS touchscreen
  • Start or join Teams video calls and meetings
  • Headset connectivity is via Bluetooth only
  • WiFi connectivity only (no physical Ethernet connection)
  • Price $349
  • When? Later this month
Lenovo had marketed  as similar device called Smart Display before this "repurpose" as a Microsoft Teams IP phone / endpoint.