GAE/GoでLINE Messaging API を使う

Preview:

Citation preview

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/● 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つずつ処理する

メッセージの送信

アイデア

■ 位置情報を使う?

● Google Maps API● Location Message

■ 画像を使う?

● Google Vision API○ 1000UNITまで無料なので気をつける

● Image Message● ImageMap Message

成果発表

Thank you!

twitter: @tenntenn Qiita: tenntennconnpass: tenntenn