おみくじをしましょう
しましょう.
皆さんは各々個人slackをお持ちかと思いますので,ここにそんなこともあろうかと,うまく動くおみくじを用意いたしました.
動かし方
Deploy to Herokuをついでに配置したので使うと良さそう.
その後は,slackのoutgoing webhookで,
https://hogeee.heroku.com/omikuji
にoutgoingが飛ぶように設定
あとはslack使うだけ
今年もいい年になりそうですね
仕組み
package main import ( "log" "math/rand" "net/http" "os" "strings" "time" "github.com/gin-gonic/gin" ) func main() { port := os.Getenv("PORT") if port == "" { log.Fatal("$PORT must be set") } router := gin.Default() router.POST("/omikuji", func(c *gin.Context) { text := c.PostForm("text") log.Printf("%s", text) nakami := strings.Split(text, ",") rand.Seed(time.Now().UnixNano()) c.JSON(http.StatusOK, gin.H{ "text": nakami[rand.Intn(len(nakami))], "response_type": "in_channel", }) }) router.Run(":" + port) }
仕組みはかなりシンプルで,Outgoingでアクセスが来る→HTTP Responseの際に結果を返すだけ. 今回はシンプルにするために,カンマ区切りでシャッフルするようにした.
最初のos.GetEnv周りはHerokuでうまく動かすためのおまじない.slackのoutgoingはtextというパラメータにテキストが入っているのでそれを利用すればok.
ちなみに
この程度のシンプルなやつならslackbotでもできる.
去年頑張ってbot書いたら,この設定を後輩がしてて悲しい気持ちになったのでその供養をさせていただきました.
今年も頑張りましょう