My Microsoft Ignite 2019 Microsoft Teams Notes

This is a placeholder for my Ignite 2019 notes and observations.

Microsoft Teams Announcements

Teams Ignite Keynotes 

Who to Follow:

Microsoft Teams Product Announcements:

Microsoft Teams Evening Events:

Did you vote for the #MicrosoftTeams Voice Client API's?

Microsoft Teams Compliance Call Recording Bot Sample Now Available

It looks like Microsoft has released the Compliance Call Recording Bot sample code.

On October 31, 2019 user "ksikorst" posted "Kasikors/compliance recording #121" sample bot code on the "Microsoft Graph Comms Samples" Github.

You can read an overview of how the sample works at this URL.

It appears like the way it works in brief:

  • Mark a Microsoft Teams user or users as a "recorded user" (will this be set via Powershell? TAC?)
  • Now when a "recorded user" gets in a call, a configured bot will be invited to the call

Since the Landis Contact Center for Microsoft Teams does policy based call recording we are eager to have this new API functionality as an option, as I'm sure many other vendors are as well.


Microsoft Teams Presence Between Internal Teams User Now Updates In Near Real Time

It looks like Microsoft Teams presence between internal Microsoft Teams users is now nearly instant. (several seconds)

  • Internal Teams to Teams Users presence updates are immediate
  • External Teams user to another tenant is up to several minutes
    • I've noticed that presence will update in the header of the Chat window quicker than in the Contacts list (Chat | Contacts)
  • Teams to external Skype for Business users are still hit or miss when presence will work at all.

So if your users have gotten used to disregarding Microsoft Teams presence, you can  now start training them that presence is somewhat relevant again! I'm glad to see that Microsoft is focusing  Teams presence and is working on "making it great again". 😃

Announcement it was coming:

Presence API Coming

Microsoft Teams Meeting & Calling API Now Enabled for Incoming PSTN And You Can Call the Landis Contact Center for Microsoft Teams To Test It Out

For those who have been waiting, the Microsoft Teams Meeting & Calling API now is enabled for incoming PSTN. PSTN callers can now call into your applications. (peer to peer and multiparty applications)

To not only say its possible, but also to demonstrate this new Calling API functionality, just dial +1-717-721-5367 to call a queue configured on the Landis Technologies Contact Center for Microsoft Teams. Read more:

If you already have a Microsoft Teams Calling API application, you can enable PSTN Callers to call it by using these instructions:

Jabra Foray into Video: Jabra Panacast USB 4k 180 Degree USB Webcam

Below is my quick video look at the Jabra Panacast at Microsoft Inspire 2019.

A few observations on the panaramic 4k USB webcam by Jabra:

  • 180 Degree panaramic view by stitching together 3 cameras
  • 4K USB video solution
  • Works with Teams because it is a standard USB webcam, but NOT Teams Certified as of this writing
  • The microphone in the device is not Jabra (because of acquisition)
    • Jabra recommend using Jabra speakerphone with it.
  • The panacast will frame the group using built in cpu
    • It does not recognize/frame the active speaker, but the group
  • The device built is metal and excellent feel/fit/finish
  • Because of the built in cpu to stich the cameras together, the case is a heat sink and it needed: the device gets warm, as did the Panacast edition of the usb webcam
  • Jabra apparently aquired the tech from

And here is the official Jabra page:

How to Assign a Telephone Number to a Teams Calling API Bot/Application

In essence, assigning a telephone number to a Teams Calling Application/Bot involves creating a contact in Teams that points to the Application/Bot Id and assigning a phone number to that Teams contact. The Teams contact is called an "Application Instance". There are 4 steps:

1. Create the Application/Bot registration
2. Create an Application Instance
3. Assign a Virtual User License (or Phone System license) to the Application Instance
4. Assign a Phone Number to the Application Instance

1. Create the Application/Bot registration

If you are using an Application/Bot created by another vendor, just ask them what the App ID is. They will know what to give you.

If you have written an Application/Bot using the Microsoft Teams Calling API's then you need to create an application/bot registration if you haven't already. Here is how:

What you will need from the "Azure Bot Service" is the  "Microsoft App Id" from your application. 

This Microsoft App Id will be used in the ApplicationId parameter of the next step.

2. Create an Application Instance

As Teams tenant Administrator, run the below Powershell:

New-CsOnlineApplicationInstance -UserPrincipleName <> -ApplicationId "<app_id>" -Displayname "<bot_display_name>"

UserPrincipleName = The username you want to create for this application instance.
ApplicationId = The app id from step 1
DisplayName = The display name you want to give this contact.

