【分享】用java和pathon实现小红书(Red Booklet)客服自动回复功能、技术实现分析

news2024/10/6 22:06:56

技术栈:python、java、android,进程管理、socket通信

客户需求:

客户需要在Red Booklet平台做一个可以24小时自动回复用户私信、评论、回关用户等行为的客服软件。他说他们公司有50个小红书号,十几个客服,急需一款代替或辅助人工客服的软件进行一些日常的客服工作。

我调研后发现,Red Booklet目前在2B这块还不成熟,目前平台主要还是偏2C业务,但是好多2B企业在上面引流,某种意义来说,Red Booklet已经出现了2B业务了。

我大概整理了一下客户具体需求如下:

一、私信聊天。

1、24小时实时回复用户私信消息。因为客服也是要下班,所以下班后是一个工作盲点。

2、能够对用户私信的内容进行针对性回复。匹配关键字进行预设回复。(往深的做也可以接入AI回复)

二、关注

1、24小时实时对用户的关注要进行回关

2、回关后还要给用户主动发二条或以上私信(小红书互相关注是可以发多条的)

三、评论

1、24小时实时回复用户评论,可以针对关键字进行预设回评内容

2、回评后需要主动关注用户

3、关注用户后,还需要主动给用户发一条私信

要点

软件开启后就需要做到全天运行,不需要人工再进行任何操作。

花了点时间还是搞出来了。先看一下测试视频

客服机器人自动回复私信

技术实现思路:

软件是一个用安卓开始的app,使用安卓线程管理、页面分析技术,以及通信抓包分析技术。

使用了java调用底层服务支持,使用了python做了大数据分析。

以下是代码

<vertical>
                <card w="*" h="40" margin="10" cardCornerRadius="2dp"
                    cardElevation="1dp" gravity="center_vertical">
                    <Switch id="autoService" text="启动无障碍服务" checked="{{auto.service != null}}" padding="18 8 8 8" textSize="15sp" />
                    <View bg="#4caf50" h="*" w="10" />
                </card>
                {/* <horizontal marginTop="10">
                        <Switch paddingLeft="20"  id="only_new_store" text="只发新店"  checked="{{only_new_store}}"  w="auto"  />
                        <Switch paddingLeft="50"  id="only_unsend_store" text="只发未发送过的" checked="{{only_unsend_store}}"  w="auto" />
                </horizontal> */}

                {/* <horizontal marginTop="10"> */}
                    {/* <text textColor="#000000" paddingLeft="20" text="间隔(秒)" w="auto" />  
                    <input id="interval_time" inputType="number" text="10" w="150" gravity="center" /> */}
                    {/* <text textColor="#000000" paddingLeft="20" text="秒,到" w="auto" />   */}
                    {/* <input id="max_time" inputType="number" hint="数字" w="150" gravity="center" />
                    <text textColor="#000000" paddingLeft="20" text="秒" w="auto" /> */}
                {/* </horizontal> */}
                {/* <horizontal marginTop="10">
                    <text textColor="#000000" paddingLeft="20" text="销量低于" w="auto" />  
                    <input id="sale_num_lt" inputType="number" text="10" w="150" gravity="center" />
                    <text textColor="#000000" paddingLeft="20" text="发" w="auto" />  
                </horizontal> */}
            
                <horizontal marginTop="10">
                    <text textColor="#000000" paddingLeft="20" text="回复评论:" w="auto" />  
                    <input paddingLeft="20"   id="replay_comment_content" line='5' inputType="textMultiLine" w="*" hint="回复内容"  />
                </horizontal>
                <horizontal marginTop="10">
                    <text textColor="#000000" paddingLeft="20" text="回评后私信:" w="auto" />  
                    <input paddingLeft="20"   id="replay_comment_message" line='5' inputType="textMultiLine" w="*" hint="私信内容"  />
                </horizontal>
                <horizontal marginTop="10">
                    <text textColor="#000000" paddingLeft="20" text="回关私信1:" w="auto" />
                    <input paddingLeft="20"   id="message1" line='5' inputType="textMultiLine" w="*" hint="内容一"  />
                </horizontal>
                <horizontal marginTop="10">
                <text textColor="#000000" paddingLeft="20" text="回关私信2:" w="auto" />
                    <input paddingLeft="20"   id="message2" line='5' inputType="textMultiLine" w="*" hint="内容二"  />
                </horizontal>
                <horizontal marginTop="10">
                <text textColor="#000000" paddingLeft="20" text="回关私信3:" w="auto" />
                    <input paddingLeft="20"   id="message3" line='5' inputType="textMultiLine" w="*" hint="内容三"  />
                </horizontal>

                <horizontal marginTop="10">
                    <text textColor="#000000" paddingLeft="20" text="私信关键字1:" w="auto" />  
                    <input paddingLeft="20"   id="keyword1" line='5' inputType="textMultiLine" w="*" hint="多个关键字用逗号、隔开"  />
                </horizontal>  
                <horizontal marginTop="10">
                    <text textColor="#000000" paddingLeft="20" text="关键字回复1:" w="auto" />  
                    <input paddingLeft="20"   id="replay_keyword1" line='5' inputType="textMultiLine" w="*" hint="回复内容"  />
                </horizontal>
                <horizontal marginTop="10">
                    <text textColor="#000000" paddingLeft="20" text="私信关键字2:" w="auto" />  
                    <input paddingLeft="20"   id="keyword2" line='5' inputType="textMultiLine" w="*" hint="多个关键字用逗号、隔开"  />
                </horizontal>   
                <horizontal marginTop="10">
                    <text textColor="#000000" paddingLeft="20" text="关键字回复2:" w="auto" />  
                    <input paddingLeft="20"   id="replay_keyword2" line='5' inputType="textMultiLine" w="*" hint="回复内容"  />
                </horizontal>    

                <horizontal>
                    <button id="start" text="开始运行" style="Widget.AppCompat.Button.Colored" w="*" margin="10" />
                </horizontal>

                <horizontal w="*" h="*">
                    <button id="save" text="保存设置"  layout_gravity="center" style="Widget.AppCompat.Button.Colored" margin="10" />
                    {/* <button id="reset" text="恢复默认" style="Widget.AppCompat.Button.Colored" margin="10" /> */}
                    <button id="stop" text="停止运行"  layout_gravity="right" style="Widget.AppCompat.Button.Colored" margin="10" />
                </horizontal>
               
            </vertical>
  
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:paddingLeft="16dp"
      android:paddingRight="16dp"
      android:orientation="vertical" >
  
      <Button
          android:id="@+id/supabutton"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="I'm a button" />
  
      <ImageButton
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:contentDescription="A tiny Android icon"
          android:src="@drawable/baseline_android_24"
          app:tint="#ff0000" />
  
      <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:drawableStart="@drawable/baseline_android_24"
          android:drawablePadding="4dp"
          android:drawableTint="#ff0000"
          android:text="I'm a button with an icon" />
  </LinearLayout>

    public class MyCustomJavaControlService extends ControlsProviderService {
 
    private final int LIGHT_ID = 1337;
    private final String LIGHT_TITLE = "My fancy light";
    private final int LIGHT_TYPE = DeviceTypes.TYPE_LIGHT;
    private final int THERMOSTAT_ID = 1338;
    private final String THERMOSTAT_TITLE = "My fancy thermostat";
    private final int THERMOSTAT_TYPE = DeviceTypes.TYPE_THERMOSTAT;
 
    ...
    }
    

