出自秋天不穿秋裤,天冷也要风度的程序猿之手,必属精品!
今天给大家介绍微信个人号自动回复机器人的开发教程!使用微信机器人托管微信,可以避免不及时回复错过的消息!
少啰嗦,上代码!
1、接收所有微信消息类型
/**
* 微信好友发来文本消息
*
* @param message
*/
@Bind(msgType = MsgType.TEXT)
public void handleText(WeChatMessage message) {
if (StringUtils.isNotEmpty(message.getName())) {
log.info("接收到 [{}] 的文本消息: {}", message.getName(), message.getText());
sendMsg(message);
}
}
/**
* 微信好友发来图片消息
*
* @param message
*/
@Bind(msgType = MsgType.IMAGE)
public void handleImage(WeChatMessage message) {
if (StringUtils.isNotEmpty(message.getName())) {
log.info("接收到 [{}] 的图片消息: {}", message.getName(), message.getImagePath());
sendMsg(message);
}
}
/**
* 微信好友发来音频消息
*
* @param message
*/
@Bind(msgType = MsgType.VOICE)
public void handleVoice(WeChatMessage message) {
if (StringUtils.isNotEmpty(message.getName())) {
log.info("接收到 [{}] 的音频消息: {}", message.getName(), message.getVoicePath());
sendMsg(message);
}
}
/**
* 微信好友发来视频消息
*
* @param message
*/
@Bind(msgType = MsgType.VIDEO)
public void handleVideo(WeChatMessage message) {
if (StringUtils.isNotEmpty(message.getName())) {
log.info("接收到 [{}] 的音频消息: {}", message.getName(), message.getVideoPath());
sendMsg(message);
}
}
/**
* 微信好友发来名片消息
*
* @param message
*/
@Bind(msgType = MsgType.PERSON_CARD)
public void handlePersonCard(WeChatMessage message) {
if (StringUtils.isNotEmpty(message.getName())) {
log.info("接收到 [{}] 的名片消息: {}", message.getName(), message.getRecommend());
this.api().verify(message.getRecommend());
sendMsg(message);
}
}
/**
* 微信好友发来动画消息
*
* @param message
*/
@Bind(msgType = MsgType.EMOTICONS)
public void handleEMOTICONS(WeChatMessage message) {
if (StringUtils.isNotEmpty(message.getName())) {
log.info("接收到 [{}] 的动画表情消息: {}", message.getName(), JSON.toJSONString(message.getRaw()));
sendMsg(message);
}
}
/**
* 微信好友发来分享消息
*
* @param message
*/
@Bind(msgType = MsgType.SHARE)
public void handleShare(WeChatMessage message) {
if (StringUtils.isNotEmpty(message.getName())) {
log.info("接收到 [{}] 的动画表情消息: {}", message.getName(), JSON.toJSONString(message.getRaw()));
sendMsg(message);
}
}
/**
* 发送自定义消息
*
* @param fromUser
*/
public void sendMsg(WeChatMessage message) {
//1、检查匹配回复
//2、是否交给机器人
String text = message.getText();
boolean sendFlag = false;
if(StringUtils.isNotEmpty(text) && null != autoMsg && autoMsg.getList().size()>0 ){
//匹配规则
List
for(Msg msg :msgList){
if(text.contains(msg.getKey())){
this.sendMsg(message.getFromUserName(), msg.getValue());
sendFlag = true;
break;
}
}
}
if(!sendFlag){//没有匹配上
//判断是否是个人聊天
if(!message.isGroup()){//不是群消息,个人消息
sendRobotMsg(message);
}else{//是群消息
sendRobotMsg(message);
}
}
}
/**
* 请求机器人获取消息,再发送给其他人
* @param message
*/
public void sendRobotMsg(WeChatMessage message){
//判断消息类型,只有文本消息才处理
if(message.getMsgType().equals(MsgType.TEXT)){
String url = autoMsg.getAuto().getCustomRobotUrl();//自定义机器人时的请求地址
String remoteMst = requestRemoteService(message.getText(), url);
if(StringUtils.isNotBlank(remoteMst)){
this.sendMsg(message.getFromUserName(), remoteMst);
}
}else{
String automsg = autoMsg.getAuto().getAutoReplyMsg();// 自动回复内容
this.sendMsg(message.getFromUserName(), automsg);
}
}
/**
* 请求远方服务器获取要回复的消息
* @param message
* @param url
* @return
*/
public String requestRemoteService(String text,String url){
String msg = null;
url = url + "?text=" + text;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).get().build();
try {
Response response = client.newCall(request).execute();
if (response.isSuccessful() && null != response.body()) {
msg = response.body().string();
}
} catch (Exception e) {
e.printStackTrace();
}
return msg;
}
2、配置自定义匹配关键词、回复内容及机器人地址(定制加微tangjinjinwx)
{
"auto": {
"autoReplyMsg": "专注于微信机器人研发,可提供api接口,自由定制其功能,服务咨询请加微信tangjinjinwx",
"customRobotUrl": "http://www.xxxx.com:10089/robot"
},
"list": [
{
"key": "群控",
"value": "注于微信机器人、群控云控、微信客服系统研发,可提供sdk及api调用接口,可自由定制其功能,服务咨询请加微信tangjinjinwx"
}
]
}
3、启动机器人,扫码登陆微信,微信机器人将自动托管你的消息!
该微信个人号机器人可用做微信个人号自动回复、群聊发消息、智能自动回复、淘宝客机器人、导购机器人、返利机器人等,也可以用做微信客服等!企业级定制可接入sdk http://www.yunlauncher.com/Blog/articles/119.html 即可实现!
源码下载地址:http://www.yunlauncher.com/app/weixin-robot.zip