When you run this command successfully it will give output including an ObjectId. This ObjectId will be used in the Sync-CsOnlineApplicationInstance command.

Sync-CsOnlineApplicationInstance -ObjectId <application_instantce_id>

ObjectId = ObjectId output from New-CsOnlineApplicationInstance you just ran.

NOTE: We needed to wait 1 hour before we could do step 3 below and about 10 hours before we could do step 4. To know when you can do step 3, just search for the contact you made in this step in the Microsoft Teams client, when it is available to Teams users, you can do step 3. To know when you can do step 4, call the contact and see if the Application/Bot answers, when it does you can do step 4. If you try step 4 before that you will get an error something like "WARNING: The following Application Instance not present in BVD..."

3. Assign a Virtual User License (or Phone System license) to the Application Instance

You can follow these instructions to assign a Virtual User License to the Resource Account:
Browse to:

Find the useraccount/application instance/resource account we created in step 2.

Click "Manage product licenses" (located in header)

Select Location = United States
Check "Phone System - Virtual User"

Click "Save Changes" button.

Exit using "X" button (upper right)

4. Assign a Phone Number to the Application Instance

To see what Service Numbers are available to assign to this Application Instance go to:

Skype for Business admin center navigate to: Admin center | Teams and Skype | Skype legacy admin | Voice | Phone Numbers

When you find an unassigned service number, copy it or write it down and use it in the PowerShell below. Now run:

Set-CsOnlineVoiceApplicationInstance -Identity <> -TelephoneNumber <phone_number>


You should now be able to call the telephone number and reach your Teams Calling Application/Bot

Problems to Be Aware of When Recommending or Using Microsoft Teams Certified IP Phones

There some items in the Microsoft Teams app supplied by Microsoft to the certified Teams IP Phone vendors to be aware of. (This means the items below affect all IP phone vendors) The solution to many of these issues could be "use a certified headset", but we all realize that there are sometimes areas or users that a physical desk phone is the best solution. This can be especially challenging when it is an executive that is requiring a deskphone. These are items to be aware of. Be armed with knowledge.

FIXED 9/2019 - Bug: Keypad dialing misses digits

If a user walks up to a phone and starts dialing at normal dialing speed without picking up the handset the phone will drop some of the dialed digits.

Workaround: Train users to pickup the handset before dialing or dial very slow.

Missing Feature: No Contact List/Quick Dial List

Most desk phones have the ability to assign a button to quick-dial a buddy or often called phone number but unfortunately these phones do not. Not only do they not have physical buttons to dial regularly dialed contacts, there isn't even the ability to pin contacts on a regularly called contact list. (exacerbating the issue, there is no manageable extension dialing solution.)

Workaround: Search for the contact click the Search and start typing the contact name.

Weak Design: Can't completely dial a number using keypad buttons

The same users that want a traditional desk phone experience will typically want to be able to dial a number using the physical buttons on the phone. Users on desk phones and mobile phones have come to expect a Green/dial button to initiate a dial. With the current Teams IP Phone software the user will be able to dial a number using the physical buttons, but need to complete the phone call by pressing the touch screen soft phone button for "dial" or...

Correction - ...The phones with the latest update will now dial after a few seconds pass. (around 3 seconds)

Weak Design: Elements on the touch screen are too small

The elements on the screen are too small for typical users. Understandably this is worse on the low cost models that have a smaller/vertical screen)

Workaround: Settings | Device Settings | Accessibility | Large Text (you do not need to restart phone)

Missing Feature: PC Phone Control (formerly called Better Together or Better Together over Ethernet)

This feature allows a user to have a phone paired to a PC so the user can use the phone independently or integrated with the PC to, for example, click to dial a phone number.

Workaround: None

Other Items

  • Sometimes when the voicemail play button is pressed it doesn't respond. (Perhaps related to small components on screen? Or is it that voicemail file is still being loaded?)
  • App instability around calling Bots: "Unfortunately Teams has stopped."
  • Park - can't just walk up to a phone and dial digits, they must touch the Park icon on the screen first.
  • Experience when using in conjunction with Call Queues: Muting & Transfer (Update: A newer firmware may provide a fix for this. Verifying.)


