Category: Unified Communications

Wether it is to use for Call Admission Control or just to get pretty results on the location report on the monitoring server, I usually like to populate network regions, sites and subnets in the Skype for Business topology in every deployment I do.

Pretty, pretty data 🙂

In many, if not most, environments I deploy in, the admins have taken their time to set up AD sites and services with the correct site names, so there’s no point in doing that job twice. I’ve made this script which takes the contents of the Sites container and imports it into the Skype for Business topology.

I’ve come across a couple of ways to convert AD sites to Skype for Business network topology, either adding all sites to one region, or converting the sites to regions themselves and adding offices manually. I also want to expand the script so that you can choose which region and site a given subnet belongs to for each subnet in sites and services.

Like this:

I’ve finally gotten time to complete coding of the 0.2 release of the PSAcano powershell module.

The module now contains all GET, POST, PUT and DELETE commands from the Acano API documentation, and everything that is possible to do with the API should now be possible to script in powershell.

Error handling is still not in the module, this is planned for the 0.3 release, I’ll be adding that the next couple of weeks.

You can download the latest release here, or you can clone the project with Git from here.

There are two branches that get updated frequently, master and dev. The master branch will be considered stable, and will have features added between releases. The dev branch is considered unstable and this is where active developement happens.

Here’s an example on how to add a call (call leg) to a coSpace using the module:

Like this:

If you need to reboot a Skype for Business server, you might not always want the services to start automatically afterwords for various reasons. For instance if you are doing a shutdown of an entire pool, you’d want to run

Start-CsPool -PoolFqdn skypepool.contoso.com

to do a cold start of the pool, instead of the services starting automatically.

Use these oneliners to set the services to manual startup and back again to automatic afterwords.

Like this:

The last couple of months Skype Meeting Broadcast has been available in technical preview and we’ve been testing it as a platform to deliver webinars and webcasts on a couple of occations. This post is a writeup on our experiences from this.

Scheduling and set up

This process is fairly straight-forward. If your tenant has Skype Meeting Broadcast enabled, you log in to https://broadcast.skype.com/ with your Office 365 credentials and you are good to go

The first screen that you are presented with is a calendar that neatly displays all your scheduled broadcasts, and where you can schedule new meetings

If you click “New Meeting” you will be taken to the create meeting page where you can set the name, time and duration of the meeting. You will also be able to create an event staff and choose what kind of audience will be able to join the broadcast. For webinars all of these could possibly be used, we have most often used it with the Anonymous setting.

The duration can be set to a maximum of 4 hours, but we’ve been having casts extend that with almost double that time without issue.

After the initial set ut you are presented with an overwiew page that can also be accessed by clicking the meeting in the dashboard overview. Here you can get the link to the broadcast and also create an outlook invitation for the broadcast. You are also able to customize the broadcast from here.

Currently “customizing” means that you can add two modules to the broadcast page, one in the sidebar and one below the broadcast. As of writing this post, two options are available as content to these modules:

Add discussion from a Yammer page

Bing Pulse integration

I haven’t played with Bing Pulse at all, so I don’t really know what it can do, but the Yammer integration has been really useful and adds a real time feedback mechanism to a one way communication scenario. You need to create a group in a Yammer network that all participants can access to be able to use it, so information about this should be included in the invite, so the participants have time to prepare for this before the webcast.

Broadcast Startup

Prior to the broadcast start, event staff should join the meeting and get set up by starting video and uploading content to the broadcast. The event staff could consist of both presenters and producers in the meeting, but what we have found to be the best is to only have producers as staff and join the presenters to the meeting as a normal Skype meeting participant, more on that later.

The meeting join link is found on the meeting summary page and the link is used by both staff and participants

Staff click the Sign in as event team member button. The Skype for Business client will start up as normal and staff joins the broadcast as a normal Skype meeting, but with some small differences in the user interface. Once joined and a powerpoint is uploaded this is what it looks like:

Those familiar with the meeting UI will notice a couple of new buttons next to the presentation. This is where you control the broadcast and layout of the screen. Once an active video is selected, you are able to start the broadcast and select between the following layouts

Video Only

Video and Content

Content only

These layouts can be switched between throughout the broadcast and can be used by the producers to break up the broadcast a bit. They shouldn’t be switched between too often, but is a nice way to add some flavour to the broadcast. The “Video and Content” layout will display the presentation with the video in a small picture on the right side of the broadcast feed.

One thing to be aware of, once the broadcast has started all sound in the meeting will be broadcast as well, so this meeting should not be used to communicate between producers and presenters. IM’s will not be displayed, so that should be the preferred method of communicating behind the scenes.

Also, once the broadcast has started it can not be stopped again without ending the entire broadcast. Do not use the Stop Broadcast button to pause the broadcast!

After the broadcast has ended a recording will be available on the meeting link, provided the “Enable meeting video recording” checkbox was checked during meeting set up.

With this we’ve covered the basics of producing a Skype Meeting Broadcast, but this leaves a couple of things to be desired.

Producers and presenters

it is fully possible to be both a presenter and a producer in a meeting, but often a presenter will not have the technical ability to produce their own meeting and in those cases it might not even be a good idea to give them the opportunity. Once one staffmember has joined the broadcast meeting it is fully possible to join presenters to the meeting as in a normal Skype meetin, either via drag and drop or via the meeting entry info which will contain a normal meeting join link to the meeting. This is not the same as the broadcast meeting join link.

