ベーコンの裏

囲碁・ボドゲ・温泉を愛するフクロウのブログ

GAE/GoでLineBotをつくったよ〜

参考にしたのはこのへん
qiita.com

前までIPアドレスのWhiteListが必須だったためGAEだと渋い感じになってたけど、必要なくなったのでGAEで作るのほんと楽。
無料だと本当はReplyしかできないけど、TrialアカウントならReplyだけでなくPushもできる。

github.com

できあがりはこんなかんじ。
f:id:sun_bacon:20161010232523j:plain

送られた画像をVisionAPIを使って解析、TranslateAPIを使って翻訳し(やさしい)、リプライしてます。

50人までは友達になれます。
f:id:sun_bacon:20161010232616p:plain


若干苦労したとこは

画像受けとり

LineBotSDKで画像を受け取るときに、Message.OriginalContentURLからURL引っ張ってくるのではなくて

content, err := bot.GetMessageContent(message.ID).WithContext(c).Do()

でおk。

VisionAPI

VisionAPIはGAE内だと認証がいらないから

client, err := google.DefaultClient(c, vision.CloudPlatformScope)

でクライアントを生成する。

ranslateAPI

go get で"google.golang.org/api/translate/v2"をインポートして使おうとしたら、
APIキーを突っ込むところがなくてけっこう悩んだ。

	service, err := translate.New(&http.Client{
		Transport: &transport.APIKey{
			Key:       translateApiKey,
			Transport: &urlfetch.Transport{Context: c},
		},
	})

みたいにして、Httpクライアントにつっこむみたい。ふむぅ...

感想

そんなに時間かからなかったし、GAEはやっぱり楽だなあ。
GCSも簡単だった。