Another solution to getting a very traditional handset which does not have many of the problems noted above is using existing Skype for Business certified IP Phones with Microsoft Teams. (although this doesn't seem a very forward looking solution at them moment if an organization needs to purchase a bunch of IP phone right now.)

Microsoft Teams is rapidly evolving and improving and I expect the IP Phone team will work to resolve these issues. I also understand from phone vendors that there may be a v2 spec of the Teams IP Phone may be forthcoming?

If there are any other items you think should be added to this list, please comment.

My Microsoft Inspire 2019 #Microsoft Teams Notes

My Inspire 2019 Observations & Perceptions

Microsoft Teams as an Operating System?

It's no surprise that Microsoft Teams was a focus in the keynotes & at Inspire generally. What I found interesting was to hear Microsoft talk about Teams as an operating system or Windows. As I  remember, Microsoft quotes users in keynote saying something like "Its what I log in in the morning, work all day and log out at night". Another "I think of it as an OS where I get work done" (as I remember). I've heard this before, just not so publicly. Will Microsoft Teams be the next "Windows"? It's conceivable. 

What Does "...Support for Contact Centers..." Announcement Mean?

Microsoft and Microsoft Partners are super eager to be able to move customers entirely to Microsoft Teams. Some of the blockers are voice features that are not yet in Teams like Contact Centers, Call Recording, Attendant Consoles & so on. At Landis Technologies we talk to customers everyday about this need and there is significant pressure related to this need. On one side Microsoft has been slow to get a complete set API's for ISV's (like us) to create native/core products to fill these needs, and on the other side there is intense pressure to get this functionality ASAP. So what Microsoft has announced at Microsoft Inspire: "...Additional new partner integrations include support for contact centers, compliance recording and cloud solution providers." (Source) What does this mean in plain English? Microsoft is going to support 2 levels of contact centers: #1 The basic level is "bolting on" existing SIP contact centers via direct routing and legacy Skype for Business contact centers via federation. A coming Presence API (Source: Five9 engineer at Inspire) will assist SIP contact centers in making the integration less disconnected. #2 Advanced contact centers using the Microsoft Teams Calling API's that give a very "native/core" (like our own Contact Center for Microsoft Teams). This will be the "native" contact center experience that doesn't require the cost & complexity of buy/configuring an SBC & Direct Routing.

Bringing Physical Whiteboards Into Microsoft Teams Meetings

I thought it was interesting to watch the audience response to a demo of the Microsoft Teams coming feature that brings a physical whiteboard into Teams meeting via a webcam while making the presenter "see through" when getting in front of the whiteboard: One of the very enthusiastic applause points in the keynote. This feature and the PowerPoint rehearse were both very well received. So, for what its worth, this features seemed to strike partners quite good.

Vendors are Working to Bring Devices to Microsoft Teams

Jabra is the Jabra Panacast 3 camera 180 degrees very wide angle USB webcam. The rep noted they working on Teams certification, but since it is a standard USB device it work with Teams on my laptop that they nicely let me test. (See my video here) This is Jabra's first foray into video as far as I know.

I was also very impressed with the Poly Studio's ability to do active speaker detection. The Poly Studio is a standard USB, 4K, video bar that does active speaker detection with no additional software on the PC. I was impressed how it detected the active speaker in a huddle room (12 x12 approx.) and did a production-like switch to the active speaker. If the two speakers are far apart it did a cut and if close it did a nice pan. I think this has real promise and look forward to trying it out when the production firmware is released.

Microsoft Announcements

A big announcement at Inspire is around Microsoft Teams having 13Million daily users which surpasses Slack. Source

Microsoft highlights in its Inspire press release that Microsoft Teams now enables contact centers. "...Additional new partner integrations include support for contact centers, compliance recording and cloud solution providers." Source

New Partner Developments

Poly Studio: Source
Jabra Panacast : Source
Landis Technologies Native Microsoft Teams Contact Center Q4 2019 Source
Verba: Working with Microsoft on Teams recording solution Source

Microsoft Teams User Tip #26: How to Access the Microsoft Teams Extended Diagnostics Menu via the Tray Icon

Some of my fellow Landis Technologies team members (Ken & CJ)  just alerted me to a very helpful diagnostics menu on Microsoft Teams that I was not familiar with.

To access it, go to the Teams tray icon:

  • Left click on the Microsoft Teams Windows tray icon 5 times
  • Then right click

Now you should see this menu:

I'd love to hear your feedback on what you most like about the menu.

To see my other Microsoft Teams User Tips:

Microsoft Teams Calling API's "GA Scheduled for June/July"

Kamil Skorski (Microsoft) notes in a post on GitHub that the Microsoft Teams Calling API's are scheduled for GA in the June/July timeframe and "We're working on finalizing the APIs now".

There are no more public clarifications. Does this mean the currently available API's will merely get the designation of "GA"? Or something more to come?

A key component that is missing for many uses of the Calling API is the ability for users to dial into a Microsoft Teams app from PSTN.

The Microsoft Teams Calling API Previewed at Microsoft Ignite 2018.


Jabra Handset 450: USB DECT Wireless Handset that Works with Microsoft Teams & Skype for Business

If you have been looking for a simple way to get a DECT portable phone functionality for your retail, warehouse or other scenario, you search might be over.

NOTE: This device is not Microsoft Teams or Skype for Business Certified! Jabra's website says: "Works with most softphones like Skype for Business (Lync) and is certified for Cisco Jabber". In my quick testing it seems to work with Microsoft Teams & Skype for Business in the same way other Jabra devices work with these products. But it is NOT CERTIFIED.

Here is my hands on video review of the Jabra Handset 450 working with Microsoft Teams in Teams Native Mode.

How to Setup

Just plug it in and it should work.

How to Get  VolumeUp + Mute to Pickup/Hangup

Update firmware. Install Jabra Direct, go to Updates and click Update.

It takes several minutes to update the firmware. Just wait. Likely slower becuase its doing it over DECT wireless.


In my testing it goes about exactly as for as the Jabra website says, that is, about 66ft in either direction from the charging cradle. We have a concrete 2nd floor and it seemed to work unless you were at the edges of the 2nd floor, then it started to cut out.

Buttons on the Device that work with Teams/Skype for Business

  • Mute
  • Volume Up & Down
  • Volume Up + Mute = Pickup / HangUp with appropriate firmware loaded.

Indicator LED

Bellow are LED meanings:



  • No dial pad
  • Slightly unhandy to press Up+Mute to Pickup/Hangup
  • Limited range
  • No audible ringer (blinking red LED indicates call ringing)

  • A DECT handset that works (if not certified) with Teams/Skype4B
  • Installs in minutes and does require expensive hardware
  • Gives Teams users a very traditional "just pickup to answer" Teams/Skype4B experience

This device is clearly not for every user, but if you need it, you need it, and you know who you are.
And remember, its not certified.

Official Site:

"Busylights" Can Now Work Native with Microsoft Teams: Kuando Busylight Now Works Natively with Microsoft Teams

Those using Microsoft Teams have been waiting for busylights to work native and it looks like Kuando is the first vendor to achieve this.

Just change the presence in the Microsoft Teams PC client manually, or let it do so automatically, and the Kuando Busylight, after a little pause, while show the correct presence!

To get this to work you will need to install the Kuando for Microsoft Teams tray app:

For the Kuando BusyLight to work, you must install the Microsoft Teams specific software, so if you have Skype for Business working with Kuando, this will mean installing the Teams specific software. Also the Microsoft Teams client must be running as the dll's interface with the Teams PC client, not using Microsoft Graph directly. If you exit Teams, the presence will stop functioning.

Another thing I noticed is that unlike the Skype for Business integration, the presence change is not immediate. This is exactly as presence works in Microsoft Outlook, so I would expect this to be a limitation of the interface to Teams, not the Kuando app. In my experience it takes about 3 seconds to change. (not big issue for normal presence, more of an issue in calling scenarios) So when you change your presence in the Teams client it takes about 1 second until the change displays in Teams client and 3 seconds till it shows up in Outlook & Busylight.

And another nice touch is that it works with your existing Kuando lights. I had one on hand and it worked just fine.

A few vendors are now providing busylights: Kuando, Embrava and most recently Poly has announced intentions to do so. It appears at the time of writing other major vendors, such as Embrava, do not seem to have this functionality yet.

To get the new Software that works native with Kuando's existing busylights:

Kuando's Office News Article:


Assign a PSTN Numbers to Microsoft Teams Bots & Calling API Apps "Potentially by Q3 [2019]”

Those organizations who want to fully move to Microsoft Teams, but are dependent on 3rd party voice add on apps have been asking us regularly when PSTN Numbers can be assigned to Microsoft Teams Bots.

According VinodRavichandran, the answer is: "PSTN Calling is planned for this year, potentially Q3."

This should allow PSTN callers to dial into voice apps built using the Teams Calling API like IVR's and other custom voice apps.


Using Microsoft Teams for Audio Streaming a Live Event With PSTN Access to the Stream

In this article we will look at using Microsoft Teams to provide the audio of an in person meeting to those not present.

It’s not uncommon for churches (and I suspect other events), even quite small ones, to want to provide the ability for individuals to listen in using the web or a phone call. The church service is mostly attended in person with a few individuals dialing in to hear the audio. Since the people needing to listen in are often not tech savvy, being able call in via phone is imperative.
In some cases the audio is supplied to the stream by a phone call and other will have an internet connection.

For this scenario to work smoothly a few things are necessary:
  1. Ability to dial a phone number only to get directly into the “conference”. (without requiring PINs) Not Possible
  2. Ability to access the live audio via PSTN or web streaming: Possible with Meeting
  3. All callers except the one providing the audio must start & remain muted. Not Possible
    1. In essence, all users must be muted when they join the meeting
    2. Except the organizer providing the audio stream
    3. Ideally all listening users cannot unmute themselves.
  4. Auto record: Possible with Live Event
  5. Nice to have: Place the recording at a publicly accessible location
  6. No setup for each meeting
How does Microsoft Teams Meetins and Live Events cover these requirements?

Meeting w/Audio ConfLive Event
Join Audio via PSTNYesNo
Join Audio via WebYesYes
Auto Mute NoYes
Auto Organizer UnmutedYesYes
Manual Mute AllYesYes (N/A)
Auto RecordYesYes
Recording Immediately Available?Yes
Auto Recurring MeetingYesNo
Auto Move RecordingNoNo
Live TranscriptionYesYes
Live Translation?Yes

One of the reasons Microsoft Teams Live Events are not ideal:
  • A live event needs to be setup for each event
  • Need a fairly tech savvy person at each meeting
  • No PSTN/Call In capability to access the Live Event audio stream
For this reason we’ll focus on using Microsoft Teams Meeting with Audio Conferencing/Conference Bridge. Here are the steps.

Initial Configuration

  • Setup Office 365 and Teams Audio conferencing  service
  • Setup Conference Bridges | Bridge Settings
    • Meeting entry and exit notification = Off (or as desired) 
    • Ask callers to record their name before joining a meeting = Off
  • Setup a Teams Meetings | Meeting Policy (or modify “Global”)
    • Allow Transcription  = On
    • Allow Cloud Recording = On
    • Automatically admit user = Everyone
  • Setup Meetings | Meeting Settings
    • Anonymous user can join a meeting = On
  • Create a recurring meeting
    • (May add some more details)
  • Determine the way you will get your audio into the conference
    • If you will supply the audio to the meeting via PSTN, you can use something like the Rolls PI9 to supply the audio to the meeting.
    • Otherwise you supply the audio via a Microsoft Teams client and USB as the microphone source.

Organizer Meeting Preparation

  • If using PSTN to supply the audio:
    • The organizer will dial into the conference using the meeting telephone number, meeting ID and organizer PIN.
  • If using an internet connection, Microsoft Teams client & USB audio source
    • Start of Teams client and join the meeting
    • If you want a recording, click” Start Recording”
    • Since users will join unmuted, this method allows organizer to more easily mute those listening. Do NOT use “Mute All” as this will mute the

Joining the audio “Stream”

  • If joining via the web using a PC, just click on the Teams meeting link
    • Users must be instructed to not unmute themselves
  • If joining via PSTN, dial the meeting phone number, meeting ID


At the moment this solution works, but a few things could greatly improve the experience for this scenario:
  • A telephone number could be assigned directly to a meeting (with no meeting ids required)
  • A recurring meeting could be set to mute participants on join
  • Either start the recording automatically when organizer joins, or allow

Other references:

Microsoft Teams in 5 Minutes: Manage Devices (Manage & Control Desk & Conference Phones)

What can you control?

  • Save a note about the device (nice!)
  • Save an “organization asset tag” as well.
  • Retrieve the diagnostics log file from a device.
  • Restart a phone


Allows you to assign configuration profiles.


  • to select devices, left click on the left of the first column
  • you can multi-select devices by repeating the above
  • ability to jump to the current user signed into the phone


  • To manage a device, just sign in, that's it!
  • Actions may take a while. for example, restart could be delayed by a minute or so.
  • If you edit a device name, you may not be able to search for the new text right away
  • If a device doesn't show up, try signing out and back in.

How to Get Local Logs from Yealink Teams Edition Phone


  1. Get the IP address of the phone either from an IP scanner or using the Teams UI on the phone: Settings | Devices Settings | About. (Note: if clicking on “Device Settings” doesn’t work, try restarting the phone, sometimes it works then.)
  2. Log into the phone web portal with the IP address
  3. Enable Local Log if not already and recreate the problem.
  4. Settings | Configuration | Under local log, click “Export Local Log”