If presenters join this way, you are able to select them as main video for the broadcast, and they will be able to present content to the meeting, but they will not be able to control starting and stopping the brodcast and will not have access to the layout controls. We have found this to be a very good solutions in cases where you want to separate production and content presentation.

What we also have found in these cases is that it is a very good idea to have at least two participants with producing capabilities in the meeting at all times, in case one of them drops out of the meeting. This can happen for various reasons, but the most common are network issues or computer crashes.

Advanced content sharing

The only possible content to present in a broadcast is a powerpoint presentation. No other content that the Skype for Business client normally can present is available to broadcast. There is also a limitation in that only one video source can be broadcast at the same time, gallery view can not be broadcast.

To work around this I’ve been using XSplit Broadcaster which is a software that will take a lot of input sources, for instance media files, desktop areas, youtube videos etc and is able to in real-time create a video stream to a virtual webcam that can be used to send video in to a Skype meeting. In this way we can sow together our own layout for the content presentation and providing a lot more options for the content in the presentation. The entire layout is sent to the meeting as one video stream and uses the “Video Only” layout in Broadcast Meeting.

The only issue with Xsplit is that the virtual webcam that comes with it uses Direct Media to display the image, and the Skype for Business client only supports Windows Media Foundation. This means that the windows desktop client is not able to read from this virtual webcam. The workaround for this has been to join the meeting from the web app client in a Chrome browser. Chrome can access Direct Media devices, and can in that way send the video created by XSplit in to the meeting broadcast.

This has enabled us to use broadcast meeting with some advanced features, amongst others:

Display video from all presenters on top of the presented content

Display live demos from the desktop

Send prerecorded video in to the broadcast

Live drawing on top of a presentation

Setting up a pause screen with countdown to when the broadcast will resume

And so on.

Using XSplit and Broadcast meeting together, we’ve made some really professional looking webinars. In one case for instance, I used teamviewer to capture the desktops of the presenters and with XSplit i combined those with both their videos and sent them to the meeting in several different layouts depending on the situation. This enabled me to produce a meeting from one computer where me and the two presenters all where separated by great distances physically. If we’d been in the same room, it would also be possible to use different pro-grade cameras as well, in stead of the webcams.

I am certain that there exists other kinds of software that does the same as XSplit as well, please let me know about them!

Concluding tips

Always be more than one producer, or at least as producer have two computers joined to the meeting as staff, preferably on two separate internet connections if the broadcast is important.

Prepare. Always prepare all aspects of the entire event well in advance

Will we use Yammer or Bing Pulse?

Accounts need to be set up and participants need information about joining

What kind of content do we need?

Is it enough with only Powerpoints as shared content?

Producers should have access to agenda and content in advance to create a plan for layouts and layout switching, especially if using anything other than pure powerpoint presentations.

Never ever press the “Stop Broadcast” button unless the broadcast is fully completed.

Familiarize yourself with the platform before you start producing broadcasts. Run several test broadcasts.

Like this:

Today I got to troubleshoot this little curiosity. A customer that uses Google Chrome as their standard browser reported that a few of their users wasn’t able to join meetings when clicking the meeting join link, nothing happens and they are displayed a page looking like this.

When a user joins a Skype for Business or Lync meeting for the first time in Chrome, they are presented with this message:

What probably had happened to those users is that they have checked “Remember my choice for all links of this type.” and then clicked “Do Nothing”.

What this will do is that Chrome will block URLs trying to launch the Skype for Business or Lync client using the lync15: protocol, rendering the browser unable to launch the client and forcing the user to use the web app.

Removing this block isn’t very hard, but as far as I know it is not accessible from any part of the Chrome GUI. Here’s what you need to do:

Open %userprofile%\AppData\Local\Google\Chrome\User Data on the users computer

Locate the file “Local State” and open it in notepad

Locate the “protocol_handler” directive in the file and find “lync15:” under it

If “Lync15:” is followed by “true”, it means that the protocol is blocked, and the client won’t be launched.

To resolve the issue, either

remove the whole “”lync15:”:true,” (including the last comma). This will reset the configuration, and the user will be presented with the above dialogue again the next time they try to join a meeting, giving them another opportunity to block the protocol

When a federated user or a conference is involved, the media is sent through TCP via the AVMCU on the edge server. So the issue seems to be with the outbound TCP 50000-59999 port range traversing the firewall.

The call fails with the following reason in the BYE:

Ms-client-diagnostics: 23; reason="Call failed to establish due to a media connectivity failure when one endpoint is internal and the other is remote"

TCP NAT connectivity failed
This flag is expected. If local-to-local connectivity succeeded, the TCP NAT connectivity check may not have been tried. Or there is no direct TCP connection possible.
TCP NAT connectivity failing may result in an ICE protocol failure.

Another clue pointing to the TCP media port range.

We also saw a lot of TCP retransmits when doing packet tracing, the edge server was not happy with the TCP connection when trying to set up the desktop sharing session.

What we realised fairly early was that all customers reporting this was running Palo Alto firewalls, which tries to look at what kind of application the traffic is in stead of the traditional just looking at port numbers.

After quite a bit of troubleshooting – everything was set up by the book, nothing seemed to be wrong other than the media failing – we were able to make a case with Palo Alto support, and it eventually turned out to be a bug in the Palo Alto software that doesn’t recognize the desktop sharing session as that, but tries to decrypt the session – even if no decryption is configured anywhere else on the firewall. The bug was as far as we can tell introduced in version 6.1.3, and has been reported fixed in an upcoming version 7.0.3. PAN support gave this workaround: