通过java程序发送飞鸽快信(微信)消息

简介: 通过java程序发送飞鸽快信(微信)消息

一、产品介绍:


飞鸽快信微信消息是一款基于微信的实时消息推送产品,可应用于服务器告警、LINUX服务器日志、状态监控异常提醒、阀值预警、程序报错报警提醒等场景,使用微信消息代替短信发送警告通知,实现精准推送。


二、当前解决方案的弊端:


目前,对于服务器告警、故障等问题的消息通报,以往的处理方式都是通过短信通知或者邮件,但是短信已经过时了,而邮件的及时性会比较差,暴露出了越来越多的缺点:


1.短信接收延迟严重、甚至收不到,出现概率很高,很容易错过重要报警消息,无法及时跟踪处理问题;

2.短信单条字数限制70字以内,超出被截断成多条,导致信息展示不清晰,阅读不流畅;

3.不支持群发,信息不对称、管理混乱。


作为互联网行业中的一员,在平常工作中也是深受其扰,经过仔细研究,决定开发飞鸽快信微信消息这样一款产品来解决上述问题,从此与短信带来的烦恼Say GoodBye!


三、飞鸽快信微信消息的优点:


1.基本做到零延迟,实测消息请求到推送给微信在一秒之内完成。对于微信未接收到的,系统会继续重发,最大限度保证消息不漏发。


2.一条消息内容可以写很长不会截断,用户可以在微信接收消息界面查看详情,可以更方便的了解此次服务器告警的详细内容,从而提高解决问题的效率。


3.系统内置了项目管理和成员管理,消息以项目为单位,一条消息请求系统自动群发到所有项目成员微信上。减少工作量的同时,还能方便管理人员了解各项目详细情况。


4.支持多种模板,不同类型的消息进行归类,信息内容主次分明,让人看了一目了然,大大提高了工作效率。


四、技术实现


每天或者每月定时给自己的微信发送消息

实现方式:采用飞鸽快信,每月总送1000条消息


1.申请接口

2.代码测试 使用的jar包为 httpclient-4.3.6

import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
/**
 * 发送飞鸽快信
 *
 */
public class SendWechatMsg {
    public static void sendMsg(String title,String content,String remark) throws Exception {
        // 创建一个httpclient对象
        CloseableHttpClient client = HttpClients.createDefault();
        // 创建一个post对象
        HttpPost post = new HttpPost("http://u.ifeige.cn/api/send_message");
        // 创建一个Entity,模拟表单数据
        List<NameValuePair> formList = new ArrayList<NameValuePair>();
        // 添加表单数据  
        formList.add(new BasicNameValuePair("secret", "********************************"));
        formList.add(new BasicNameValuePair("token", "*********************************"));
        formList.add(new BasicNameValuePair("key", "notice"));
        formList.add(new BasicNameValuePair("title", title));
        formList.add(new BasicNameValuePair("content", content));
        formList.add(new BasicNameValuePair("remark", remark));
        formList.add(new BasicNameValuePair("time", "time()"));
        // 包装成一个Entity对象
        StringEntity entity = new UrlEncodedFormEntity(formList, "utf-8");
        // 设置请求的内容
        post.setEntity(entity);
        // 设置请求的报文头部的编码
        // post.setHeader(new BasicHeader("Content-Type",
        // "application/x-www-form-urlencoded; charset=utf-8"));
        // 设置期望服务端返回的编码
        // post.setHeader(new BasicHeader("Accept",
        // "text/plain;charset=utf-8"));
        // 执行post请求
        CloseableHttpResponse response = client.execute(post);
        // 获取响应码
        int statusCode = response.getStatusLine().getStatusCode();
        if (statusCode == 200) {
            // 获取数据
            String resStr = EntityUtils.toString(response.getEntity());
            // 输出
            System.out.println(resStr);
        } else {
            // 输出
            System.out.println(statusCode);
        }
    }
}

参数简介(详细请移步接口网站)

群组接口 此接口用于给群组添加接收消息的用户

参数说明:

参数名称     参数类型     描述

secret    String(必选)    系统分配给您的密钥,在用户中心查看

token    String(必选)    群组token,可以群组详情里查看

uid    int(与name可选其一)    用户在飞鸽快信的ID,唯一,通过用户列表接口获得

name    string(与uid可选其一)    用户的微信昵称,通过用户列表接口获取比对


单独给用户发消息 此接口用于单独给关注管理员的用户发送消息

参数说明:

参数名称     参数类型     描述

secret    String(必选)    系统分配给您的密钥,在用户中心查看

uid    Int(必选)    接收消息人员的ID,通过用户列表获得

key    Int(可选)    消息模板KEY,不传即视为故障通报通知

title    String(必选)    消息标题,请使用您自己的内容替换

content    String(必选)    消息内容,请使用您自己的内容替换

remark    String(必选)    消息详细说明,请使用您自己的内容替换

time    Numeric(可选)    时间,不传即为服务器接收到消息的发送请求的时间


五、示例


sample-2.pngsample-2.png

sample-3.png



sample-4.png


目录
相关文章
|
3月前
|
Java 流计算
利用java8 的 CompletableFuture 优化 Flink 程序
本文探讨了Flink使用avatorscript脚本语言时遇到的性能瓶颈,并通过CompletableFuture优化代码,显著提升了Flink的QPS。文中详细介绍了avatorscript的使用方法,包括自定义函数、从Map中取值、使用Java工具类及AviatorScript函数等,帮助读者更好地理解和应用avatorscript。
利用java8 的 CompletableFuture 优化 Flink 程序
|
4月前
|
XML 存储 JSON
Java程序部署
Java程序部署
|
2月前
|
SQL 安全 Java
Java 异常处理:筑牢程序稳定性的 “安全网”
本文深入探讨Java异常处理,涵盖异常的基础分类、处理机制及最佳实践。从`Error`与`Exception`的区分,到`try-catch-finally`和`throws`的运用,再到自定义异常的设计,全面解析如何有效管理程序中的异常情况,提升代码的健壮性和可维护性。通过实例代码,帮助开发者掌握异常处理技巧,确保程序稳定运行。
58 1
|
2月前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
113 1
|
2月前
|
小程序 前端开发 算法
|
2月前
|
Java API 开发者
Java如何实现企业微信审批流程
大家好,我是V哥。本文分享如何在企业微信中实现审批流程,通过调用企业微信的开放API完成。主要内容包括获取Access Token、创建审批模板、发起审批流程和查询审批结果。提供了一个Java示例代码,帮助开发者快速上手。希望对你有帮助,关注V哥爱编程,编码路上同行。
132 4
|
3月前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
599 2
|
3月前
|
安全 Java Linux
java程序设置开机自启
java程序设置开机自启
191 1
|
3月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
110 1
|
4月前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
58 5