Teams contains a bunch of other functionality that I won't be talking about today. Instead I want to focus on how developers can extend Microsoft Teams today, and what I hope will be coming in the future.
As of today there are 3 ways developers can extend Microsoft Teams, Tabs, Bots, and Connectors.
Tabs
Tabs are pretty self explanatory, in fact if you have used teams at all, you have probably added a OneNote, or Power Bi tab to a channel already. I am not going to cover this today, because as it sits right now, you can only add a custom tab that lasts for 30 days, so I am going to wait for this to mature a little more before diving in.
Bots
You can easily add a bot in Teams as well. It will end up in the chat section which is divided into users and bots that you can chat with. You can use the Microsoft Bot Framework to build your bot, and adding it to teams is very easy. I have previously posted on this blog on how to create a bot.
When I chat with my bot in teams it is a similar experience as I get on the web, with some minor word wrapping picture issues.
Connectors
Connectors are where we are going to focus our effort today. If you go to a channel in Teams, click the 3 dots and bring up the connectors option you will see a bunch of ready made connectors you can use.
We could connect with any of those, but we want to make our own Connector so we are going to select Incoming Webhook. From here you give your webhook a name, and I would recommend a photo, because it will show up with that photo in teams, rather than the generic webhook one. This is important if you add multiple connectors to a channel. It makes it exponentially easier to tell which one the message came from. When you create it, you will get the webhook url, copy this to notepad or somewhere, as we are going to need it later.
Here is a sample one I created to report on website visitors that got to the site from a paid ad, or who are looking at a number of different pages, and are a potential sales lead.
The Code
As their documentation shows you can trigger a post from curl or powershell of you are command line junkie.
curl -H "Content-Type: application/json" -d "{\"text\": \"Hello World!\"}" <YOUR WEBHOOK URL>
Personally I want to use c# and make a simple function that I can call from the web, a windows service, wpf, a console app, winforms, uwp, mobile, etc.
I am going to make first a very simple Payload class that will be for the simplest type of message, containing a title and some text in the body.
public class Payload
{
[JsonProperty("title")]
public string title { get; set; }
[JsonProperty("text")]
public string text { get; set; }
}
From here we need a function to push this to our webhook url.
static async void PostTeamsMessage(Payload payload, string uristring)
{
try
{
string payloadJson = JsonConvert.SerializeObject(payload);
var content = new StringContent(payloadJson);
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var client = new HttpClient();
Uri uri = new Uri(uristring);
HttpResponseMessage response = await client.PostAsync(uri, content);
HttpContent responseContent = response.Content;
// Get the stream of the content.
using (var reader = new StreamReader(await responseContent.ReadAsStreamAsync()))
{
// Write the output.
Console.WriteLine(await reader.ReadToEndAsync());
}
}
catch { }
}
So in just a few lines of code we take out payload class, serialize it to json, and sent it the webhook url we copied earlier. I also have a section that write the output to the console which can be useful for debugging as you get started.
When we call our function the message is instantly posted to our Microsoft Teams channel. I listed a copy of examples below.
Next week I will show you how to extend this to more complicated posts, and in a few weeks I will show you some very cool things you can do to extend Office Groups even more.
Doug Routledge, C# Lync, Skype for Business, SQL, Exchange, UC,
Full Stack Developer BridgeOC Bridge Operator Console Twitter - @droutledge @ndbridge |
No comments:
Post a Comment
Any spam comments will be deleted and your user account will be disabled.