gae/goでline messaging api を使う
TRANSCRIPT
GAE/GoでLINE Messaging APIを使う
2016/11/13(日)@GAE/GoでChat botハッカソン
The Go gopher was designed by Renee French.The gopher stickers was made by Takuya Ueda.Licensed under the Creative Commons 3.0 Attributions license.
自己紹介
メルカリ/ソウゾウ
上田拓也twitter: @tenntenn■ Go歴 / GAE歴
Go:5〜6年くらい?
GAE:最近再開、GCPUG Tokyoのスタッフ
■ 業務GAE/Goでメルカリアッテを作ってます
Goのコミュニティを盛り上げる仕事
Gopherを描く仕事
LINE Bot Award
賞金1000万円!!!
便乗!
※このイベント(ハッカソン)は勝手にやってます。
運営にLINEさんは関係していません。
ドキュメントなど
■ LINE Messaging API● https://devdocs.line.me/ja/● https://github.com/line/line-bot-sdk-go● https://godoc.org/github.com/line/line-bot-
sdk-go/linebot● http://qiita.com/carat_yoshizaki/items/bd4
277d3943200beab26● https://github.com/tenntenn/linebotsample
■ GAE● https://cloud.google.com/appengine/docs/
go/apis
LINE Messaging API
■ 何ができるのか?
● https://devdocs.line.me/ja/● Webhook● Reply Message API● Push Message API● Get Content API● Get Profile API● Leave API
Botをどういう仕組みで作るのか?
GAELINE
メッセージ投稿 Webhook
メッセージ返信 Reply Message
Webhook (LINE Messaging API)
cli := urlfetch.Client(c)client := linebot.WithHTTPClient(cli)bot, err := linebot.New(secret, token, client)
■ クライアントの作成
■ リクエストのパース
events, err := bot.ParseRequest(req)
GAEのcontext.Context
*http.Request
■ データの取得
■ データの保存
Datastore (GAE)
var s []*Settingconst k = "Setting"datastore.NewQuery(k).GetAll(c, &s)
key := datastore.NewIncompleteKey(c, k, nil)s := &Setting{
Secret: ...,Token: ...,
}datastore.Put(c, key, s)
■ 保存する構造体
Datastore (GAE)
type Setting struct {Secret string `datastore:"secret"`Token string `datastore:"token"`
}
■ メッセージの返信
Reply (LINE Messaging API)
for _, event := range events {...rt := event.ReplyTokenmsg := linebot.NewTextMessage("Hi")res, err := bot.ReplyMessage(rt, msg).Do()...
}
イベントを1つずつ処理する
メッセージの送信
Message
■ メッセージの種類● Text● Image● Video● Audio● Location● Sticker● Imagemap
○ リバーシの例
● Template
アイデア
■ 位置情報を使う?
● Google Maps API● Location Message
■ 画像を使う?
● Google Vision API○ 1000UNITまで無料なので気をつける
● Image Message● ImageMap Message
成果発表
Thank you!
twitter: @tenntenn Qiita: tenntennconnpass: tenntenn