This extension adds an output binding for sending incoming webhooks to Slack.
public void SimpleSlackBinding([WebHookTrigger] Message m,
[Slack(Text = "{Text}", IconEmoji = "{IconEmoji}")] SlackMessage message,
TextWriter log)
{
log.WriteLine(m);
}
The Slack binding returns a SlackMessage
object which will then be sent to Slack after the function completes.
You can bind properties from the input object in the usual WebJobs way. If you don't want to bind your Trigger to an object, you can set the SlackMessage
properties in the function itself.
public void FullSlackBinding([WebHookTrigger] Message m,
[Slack(Channel = "{Channel}",
IconEmoji = "{IconEmoji}",
IsMarkdown = false,
Text ="{Text}",
Username = "{Username}",
WebHookUrl = "{WebHookUrl}")] SlackMessage message,
TextWriter log
)
{
// Further customize Slack Message here. i.e. add attachments, etc.
// More info on the SlackMessage object on the GitHub project: https://github.com/nerdfury/Slack.Webhooks
// Continue to set/manipulate properties on the Slack Message, programatically
message.Text += "WebJobs are Grrrreat!";
message.IconEmoji = ":troll:";
// For example, add attachments. See the Slack API docs for more info: https://api.slack.com/docs/attachments
message.Attachments.Add(new SlackAttachment
{
Fallback = "Required plain-text summary of the attachment.",
Color = "#36a64f",
Pretext = "Optional text that appears above the attachment block",
AuthorName = "Bobby Tables",
AuthorLink = "http://flickr.com/bobby/",
AuthorIcon = "http://flickr.com/icons/bobby.jpg",
Title = "Slack API Documentation",
TitleLink = "https://api.slack.com/",
Text = "Optional text that appears within the attachment",
Fields = new List<SlackField>
{
new SlackField
{
Title = "Priority",
Value = "High",
Short = true
},
new SlackField
{
Title = "Assigned",
Value = "Bobby",
Short = true
}
},
ImageUrl = "http://my-website.com/path/to/image.jpg",
ThumbUrl = "http://example.com/path/to/thumb.png"
});
}
You can enable the Extension via the JobHostConfiguration
object.
var config = new JobHostConfiguration();
var slackConfig = new SlackConfiguration();
// These are optional and will be applied if no other value is specified.
slackConfig.WebHookUrl = "";
// IT IS A BAD THING TO HARDCODE YOUR WEBHOOKURL, USE THE APP SETTING "AzureWebJobsSlackWebHookKeyName"
slackConfig.IconEmoji = "";
slackConfig.Username = "";
slackConfig.Channel = "";
config.UseSlack(slackConfig);
This is currently still in development. Not for production use.
Install the xunit.runner.visualstudio
nuget to run the Tests via Text Explorer