特别声明:本技术基于安卓系统原有功能开发,没有使用破解之类的技术,一切合法合规。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/569108.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

正则表达式和文本三剑客题型练习

​ 1、显示/etc/passwd文件中以bash结尾的行&#xff1b; 解释&#xff1a;使用 grep 工具来搜索文件 /etc/passwd 中匹配模式 bash$ 的行。bash$ 是一个正则表达式&#xff0c;其中 $ 表示行结尾。因此&#xff0c;bash$ 匹配以 bash 结尾的行。 grep bash$ /etc/passwd 运…

四元数转换为欧拉角(多解问题)

车辆行驶状态估计&#xff08;4&#xff09;中车辆横摆角信息在顺时针转向时存在明显的错误&#xff0c;进行记录输出 2023-05-25-aft02.txt 四元数&#xff1a; -0.00201210.00115721 -0.0005967610.999997 欧拉角&#xff1a;3.14039四元数&#xff1a; -0.00170584 -0.00…

RabbitMQ(2)、MQ的问题、消息可靠性

一、MQ的问题 基于上篇存在的问题 1. 问题说明 MQ在分布式项目中是非常重要的&#xff0c; 它可以实现异步、削峰、解耦&#xff0c;但是在项目中引入MQ也会带来一系列的问题。 今天我们要解决以下几个常见的问题&#xff1a; 消息可靠性问题&#xff1a;如何确保消息被成功送…

MySQL — SQL 优化

文章目录 SQL 优化一、插入数据二、主键优化2.1 数据组织方式2.2 页分裂2.3 页合并2.4 主键设计原则 三、 Order by 优化3.0 排序方式讲解3.1 升序/降序联合索引结构图示3.2 总结 四、Group by优化五、limit优化六、 count优化七、update优化七、update优化 SQL 优化 一、插入…

【MySQL 数据库】5、存储引擎

目录 一、MySQL 体系结构二、存储引擎简介三、InnoDB 存储引擎四、MyISAM五、Memory六、三大存储引擎比较七、存储引擎的选择 一、MySQL 体系结构 连接层 最上层是一些客户端和链接服务&#xff0c;包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主…

07:MYSQL----多表查询

目录 1:多表查询概述 2:多表查询分类 3:内连接 3:外连接 4:自连接 5:联合查询-union&#xff0c;union all 6:子查询 1:多表查询概述 select * from emp , dept; emp:表中有6条数据, dept表中有5条数据只查询出来的数据为:30条 概述:指从多张表中查询数据 笛卡尔积…

在vite或者vue-cli中使用.env[mode]环境变量

