2017/9/11

Line bot - 放置java web專案至heroku (1)


  • 本篇目標按照Heroku官方文件說明放置 tomcat服務與java web專案至heroku上
    • 因line bot 在使用reply功能時 , 需要一個中介網址處理回覆內容 , 因此line bot會要求設定 webhook url , line就會將收到的使用者訊息送至此 url  , 接著開發者就可以自訂如何回覆使用者的訊息 , 在本篇使用 heroku網站來充當 webhook
  • 在開始之前 , 你應已經申請並建立line bot 帳號 (後續才會用到)
  • 如果希望line bot有push 送出訊息功能 , 請選用deveopler trial版本
    • reply api : 使用者->line bot->使用者
    • push api :  line bot->使用者




  • 至heroku官網申請帳號
  • 開起eclipse並建立一個maven web專案
    • 選用maven-archetype-webapp 幫我快速建立一個乾淨的maven web專案 , 並且compiler成功 , 可參考maven篇
    • 建立一個index.jsp放在webcontent , 內容寫上 hello david
    • 建立runtime tomcat 8.0 , 並且新增server並啟用看看是否成功
    • pom設置參考官方文件


  • 如果編譯無問題, 進行測試
    • mvn package
    • 在target 目錄下應會產生 
      • dependency/webapp-runner.jar
      • 與專案的war檔
    • 打開cmd , 並切換到專案目錄 , 執行指令便會啟動tomcat 與專案
      • java  -jar target/dependency/webapp-runner.jar  target/*.war
    • 打開瀏覽器 http://localhost:8080 , 查看是否啟動成功
  • 在eclipse專案根目錄新增一個Procfile檔案
      • 此檔案為heroku執行指令用
      • 檔案內容加上一行  參考網址
        • web: java $JAVA_OPTS -jar target/dependency/webapp-runner.jar --port $PORT target/*.war
      • 這樣heroku就會依照Procfile指令啟動 tomcat 與 java web專案

  • 將專案與Procfile檔案完成以後  , 再來就是透過 git 將程式部屬上heroku
    • 在 heroku  官方網站 下載安裝檔 並且安裝 heroku和git
    • 安裝完畢後 , 開啟 cmd 切換到eclipse專案根目錄的位置 , 即 pom.xml 與 Procfile 同一層
      • cd  C:\xxxxxx
    • 登入heroku帳密
      • heroku login
    • 先為eclipse專案目錄建立git reposity , 並將程式commit
      • git init
      • git add .
      • git commit -m "my initial apps"
    • 在heroku建立一個專案並自行定義一個heroku合法的專案名稱linenotice-1
      • heroku create --app linenotice-1
    • 將本機程式放到heroku , heroku會偵測到程式語言是java , 並且自動為maven專案做 mvn package
      • git push heroku master
  • 啟動heroku專案 ,  會自動執行 Procfile裡的指令 , 即啟動tomcat與web專案
    • heroku open
  • 如果有錯誤 , 可以使用 heroku logs查看log
  • 查看瀏覽器結果
    • 本篇使用免費版 , 當閒置30分鐘無使用 , heroku會將專案關閉




3 則留言:

  1. 請問後續呢?要如何讓maven網頁跑LINE BOT服務給end user?

    回覆刪除
    回覆
    1. 放上服務時 , tomcat已經運行
      接下來就是把line bot加入line群組 , 群組有人講話時 , 會把訊息送至 line bot後台webhook url上,
      url可以設定你自己的heroku, 收到訊息後再用line bot的api 將訊息傳至該群組(必須先取得群組id)

      刪除
  2. 請問一下line回給你的callback那段你的程式碼是如何解析的? 可是否說明一下?謝謝

    回覆刪除

test2