Go의 SDK로 LINE BOT API를 쉽게 시도했어요.
13941 단어 Go
GitHub
SDK of the LINE BOT API Trial for Go
컨디션
VM CentOS 7
Go 1.5
Heroku
전제 조건
LINE BOT API에 대한 Developer 계정이 확보되었습니다.
LINE Developers
Heroku의 상세한 조작 방법은 단절된 것이다.
$GOPATH 설정 등이 완료되었습니다.
Heroku를 위한 Go 응용 프로그램 설계
자세한 내용은 공식 홈페이지를 참고하세요.
Getting Started on Heroku with Go
$ go get github.com/heroku/go-getting-started
$ cd $GOPATH/src/github.com/heroku/go-getting-started
$ ls -l
이렇게 하면goo-getting-started 디렉터리에 필요한 파일 그룹을 설정합니다.$ heroku create
$ git push heroku master
〜
* [new branch] master -> master
push가 성공하면 디자인을 순조롭게 완성할 수 있습니다.Heroku에 Fixie 추가
Heroku의 대시보드에서 GUI로 추가할 수 있습니다.
위에서 디자인한 응용 프로그램의 계기판을 엽니다.
거기 Add-ons 텍스트에 Fixie를 입력하면dd-on 후보가 나옵니다.
Fixie를 선택하고 Provision 을 누르면 완료가 추가됩니다.
이번에는 프리 플랜을 선택했다.간단해, 편리해.
Line에 화이트리스트 IP 등록
LINE Developers에 로그인하여 LINE BOT API의 채널 화면에 액세스합니다.
왼쪽 메뉴에 "Server IP Whitelist"링크가 있습니다. 여기를 클릭하여 방금 추가한 Fixie adion의 고정 IP 주소에 로그인하십시오.
IP 주소 확인 방법은 Fixie 화면의 Acount 버튼을 눌러 Outbound IPs에 기재하는 것입니다.
나는 대략 두 가지가 있다고 생각하기 때문에 두 가지 모두 등록해야 한다.
Fixie Dashboard
LINE에 Callback URL을 등록합니다.
LINE Developers에 로그인하여 LINE BOT API의 채널 화면에 액세스합니다.
왼쪽 메뉴에는 "Basic infomation"링크가 있습니다. 여기를 클릭하고 "Callback URL"에서 LINE BOT API 호출 URL에 로그인하십시오.
이번에 등록된 URL은 다음과 같습니다.
https://デプロイしたアプリのドメイン:443/callback
계획은https로 변경되었습니다.또한 포트 번호 443에 로그인하는 것도 잊지 마세요.Go의 SDK 가져오기
다음 명령을 사용하여 SDK를 가져옵니다.
$ go get github.com/line/line-bot-sdk-go/linebot
이렇게 하면 완성된다.main.편집 고
기본적으로 준비된 Go 파일을 편집합니다.
$ cd $GOPATH/src/github.com/heroku/go-getting-started/cmd/go-getting-started/
$ vi main.go
main.gopackage main
import (
"fmt"
"log"
"net/http"
"net/url"
"os"
"github.com/gin-gonic/gin"
"github.com/line/line-bot-sdk-go/linebot"
)
func main() {
port := os.Getenv("PORT")
if port == "" {
log.Fatal("$PORT must be set")
}
router := gin.New()
router.Use(gin.Logger())
router.LoadHTMLGlob("templates/*.tmpl.html")
router.Static("/static", "static")
router.GET("/", func(c *gin.Context) {
c.HTML(http.StatusOK, "index.tmpl.html", nil)
})
//この処理を追記
router.POST("/callback", func(c *gin.Context) {
proxyURL, _ := url.Parse(os.Getenv("FIXIE_URL"))
client := &http.Client{
Transport: &http.Transport{Proxy: http.ProxyURL(proxyURL)},
}
// Channel ID、Channel Secret、MIDはLINE Developers画面のBasic infomationで確認できます。
bot, err := linebot.NewClient(<Your Channel ID>,"<Your Channel Secret>","<Your MID>", linebot.WithHTTPClient(client))
if err != nil {
fmt.Println(err)
return
}
received, err := bot.ParseRequest(c.Request)
if err != nil {
if err == linebot.ErrInvalidSignature {
fmt.Println(err)
}
return
}
for _, result := range received.Results {
content := result.Content()
if content != nil && content.IsMessage && content.ContentType == linebot.ContentTypeText {
//送信されたメッセージにOK を付けて返す
text, err := content.TextContent()
res, err := bot.SendText([]string{content.From}, "OK "+text.Text)
if err != nil {
fmt.Println(res)
}
}
}
})
router.Run(":" + port)
}
main.goo에 다음과 같은 처리가 추가되었습니다.router.POST("/callback", func(c *gin.Context) {
〜
}
/callback 방문이 오면 사용자로부터 받은 메시지에 OK 반환을 추가하는 간단한 처리입니다.중점은 실례를 만드는 곳이다.
url.Parse(os.Getenv("FIXIE URL")에서 Fixie를 프록시 서버로 지정하면 고정 IP를 사용하여 LINE BOT API에 자주 접근할 수 있으며, 미리 흰 목록에 IP를 등록하면 접근을 허용한다.
프록시 서버를 지정하지 않으면 LINE BOT API에 액세스하는 동안 오류가 발생합니다.
인스턴스가 생성되면 SDK를 사용하여 LINE BOT API를 쉽게 사용할 수 있습니다.
SDK가 할 수 있는 일은 Giithub의 Usage를 다시 참조하십시오.
SDK of the LINE BOT API Trial for Go
goodep에서 의존 관계를 선포하다
main.go를 편집한 후 프로그램의 경로로 이동하여 goodep 명령을 실행합니다.
goodep은 Go의 라이브러리 의존 관계를 관리하는 도구입니다.
godep을 설치합니다.
$ go get -u github.com/tools/godep
이것이 바로 Godep 디렉토리의 Godep입니다.json을 업데이트합니다.$ cd $GOPATH/src/github.com/heroku/go-getting-started
$ godep save ./...
여기서 goo의 버젼 오류가 발생하면 다음 명령을 실행하여 다시 저장합니다.$ godep update -goversion
$ godep save ./...
Godep.json 기반워크스페이스 디렉터리에 필요한 라이브러리를 설치합니다.$ godep go install ./...
서류를 제출한 후 처리하다
완료되면git로 제출하여 다시 응용 프로그램에 대한 디버깅을 진행합니다.
$ git add .
$ git commit -m "コミットログ"
$ git push heroku master
만약 deproy가 성공한다면, 나는 LINE BOT을 친구로서 적절하게 메시지를 보낼 것이다.이렇게 되면 보낸 메시지는 OK가 될 것이다.
디버그에 실패하면 Heroku의 대시보드에서 Activity 로그를 확인하거나 디버그 코드를 입력하여 로그를 확인하십시오.
$ heroku logs --tail
아직 수습 단계이지만 다양한 가능성을 숨긴 라인 봇 API를 기대하고 있다.SDK를 사용하면 텍스트뿐만 아니라 이미지와 애니메이션, 인장 등도 쉽게 조작할 수 있어 기쁘다.
그럼 이게 다야?
Reference
이 문제에 관하여(Go의 SDK로 LINE BOT API를 쉽게 시도했어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yamaguchi3/items/cc06e3f6edc9136446ca텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)