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