Sending Notifications to a Microsoft Teams channel

In this article you will learn how to create a Office 365 webhook integration on a MS Teams channel and send a notification to it. This article assumes that you already have a Microsoft Teams team and channel setup.

Adding a Webhook Integration to a Channel

Follow the instructions for setting up a webhook connector to your channel. When finished, you should have a Webhook URL that looks like "https://outlook.office.com/webhook/some-random-text/IncomingWebhook/some/random/text".

Sending a Notification to the Webhook

 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
// The webhook URL from the integration you set up
let webhookUrl = "https://outlook.office.com/webhook/some-random-text/IncomingWebhook/some/random/text"

let imageUrl = sprintf "https://connectorsdemo.azurewebsites.net/images/%s" 

let notification p =
    { p with
        Summary = Some "Max Muster ran a build"
        Title = Some "Sample Project"
        Sections =
           [ { SectionDefaults with
                 ActivityTitle = Some "Max Muster"
                 ActivitySubtitle = Some "on Sample Project"
                 ActivityText = Some "Build successful!"
                 ActivityImage =
                    imageUrl "MSC12_Oscar_002.jpg"
                    |> ImageUri.FromUrl
                    |> Some
             }
             { SectionDefaults with
                 Title = Some "Details"
                 Facts = [ { Name = "Labels"; Value = "FOO, BAR" }
                           { Name = "Version"; Value = "1.0.0" }
                           { Name = "Trello Id"; Value = "1101" } ]
             }
           ]
        PotentialActions =
           [
             {
               Name = "View in Trello"
               Target = System.Uri("https://trello.com/c/1101/")
             }
           ]
    }

Office365Notification webhookUrl notification |> ignore

The result should look something like this:

alt text

For additional information on the parameters, check out the Office 356 Connectors API Reference

val webhookUrl : string
val imageUrl : (string -> string)
val sprintf : format:Printf.StringFormat<'T> -> 'T
val notification : p:'a -> 'a
val p : 'a
union case Option.Some: Value: 'T -> Option<'T>
namespace System
Multiple items
type Uri =
  new : uriString:string -> Uri + 5 overloads
  member AbsolutePath : string
  member AbsoluteUri : string
  member Authority : string
  member DnsSafeHost : string
  member Equals : comparand:obj -> bool
  member Fragment : string
  member GetComponents : components:UriComponents * format:UriFormat -> string
  member GetHashCode : unit -> int
  member GetLeftPart : part:UriPartial -> string
  ...

--------------------
System.Uri(uriString: string) : System.Uri
System.Uri(uriString: string, uriKind: System.UriKind) : System.Uri
System.Uri(baseUri: System.Uri, relativeUri: string) : System.Uri
System.Uri(baseUri: System.Uri, relativeUri: System.Uri) : System.Uri
val ignore : value:'T -> unit