EnableSessionTicket from Powershell

To get support for Lync and Skype for Business on Windows Server 2012 R2, you need to add a registry key that changes TLS session caching on 2012 R2 Server. This is described here https://support.microsoft.com/en-us/kb/2901554

To create this key, use the following powershell oneliner:

Manage Acano server with Powershell: PSAcano version 0.2 released

v0.1 post is here

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:

Then you can just run

Add-Participant -CoSpace df2d3e44-91ff-48f4-aeca-ffd951641ebe -SipUri anne.wallace@contoso.com

to add a participant.

PS Oneliners: Set Skype4B services to manual or automatic startup

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.

Producing Skype Meeting Broadcast for webinars and webcasts

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

2015-12-01_13-27-55

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.

2015-12-01_13-21-56

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.

2015-12-01_13-36-35

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

2015-12-01_13-47-37

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:

2015-12-01_13-57-22

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.

Skype for Business meeting join not starting in Google Chrome

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.

2015-10-15_14-15-46

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

2015-10-15_14-14-31

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”.

2015-10-15_14-14-52

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:

  1. Open %userprofile%\AppData\Local\Google\Chrome\User Data on the users computer
  2. Locate the file “Local State” and open it in notepad
  3. Locate the “protocol_handler” directive in the file and find “lync15:” under it
    2015-10-15_14-24-02
  4. If “Lync15:” is followed by “true”, it means that the protocol is blocked, and the client won’t be launched.
  5. To resolve the issue, either
    1. 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
    2. replace “true” with “false”, which will unblock the protocol.

Managing Acano Server in Powershell

v0.2 has been released! Post here

I love it when stuff is possible to manage through PowerShell.

I’ve been working quite a bit with Acano lately and because of that I have started looking in to the management API that they provide on their Server. This API is exposed as XML through HTTPS, so I thought that it should be quite possible to write some PowerShell functions that accessed parts of the API. These have evolved in to what I now release as version 0.1 of the PsAcano PowerShell implementation of the Acano API.

Currently only the GET commands are implemented, so it is only possible to view information at the moment – not edit or create anything. The functionality provided by the POST, PUT and DELETE commands will  be implemented in the coming days and weeks.

Last weekend Knowledge Factory had our kick off in beautiful Vaxholm outside of Stockholm. There we were treated to an extremely inspiring session by Simon Wåhlin (http://blog.simonw.se/) about PowerShell and GIT. A big thank you to Simon for finally kicking me into doing source control on my scripts :D

I’ve set up an account on Github, and from now on my scripts will be available there, and this of course also applies to PsAcano.

If you don’t want to visit the repository page on github, you can download the module here. Installation instructions can be found in the Readme.md file. Feedback is welcome as issues on github or comments on this blogpost.