在上一篇中我们提到,replyToken可以用作我们回覆使用者讯息的验证.
Line文件中有说到
https://api.line.me/v2/bot/message/reply
成功回传HttpStatus 200,body无内容
失败则回传对应状态码,并会在body内带入message显示错误讯息
可以使用 RestTemplate 或是 Line提供的套件方法,以下我们两个都会示範
@Data@AllArgsConstructorpublic class Message {private String type;private String id;private String text;}@Datapublic class ReplyMsg {private String userId;private String replyToken;private Message[] messages;}@Service@Slf4jpublic class LineMsgService {@Value("${line.bot.channelToken}")private String channel_token;@Autowiredprivate RestTemplate restTemplate;private final String replyUrl = "https://api.line.me/v2/bot/message/reply";public void replyMsg(ReplyMsg replyMsgs) {HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setContentType(MediaType.APPLICATION_JSON);httpHeaders.setBearerAuth(channel_token);HttpEntity<ReplyMsg> httpEntity = new HttpEntity<>(replyMsgs,httpHeaders);ResponseEntity<JsonObject> response = restTemplate.exchange(replyUrl, HttpMethod.POST, httpEntity,JsonObject.class);if(HttpStatus.OK.equals(response.getStatusCode())) {log.info("response status:{}, response msg:{}",response.getStatusCode(),response.getBody().getMessage());}}
接下来是 Controller端
@PostMapping(value="reply",consumes="application/json")public void replyUser(@RequestBody ReplyMsg replyMsg) {lineMsgService.replyMsg(replyMsg);}
那当然也可以呼叫Line 提供的套件,文件里面也有提供呼叫的範例
public void sendByLine(LineMsgBack message) throws InterruptedException, ExecutionException {LineMessagingClient client = LineMessagingClient .builder(channel_token) .build();TextMessage text = new TextMessage("hello");ReplyMessage replyMessag = new ReplyMessage(message.getEvents()[0].getReplyToken(),text);BotApiResponse botApiResponse = client.replyMessage(replyMessag).get();log.info("reply message result:"+botApiResponse.getMessage());}
贴心提示:
1.请注意 replyToken只能使用一次,时间有效期为一分钟
2.另外当时我在做测试的时候有遇到,怎么打都是回传 { status:400 message:Invalid Reply Token} 的问题
,最后发现问题是出在 channel access token上,去设定页面,按Issue重新申请一个就可以了
那我们这个系列就告一段落啰
以下是其他篇供大家参考
Line Message API + MongoDB 串接实作(一)安装环境
Line Message API + MongoDB 串接实作(二)接收讯息
Line Message API + MongoDB 串接实作(三)查询使用者讯息资料