The LINE bot SDK for Go (Golang)
$ go get github .com / dongri / line - bot - sdk - go - trial
$ import "github.com/dongri/line-bot-sdk-go-trial/linebot"
package main
import (
"fmt"
"log"
"net/http"
"net/url"
"os"
"github.com/dongri/line-bot-sdk-go-trial/linebot"
)
var botClient * linebot.Client
func main () {
channelID := os .Getenv ("LINE_CHANNEL_ID" )
channelSecret := os .Getenv ("LINE_CHANNEL_SECRET" )
mid := os .Getenv ("LINE_MID" )
proxyURL := getProxyURL () // can set nil if not need
botClient = linebot .NewClient (channelID , channelSecret , mid , proxyURL )
// EventHandler
var myEvent linebot.EventHandler = NewEventHandler ()
botClient .SetEventHandler (myEvent )
http .HandleFunc ("/callback" , linebot .Middleware (http .HandlerFunc (callbackHandler )))
port := os .Getenv ("PORT" )
addr := fmt .Sprintf (":%s" , port )
http .ListenAndServe (addr , nil )
}
func callbackHandler (w http.ResponseWriter , r * http.Request ) {
log .Print ("=== callback ===" )
}
func getProxyURL () * url.URL {
proxyURL , err := url .Parse (os .Getenv ("PROXY_URL" ))
if err != nil {
log .Fatal (err )
}
return proxyURL
}
// BotEventHandler ...
type BotEventHandler struct {
}
// NewEventHandler ...
func NewEventHandler () * BotEventHandler {
return & BotEventHandler {}
}
// OnAddedAsFriendOperation ...
func (be * BotEventHandler ) OnAddedAsFriendOperation (mids []string ) {
botClient .SendText (mids , "友達追加してくれてありがとうね!" )
}
// OnBlockedAccountOperation ...
func (be * BotEventHandler ) OnBlockedAccountOperation (mids []string ) {
botClient .SendText (mids , "あらら,,, (このメッセージは届かない)" )
}
// OnTextMessage ...
func (be * BotEventHandler ) OnTextMessage (from , text string ) {
log .Print ("=== Received Text ===" )
}
// OnImageMessage ...
func (be * BotEventHandler ) OnImageMessage (from string ) {
log .Print ("=== Received Image ===" )
}
// OnVideoMessage ...
func (be * BotEventHandler ) OnVideoMessage (from string ) {
log .Print ("=== Received Video ===" )
}
// OnAudioMessage ...
func (be * BotEventHandler ) OnAudioMessage (from string ) {
log .Print ("=== Received Audio ===" )
}
// OnLocationMessage ...
func (be * BotEventHandler ) OnLocationMessage (from , title , address string , latitude , longitude float64 ) {
log .Print ("=== Received Location ===" )
}
// OnStickerMessage ...
func (be * BotEventHandler ) OnStickerMessage (from , stickerPackageID , stickerID , stickerVersion , stickerText string ) {
log .Print ("=== Received Sticker ===" )
}
// OnContactMessage ...
func (be * BotEventHandler ) OnContactMessage (from , MID , displayName string ) {
log .Print ("=== Received Contact ===" )
}
fromUser , err := botClient .GetUserProfiles (from )
if err != nil {
log .Print (err )
}
displayName := fromUser .Contacts [0 ].DisplayName
botClient .SendText ([]string {from }, "Hello!" )
originalContentURL := "http://example.com//robot_original.jpg"
previewImageURL := "http://example.com//robot_preview.jpg"
botClient .SendImage ([]string {from }, originalContentURL , previewImageURL )
videoOriginalContentURL := "https://example.com/video.mp4"
videoPreviewImageURL := "http://example.com/video.png"
botClient .SendVideo ([]string {from }, videoOriginalContentURL , videoPreviewImageURL )
audioOriginalContentURL := "https://example.com/test.mp3"
audlen := "240000"
botClient .SendAudio ([]string {from }, audioOriginalContentURL , audlen )
address := "Minato-ku, Tokyo 107-0062"
latitude := 35.665525
longitude := 139.717945
title := "俺んち"
botClient .SendLocation ([]string {from }, address , latitude , longitude , title )
stkID := "2"
stkpkgID := "1"
stkVer := "100"
stkText := "happy"
botClient .SendSticker ([]string {from }, stkID , stkpkgID , stkVer , stkText )
botClient .SendContact ([]string {from }, from , displayName )
func getMarkupJSON () string {
return "{\" canvas\" : {\" width\" : 1024,\" height\" : 576,\" initialScene\" : \" scene1\" },\" images\" : {\" image1\" : {\" x\" : 0,\" y\" : 0,\" w\" : 1024,\" h\" : 576}},\" actions\" : {\" openHomepage\" : {\" type\" : \" web\" ,\" text\" : \" Open link1.\" ,\" params\" : {\" linkUri\" : \" http://dongri.github.io/\" }},\" showItem\" : {\" type\" : \" web\" ,\" text\" : \" Open link2.\" ,\" params\" : {\" linkUri\" : \" https://dongri.github.io/post/2016-02-22-the-programmer-hierarchy/\" }}},\" scenes\" : {\" scene1\" : {\" draws\" : [{\" image\" : \" image1\" ,\" x\" : 0,\" y\" : 0,\" w\" : 1024,\" h\" : 576}],\" listeners\" : [{\" type\" : \" touch\" ,\" params\" : [0, 0, 1024, 250],\" action\" : \" openHomepage\" }, {\" type\" : \" touch\" ,\" params\" : [0, 250, 1024, 326],\" action\" : \" showItem\" }]}}}"
}
downloadURL := "https://farm1.staticflickr.com/715/22658699705_7591e8d0a6_b.jpg"
altText := "リスト画面に表示される文字列"
markupJSON := getMarkupJSON ()
botClient .SendRichMessage ([]string {from }, downloadURL , altText , markupJSON )
messageNotified := 0
var contents []line.Content
textContent := new (line.Content )
textContent .Text = "hoge"
contents = append (contents , * textContent )
imageContent := new (line.Content )
imageContent .OriginalContentURL = "https://farm1.staticflickr.com/715/22658699705_7591e8d0a6_b.jpg"
contents = append (contents , * imageContent )
botClient .SendMultipleMessage ([]string {from }, messageNotified , contents )
shortURL := linebot .URLShortener ("APIKEY" , "https://map.google.com/********" )
fmt .Println (shortURL ) // https://goo.gl/***