在项目中总会遇到一些默认的配置,需要我们配置到静态文件中方便我们去获取,这时候就可以用到这个.env环境变量文件,在cli创建的项目中顶层的nodejs会有一个process对象,这个对象可以根据不同的环境获取不同的环境配置文件,但是vite中获取变量的方式不一样。 创建变量文件.env.…

如何编写接口自动化框架系列之requests详解(三)

目录 1.http协议 2.requests介绍 3.requests的主要功能 3.requests的主要功能 3.1 场景1-常用方法 3.2 场景2-通用方法 3.3 场景3-cookies认证方式 4.requests 在项目中的实践 4.1 在接口层实现一个接口 4.2 在测试用例层调用 4.3 项目总结 本文是接口自动化测试框架…

IOC初始化 IOC启动阶段 (Spring容器的启动流程)

[toc](IOC初始化 IOC启动阶段 (Spring容器的启动流程)) IOC初始化 IOC启动阶段 (Spring容器的启动流程) Resource定位过程&#xff1a;这个过程是指定位BeanDefinition的资源&#xff0c;也就是配置文件&#xff08;如xml&#xff09;的位置&#xff0c;并将其封装成Resource对…

Makefile基础教程(make的隐式规则)

文章目录 前言一、什么是make的隐式规则二、makefile中出现同名目标时三、一些常见的隐式规则四、查看隐式规则五、隐式规则缺点六、禁用隐式规则1.全局禁用2.局部禁用 总结 前言 本篇文章将给大家介绍make的隐式规则。 一、什么是make的隐式规则 Make 的隐式规则是指 Make …

css选择器及其权重

1. 类型选择器 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wid…

【ZYNQ】裸机 PS + PL 双网口实现之 ZYNQ 配置

目前&#xff0c;在 ZYNQ 中进行以太网开发的方案&#xff0c;大部分都是基于通过 PS 的 MIO 以 RGMII 接口连接外部 PHY 芯片的方式。但是&#xff0c;由于使用 PS 的 MIO 只能以 RGMII 接口连接外部 PHY 芯片&#xff0c;这就限制了支持其他接口 PHY 芯片的使用&#xff0c;如…

分文件实现温湿度数据管理系统项目

目标&#xff1a; 了解分文件的概念&#xff0c;要依次从C语言的函数声明、变量的存储类别、C语言编译预处理&#xff0c;说起。这些知识点我们之前或多或少接触过&#xff0c;这里做个总结与拓展。经过总结&#xff0c;最后我们归纳出一个实现C语言模块化编程的技巧&#xff…

03-bootstrap-响应式布局-栅格系统

一、概述 1、栅格系统是 Bootstrap 中响应式布局的重要组成部分&#xff0c;旨在实现页面元素的自适应排版。Bootstrap 栅格系统将屏幕宽度分为 12 列&#xff0c;通过在 HTML 元素上添加相应的类名&#xff0c;可以让元素占据指定数量的列数&#xff0c;从而实现灵活的布局效…

5种易实现的Linux和 Windows VPS速度提升方法

​  无论是Linux VPS还是Windows VPS&#xff0c;网站速度的提高都是非常重要的。它们在提高网站速度方面都有很多的优化方法。下面我们将介绍 5 种提高网站速度的方法。 1.通过缓存加速 缓存通常是用来加快商业网站加载时间的技术&#xff0c;因此它也可以用在 VPS 上。没有…

车架号查车辆信息-vin查车辆信息api接口

接口地址&#xff1a; https://登录后显示/pyi/88/264(支持:http/https)) 在线查询&#xff1a;https://www.wapi.cn/car_vin.html 网站地址&#xff1a;https://www.wapi.cn 返回格式&#xff1a;json,xml 请求方式&#xff1a;GET,POST 请求说明&#xff1a; Md5验证方式-…

字符串、字符串列表,倒序生成字典。

带数字的字符串以数字为key倒序生成字典&#xff0c;字符串列表按其元素索引为key倒序生成字典。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简…

【MySQL】-- 表的操作

目录 表的操作 创建表 创建表案例 查看表结构 查看表结构案例 查看历史上表的创建语句 修改表 修改表实例 新增列属性 修改列属性 删除列属性 修改列名 修改表名 删除表 表的操作 创建表 语法&#xff1a; CREATE TABLE (if not exists) table_name (fie…

【MyBatisPlus框架】

文章目录 MyBatisPlus1.概述1.1 简介1.2特性1.3支持数据库1.4框架结构 2.入门案例2.1 创建数据库以及表2.2 创建工程2.2.1引入依赖 2.3编写代码 3.基本CRUD3.1BaseMapper3.2插入3.3删除3.4修改3.5查询3.6通用Service 4.常用注解4.1TableName4.1.1问题4.1.2通过TableName解决上述…

简述springmvc的流程

4、SpringMVC的执行流程 用户向服务器发送请求&#xff0c;请求被SpringMVC 前端控制器 DispatcherServlet捕获。 DispatcherServlet对请求URL进行解析&#xff0c;得到请求资源标识符&#xff08;URI&#xff09;&#xff0c;判断请求URI对应的映射&#xff1a; a) 不存在 …