[練習範例]Spring boot line bot practice

先做好事前準備

ngrok

  • 使用ngrok建立一個臨時的https網址(接收Line Bot傳送過來訊息的網頁須走https協定)。
  • 註冊並+、下載ngrok,並解壓縮。
  • 打開檔案,並輸入指令
    ngrok http 8080
  • 就會看到以下畫面,代表連線成功,我們需要的就是 Forwarding這裡的網址

註冊line business account

  • 註冊line business account
  • 按照步驟建立channel
  • 記下Basic settings中的Channel secret ,以及Message API最底下的Channel access token,等等開發會用到
  • 把ngrok中拿到的網址後面加上/callback並update Message API底下的Webhook URL,也把Use webhook打開
  • 再到Auto-reply messages中,把自動回應訊息disable,以及啟動Webhook

echo pratice

好了,要開始弄髒手了喔!

  • 到Spring Initializr建立新的專案,記得spring boot的版本用2.7.5(我本來用3,結果搞了我2天才發現原來是版本問題導致跑不起來)

  • import常用的Dependencies並下載、解壓縮

  • 加入line bot 的Dependency,加上上面的import常用的Dependencies並下載,pom檔主要依賴的內容如下

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    
        <!-- line bot -->
        <dependency>
            <groupId>com.linecorp.bot</groupId>
            <artifactId>line-bot-spring-boot</artifactId>
            <version>5.0.3</version>
        </dependency>
  • 首先application.properties,把剛剛拿到的Channel secret及Channel access token貼過來。

  • 建立一個messageHandler

    import com.linecorp.bot.model.event.Event;
    import com.linecorp.bot.model.event.MessageEvent;
    import com.linecorp.bot.model.event.message.TextMessageContent;
    import com.linecorp.bot.model.message.Message;
    import com.linecorp.bot.model.message.TextMessage;
    import com.linecorp.bot.spring.boot.annotation.EventMapping;
    import com.linecorp.bot.spring.boot.annotation.LineMessageHandler;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    @LineMessageHandler
    public class LinebotHandler {
    
        private final Logger log = LoggerFactory.getLogger(LinebotHandler.class);
    
        @EventMapping
        public Message handleTextMessageEvent(MessageEvent<TextMessageContent> event) {
            log.info("event: " + event);
            final String originalMessageText = event.getMessage().getText();
            return new TextMessage(originalMessageText);
        }
    
        @EventMapping
        public void handleDefaultMessageEvent(Event event) {
            System.out.println("event: " + event);
        }
    
    
    }

  • 啟動後,確認line bot 的api有作用

  • 回到line developers的channel中,Message API 底下的Webhook URL,點擊Vertify,如果彈出success的視窗,就代表成功囉!

  • 最後你就可以使用Message API中的QR code進行測試。

後面比較複雜的功能就自己看囉!我就不寫了,基本上就是使用官方提供在github上的sample-spring-boot-kitchensink這個專案修修改改就可以了!

本專案的github,其中包含一些進階的使用以及連結mongoDB