Не столько вопрос, сколько помощь другим людям, имеющим эту проблему. Я приложил немало усилий, чтобы биться головой о стену, чтобы сделать эту работу. (как бы я не любил Голанга, вы должны думать немного по-другому) - Это также будет работать как универсальный способ делать любые публикации на внешний источник в AppEngine.
Вот функция, которую я использую для отправки простых сообщений на свободный канал через webhook. (Предполагается, что вы знаете, как настроить веб-крючок в режиме Slack - это очень легко сделать - https://get.slack.help/hc/en-us/articles/115005265063-Incoming-WebHooks-for-Slack) - ПРИМЕЧАНИЕ: хотя имеется достаточное количество дополнительных параметров, которые вы можете передать в сообщении json (см. ссылку выше), просто такие вещи, как адреса электронной почты и URL / веб-адреса изображений, будут автоматически анализироваться slack, если они передаются в параметре 'text'.
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;
}
}