一、创建通道
创建一个 Provider ,在 Provider 下创建一个 channel <MQTTPush>
二、创建SpringBoot项目
标准的STS创建SpringBoot项目,会的同学可忽略此步骤。
选择Spring web。
一直Next就行了。创建完项目之后,可自己修改maven配置,本教程使用eclipse默认maven。
在 pom.xml 里添加 line-bot-spring-boot
<dependency>
<groupId>com.linecorp.bot</groupId>
<artifactId>line-bot-spring-boot</artifactId>
<version>6.0.0</version>
</dependency>
三、Receiving messages
新建一个package<event>、再新建一个class<MessageEventImpl>
在MessageEventImpl上加入@LineMessageHandler注解,并加入以下代码:
@Autowired LineMessagingClient lineMessagingClient;
/**
* 监听所有事件回调
*/
@EventMapping
public void handleDefaultMessageEvent(Event event) {
System.out.println("[handleDefaultMessageEvent]event: " + event);
}
/**
* 监听文本消息事件回调
*/
@EventMapping
public void handleTextMessageEvent(MessageEvent<TextMessageContent> messageEvent) {
try {
Source source = messageEvent.getSource();
String lineId = source.getUserId();
String replyToken = messageEvent.getReplyToken();
String message = messageEvent.getMessage().getText();
System.out.println("[handleTextMessageEvent]source: " +source
+ " , lineId: " + lineId
+ " , replyToken: " + replyToken
+ " , message: " + message);
/* Get user's display name */
String displayName = lineMessagingClient
.getProfile(lineId)
.get()
.getDisplayName();
/* Building the response */
String answer = String.format("Hello, %s! Your message is %s",
displayName, message);
TextMessage responseMessage = new TextMessage(answer);
/* Sending the respone */
lineMessagingClient
.replyMessage(new ReplyMessage(replyToken, responseMessage));
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
四、Sending messages
新建一个package<controller>、再新建一个class<APIController>
在APIController上加入@RestController、@RequestMapping("linepush/api")注解,并加入以下代码:
private static final String SENDMSGTOONE = "/sendMsgToOne";
@Autowired LineMessagingClient lineMessagingClient;
/**
* Send message to someone / a group
* @param params
* @return
*/
@GetMapping( value = SENDMSGTOONE)
public Response sendMsgToOne(@RequestParam Map<String, Object> params) {
String ids = String.valueOf(params.get("ids"));
String msg = String.valueOf(params.get("msg"));
List<Message> messages = new ArrayList<Message>();
messages.add(new TextMessage(msg));
Future<BotApiResponse> message = lineMessagingClient.pushMessage(new PushMessage(ids, messages));
System.out.println("[sendMsgToOne]"+message.toString());
return Response.ok();
}
五、获取配置信息
在Line开发者平台中找到Channel,在Basic中找到channel-secret,在Message API 中找到channel access token(第一次需要自己点击按钮生成)。
按下图配置application.properties,line.bot.handler.path为回调地址(webhook)。
六、Ngrok
回调地址需要https(及有效的非个人生成的证书) url,我们调试阶段可以使用Ngrok工具,其他需要公网htpps url场景也可以使用此工具。(Ngrok用法可自行百度)
1、将SpringBoot打包、启动服务(http、8080);
2、cmd 进入 Ngrok 所在目录,执行 ngrok http 8080;
3、复制窗口输出的https地址,在Line开发者平台中找到Channel,在Message API 中找到Webhook settings,粘贴进去,并加上 callback (在application.properties中配置的line.bot.handler.path);
4、开启Use webhook;
5、点击Verify显示Success。
七、测试
1、使用个人Line账号发送消息,会接收到回复消息;
2、调用API发送给指定用户 / 群组,会接收到推送消息;
此次用到的用户ID和群组ID将在下章讲解
注:转载请附上原链接,谢谢!