Быстрая и простая публикация в Slack Webhook из Golang AppEngine

# #google-app-engine #go #post #slack

# # #google-app-engine #Вперед #Публикация #slack

Вопрос:

Не столько вопрос, сколько помощь другим, имеющим эту проблему. Потребовалось изрядное количество ударов головой о стену, чтобы заставить это работать. (как бы я ни любил golang, вы должны думать немного по-другому) — это также будет работать как общий способ отправки любого вида сообщений во внешний источник в AppEngine.

Вот функция, которую я использую для отправки простых сообщений на канал slack через webhook. (предполагается, что вы знаете, как настроить webhook в slack — это очень просто сделать — https://get.slack.help/hc/en-us/articles/115005265063-Incoming-WebHooks-for-Slack ) — ПРИМЕЧАНИЕ: хотя существует достаточное количество дополнительных параметров, которые вы можете передать в сообщении json (см. Ссылку Выше), простые вещи, такие как адреса электронной почты и URL-адреса изображений / веб-адреса, будут автоматически проанализированызамедление, если передано в параметре «текст».

 import (
"bytes"
"google.golang.org/appengine"
"google.golang.org/appengine/urlfetch"
"net/http"
)

func postSlackBetaSignup(req *http.Request, msg string) string {

ctx := appengine.NewContext(req);
request := urlfetch.Client(ctx);
data := []byte("{'text': '"   msg   "'}");
body := bytes.NewReader(data);
resp, err := request.Post("https://hooks.slack.com/services/<<<YOUR WEBHOOK HERE>>>", "application/json", body);
if err != nil {
    return err.Error();
} else {
    return resp.Status;
}
 

}

Ответ №1:

 import (
"bytes"
"google.golang.org/appengine"
"google.golang.org/appengine/urlfetch"
"net/http"
)

func postSlackBetaSignup(req *http.Request, msg string) string {

ctx := appengine.NewContext(req);
request := urlfetch.Client(ctx);
data := []byte("{'text': '"   msg   "'}");
body := bytes.NewReader(data);
resp, err := request.Post("https://hooks.slack.com/services/<<<YOUR WEBHOOK HERE>>>", "application/json", body);
if err != nil {
    return err.Error();
} else {
    return resp.Status;
}
 

}

Комментарии:

1. Привет и спасибо за публикацию вашего решения. Самостоятельные ответы приветствуются, но было бы неплохо, если бы вы могли включить в ответ какое-нибудь объяснение или краткое изложение решения, а не только кучу кода. Также поле вопроса должно по-прежнему содержать реальный и конкретный вопрос. Спасибо!