From 8add8a8e79354cc95c442c11bc4faffae40c97f9 Mon Sep 17 00:00:00 2001 From: aecoleman <30481896+aecoleman@users.noreply.github.com> Date: Sun, 28 Jun 2020 16:58:04 -0500 Subject: [PATCH 1/4] feat(ms-teams-appender): Added appender for Microsoft Teams channels via the Incoming Webhook interface --- R/appenders.R | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/R/appenders.R b/R/appenders.R index c021aa58..555bdbef 100644 --- a/R/appenders.R +++ b/R/appenders.R @@ -426,4 +426,30 @@ appender_async <- function(appender, batch = 1, namespace = 'async_logger', } +#' Send log messages to Microsoft Teams Incoming Webhook +#' +#' @param teams_webhook_url character, url to the incoming webhook you would like to use +#' +#' You must create an incoming webhook for the Microsoft Teams channel you want to send log messages +#' to. For instructions on how to do this, visit the \href{https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook#add-an-incoming-webhook-to-a-teams-channel}{Microsoft Teams documentation page}. +#' +#' @return function taking lines as argument +#' @export +#' @note This functionality depends on the \pkg{httr} package. +#' @seealso This is generator function for \code{\link{log_appender}}, for alternatives, see eg \code{\link{appender_console}}, \code{\link{appender_file}}, \code{\link{appender_tee}}, \code{\link{appender_slack}}, \code{\link{appender_telegram}}, \code{\link{appender_syslog}}, \code{\link{appender_kinesis}} and \code{\link{appender_async}} for evaluate any \code{\link{log_appender}} function in a background process. +appender_ms_teams <- function(teams_webhook_url) { + fail_on_missing_package('httr') + force(teams_webhook_url) + structure( + function(lines) + httr::POST(url = teams_webhook_url, + ## NOTE MS Teams will parse our input as Markdown text, so we need to use 2 spaces before the newline + ## It may be a good idea to escape characters that have special meaning in Markdown + body = list(text = paste0(lines, collapse = " \n")), + encode = "json" + ), + generator = deparse(match.call()) + ) +} + ## TODO other appenders: graylog, datadog, cloudwatch, email via sendmailR, ES etc From 124e7886809b8850329e9163b90c436991b8b44f Mon Sep 17 00:00:00 2001 From: aecoleman <30481896+aecoleman@users.noreply.github.com> Date: Sun, 28 Jun 2020 17:16:10 -0500 Subject: [PATCH 2/4] docs(appender-ms-teams): Add documentation --- man/appender_ms_teams.Rd | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 man/appender_ms_teams.Rd diff --git a/man/appender_ms_teams.Rd b/man/appender_ms_teams.Rd new file mode 100644 index 00000000..c3aa7b8a --- /dev/null +++ b/man/appender_ms_teams.Rd @@ -0,0 +1,26 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/appenders.R +\name{appender_ms_teams} +\alias{appender_ms_teams} +\title{Send log messages to Microsoft Teams Incoming Webhook} +\usage{ +appender_ms_teams(teams_webhook_url) +} +\arguments{ +\item{teams_webhook_url}{character, url to the incoming webhook you would like to use + +You must create an incoming webhook for the Microsoft Teams channel you want to send log messages +to. For instructions on how to do this, visit the \href{https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook#add-an-incoming-webhook-to-a-teams-channel}{Microsoft Teams documentation page}.} +} +\value{ +function taking lines as argument +} +\description{ +Send log messages to Microsoft Teams Incoming Webhook +} +\note{ +This functionality depends on the \pkg{httr} package. +} +\seealso{ +This is generator function for \code{\link{log_appender}}, for alternatives, see eg \code{\link{appender_console}}, \code{\link{appender_file}}, \code{\link{appender_tee}}, \code{\link{appender_slack}}, \code{\link{appender_telegram}}, \code{\link{appender_syslog}}, \code{\link{appender_kinesis}} and \code{\link{appender_async}} for evaluate any \code{\link{log_appender}} function in a background process. +} From 74e5393137445d3cbd22e0e59bbf2f2a0a9ec3a0 Mon Sep 17 00:00:00 2001 From: aecoleman <30481896+aecoleman@users.noreply.github.com> Date: Sun, 28 Jun 2020 17:16:27 -0500 Subject: [PATCH 3/4] fix(appender-ms-teams): Export function --- NAMESPACE | 1 + 1 file changed, 1 insertion(+) diff --git a/NAMESPACE b/NAMESPACE index fea5a9f1..0826112d 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -12,6 +12,7 @@ export(appender_async) export(appender_console) export(appender_file) export(appender_kinesis) +export(appender_ms_teams) export(appender_pushbullet) export(appender_slack) export(appender_stderr) From b059d2d5331fab06e68b54c4e0e04e44753e56ca Mon Sep 17 00:00:00 2001 From: aecoleman <30481896+aecoleman@users.noreply.github.com> Date: Sun, 28 Jun 2020 17:17:21 -0500 Subject: [PATCH 4/4] deps(suggests): Add `httr` package to Suggests --- DESCRIPTION | 1 + 1 file changed, 1 insertion(+) diff --git a/DESCRIPTION b/DESCRIPTION index e4e5c88f..48099555 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -33,6 +33,7 @@ Suggests: rsyslog, shiny, callr, + httr, txtq, botor, R.utils