Skip to content

附录2:主动请求(远程控制)

chenxuyong edited this page Feb 5, 2022 · 25 revisions

SmsForwarder V2.4.0 以上,可以通过 被动接收 或者 主动轮询 获取指令,从而操作本机

【注意】这只是一个先行尝试的功能(来自机油的PR),下一个版本(2.5.0)重点改造此功能,对暴露的api有什么想法欢迎提issue,在合法合规的前提下,酌情考虑会不会添加;

后续版本可能发生的改变(包括但不限于):

  • 请求与应答报文重新设计(结构、状态码等统一规范)
  • 服务端与客户端双向验签(或对称加密报文)【可选】
  • 提供简单的 SmsHub Api 服务端demo

被动接收本地 HttpServer

  • WiFi网络下可用,启动后局域网内其他机器可直接调用本机接口

  • 一键克隆 共用本地 HttpServer,访问URL: http://本地ip:5000/send_api

  • 接收一个list并执行操纵,设置处理结果后并在尾部追加一个心跳包后返回原list

post请求体:

[{
    "action": "0", //发送短信操作(暂时只支持发送操作)
    "target": "88888",//收件人手机号
    "content": "xxx",//内容
    "channel": "1"//卡槽 1或2
},
{...
}]

主动轮询远程 SmsHub Api

  • 请先在通用设置中,填写服务端地址,再启动服务,APP轮询执行接口返回的操作

  • 每隔30秒发送一个心跳包,包含当前设备的信息,children里为上一次心跳后收到的所有消息,服务端需返回一个 list

报文结构:

[{
    "action": "0", //发送短信操作(暂时只支持发送操作)
    "target": "88888",//收件人手机号
    "content": "xxx",//内容
    "channel": "1"//卡槽 1或2
},
{...
}]

附录:

//唯一id
private String msgId;
//心跳数据时发送的设备名
private String deviceInfo;
//卡槽信息
private String channel;
//消息内容
private String content;
//错误消息
private String errMsg;
//手机号(;分隔)或包名
private String target;
//状态或操作 0:发送短信, 1:接收到的消息, 2:操作处理成功, 3:操作处理失败, -1:心跳包 (包含deviceInfo字段,children里带有两次心跳间收到的消息)
private String action;
//消息类型 app:通知 phone:来电, sms:短信, battery:电池信息
private String type;
//时间戳
private String ts;
//两次交互之间接收到的消息
private List<SmsHubVo> children;

Clone this wiki locally