陈奇网络工作室

通过UCloud AI内容审查免费打造微信订阅号黄色识别机器人UAI-审查员

本文的内容

显示

1.

1.配置微信微信官方账号

2.

2.编写服务器

3.

3.处理业务逻辑

3.1.

推荐阅读

顾名思义,我们在这里做订阅号机器人,大致是一个流程:微信官方账号接收用户消息——微信平台向我们的服务器发送消息——我们的服务器对消息进行处理——将处理结果返回给微信平台——微信平台向用户发送内容。

基于这样一个大前提,有以下步骤:

1.填写服务器配置,接收微信平台发送的内容。

2.开发服务器并验证服务器地址的有效性。

3.处理特定的业务逻辑

1.配置微信微信官方账号

你必须先有订阅号,然后在订阅号后台点击开发者-基本配置进入以下页面,点击确定。

然后进入配置页面,我们会一一讲解配置。

开发者ID,开发者调用的唯一符号,需要在调用接口时传递。

开发者密码非常重要,必须保存在您自己的服务器上以验证安全性。

服务地址,这是我们用来接收微信平台转发的用户消息的服务的地址。

Token,用户收到信息时,验证请求是否来自微信平台。

用于加密消息以防止被拦截。如果6设置为明文模式,则不需要此配置。

是否加密传输消息?

本期只接收图片消息,验证后回复,所以只需要配置3和4。

是我们具体的服务器地址,路径是weixin/receive,下面具体的代码部分会详细解释。

令牌可以随意生成一个UUID。

随机生成,后面调用API的话会用到。

这时如果你点击提交,会提示验证失败,因为你还没有部署API,这里配置好了我们就开始写代码。

2.编写服务器

在服务器端使用现有的轮子非常简单。因为是spring-boot项目,所以直接引入现成的微信启动器,还必须添加一个资源库。这是基于Github自己的仓库。

developer-weapons-repository https://raw . githubusercontent . com/developer-weapons/repository/master com . github . developer . weapons微信-spring-boot-starter1.2.6

不过写两个接口,一个第一次绑定微信后台验证,一个以后接收消息/weixin/receive。

将准备好的令牌配置到application.properties,然后将其注入控制器。大概的验证码如下。如果签名验证成功,则返回echostr,视为通信的标志,如果验证失败,则返回error。

@自动连线

私有微信官方服务微信官方服务;

@Value('${weixin.token} ')

私有字符串标记;

@ request mapping(value='/weixin/receive 'method=RequestMethod。获取)

公共无效接收(

@RequestParam(value='signature ')字符串签名,

@RequestParam(value='timestamp ')字符串时间戳

@RequestParam(value='nonce ')字符串nonce,

@RequestParam(value='echostr ')字符串echostr,

HttpServletResponse响应)引发IOException {

boolean valid=wechatoofficialservice . is valid(签名、时间戳、nonce、令牌);

PrintWriter writer=response . getwriter();

如果(有效){

writer . print(echostr);

}否则{

writer.print('error ')。

}

writer . flush();

writer . close();

}

写到这里就可以找一个服务器部署了,点击验证。此时点击提交直接成功。点击启用后生效。生效后,您原先配置的自动回复将生效,请谨慎操作。

3.处理业务逻辑

业务逻辑是先接收消息,下面是接收消息的代码。

@ request mapping(value='/weixin/receive 'method=RequestMethod。帖子)

公共无效接收(

@RequestParam(value='signature ')字符串签名,

@RequestParam(value='timestamp ')字符串时间戳

@RequestParam(value='nonce ')字符串nonce,

HttpServletRequest请求,

HttpServletResponse响应)引发IOException {

request . setcharacterencoding(' UTF-8 ');

response . setcharacterencoding(“UTF-8”);

boolean valid=wechatoofficialservice . is valid(签名、时间戳、nonce、令牌);

PrintWriter writer=response . getwriter();

如果(!有效){

writer.print('error ')。

writer . flush();

writer . close();

返回;

}

尝试{

map map=wechatoofficialservice . tomap(request . getinputstream());

if (map.get('MsgType ')。等于(' image '){

string msg=officilautoreplymessage . build()。withContent('收到的图片链接是:' map.get('PicUrl '))。withMsgtype(MessageTypeEnum。正文)。with from username(map . get(' ToUserName '))。with touser name(map . get(' from username '))。to XML();

writer . print(msg);

writer . flush();

writer . close();

返回;

}

} catch(异常e) {

log.error('WeixinController接收错误'e);

}

writer.print('成功');

writer . flush();

writer . close();

}

第一步,验证消息是否来自微信平台,然后使用wechatOfficialService.toMap方法分析接收到的消息的内容。目前判断比较简单,直接判断是不是图片消息,然后把图片的URL返回给发消息的用户。效果图如下

那么接下来就是最关键的一步,如何识别黄色,这个具体逻辑可以参考这篇文章《通过UCloud AI内容审核UAI-Censor免费搭建鉴黄平台教程》,现在我们直接把相关代码放上去。

按照上面的文章修改代码后,结果如下。具体的publicKey和privateKey供自己参考。

if (map.get('MsgType ')。等于(' image '){

string RES=check service . check(public key,privateKey,map . get(' PicUrl '));

officilautoreplymessage官方lAutoReplyMessage=

OfficialAutoReplyMessage.build()。withMsgtype(MessageTypeEnum。正文)。with from username(map . get(' ToUserName '))。with touser name(map . get(' from username '));

if (StringUtils.equals('禁止'res)) {

官方消息。有内容(‘兄弟,你的图有问题’);

}否则{

官方消息。有内容(‘骚年,你的图刚刚好’);

}

writer . print(officilautoreplymessage . to XML());

writer . flush();

writer . close();

返回;

}

最终的效果如下

那么你会造自己的探黄机器人吗?获取项目源代码(测试订阅号“面试Q”,订阅号“面试Q”只能用于学习,后期会下线。如果需要体验,请尽快。)

来源:代码制作者的笔记

西部数码代理(chenqinet.cn)是工信部批准的正规老牌云服务商,拥有ISP、云牌照、IDC、CDN全业务资质。自成立以来,二十多年来一直专注于域名注册,虚拟主机云服务器,企业邮箱,企业网站建立等互联网基础服务!

公司开发的云计算平台以便捷、高效、高性价比、意想不到的售后优势占领市场,跻身国内前三的接入服务商,为国内超过50万家网站提供高速稳定的托管服务!先后荣获中国高新技术企业、中国优秀云计算服务商、中国十大IDC企业、中国最受欢迎云服务商等称号!

目前西部数码代理高性能云服务器在售,最低仅售48元!

http://zhuji.chenqinet.cn/cloudhost/

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3