【Line 消息推送开发】四、功能开发调试

一、创建通道

创建一个 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将在下章讲解

 

注:转载请附上原链接,谢谢!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值