一、产品介绍:
飞鸽快信微信消息是一款基于微信的实时消息推送产品,可应用于服务器告警、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(可选) 时间,不传即为服务器接收到消息的发送请求的时间
五、示例