Line Message API + MongoDB 串接实作(四)发送讯息

在上一篇中我们提到,replyToken可以用作我们回覆使用者讯息的验证.

Line文件中有说到

https://api.line.me/v2/bot/message/reply

成功回传HttpStatus 200,body无内容

失败则回传对应状态码,并会在body内带入message显示错误讯息
http://img2.58codes.com/2024/20138857jeoyBqrSAj.png

可以使用 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重新申请一个就可以了
http://img2.58codes.com/2024/201388572yFPzapoOt.png

那我们这个系列就告一段落啰

以下是其他篇供大家参考
Line Message API + MongoDB 串接实作(一)安装环境
Line Message API + MongoDB 串接实作(二)接收讯息
Line Message API + MongoDB 串接实作(三)查询使用者讯息资料


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章