前言

之前的一篇文章《用Tasker实现Android手机短信转发到Telegram》介绍了用tasker实现手机短信转发的功能,主要是介绍转发到Telegram的方法,对转发到微信的方法一句带过,鉴于某些原因没有详细介绍,本篇简单介绍下如何使用tasker自动转发手机短信到微信上。

原理

短信转发到微信上是使用的企业微信的一项功能:企业微信收到的信息可以同步到微信,而企业微信有着丰富的可开发性。

步骤

整个操作步骤是:1.注册企业微信;2.创建一个应用;3.在tasker中创建配置文件。

注册企业微信

创建一个应用

创建tasker配置文件

1
下面是创建图示的说明

此图像的alt属性为空;文件名为5-1554217206.jpeg!default

点击加号–新建配置

此图像的alt属性为空;文件名为6-1554217207.jpeg!default

选择触发类型–事件

此图像的alt属性为空;文件名为9-1554217210.jpeg!default

选择触发条件类型–电话

此图像的alt属性为空;文件名为6-1554217211.jpeg!default

选择触发内容–收到短信

此图像的alt属性为空;文件名为6-1554217212.jpeg!default

点击返回

此图像的alt属性为空;文件名为1-1554217215.jpeg!default

新建任务

此图像的alt属性为空;文件名为2-1554217216.jpeg!default

自定义任务名字(可省略不填)

此图像的alt属性为空;文件名为6-1554217217.jpeg!default

点击名字右边的对号

此图像的alt属性为空;文件名为3-1554217218.jpeg!default

点击加号–新建操作

此图像的alt属性为空;文件名为9-1554217219.jpeg!default

选择代码

此图像的alt属性为空;文件名为2-1554217220.jpeg!default

选择JavaScriptlet

此图像的alt属性为空;文件名为1-1554217221.jpeg!default

在此位置填写代码

此图像的alt属性为空;文件名为5-1554217223.jpeg!default

假设填写 flash–好吧,截图截早了,把图中的flash改为文章底部的代码

此图像的alt属性为空;文件名为0-1554217227.jpeg!default

点击箭头–返回

此图像的alt属性为空;文件名为1-1554217228.jpeg!default

点击对号–保存

此图像的alt属性为空;文件名为3-1554217229.jpeg!default

这个是完成后看起来的样子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
//下面的三个变量值需要修改
var ID = "ww3c067de248ce7eb1ad";
var SECRET = "KNgBbhHiTo55VSVzqLv0vYCadXE0ndrn5o41cmuB2o4";
var AGENTID = 1000002;
//获取消息
var smsrf = global('SMSRF');
var smsrb = global('SMSRB');
var mmsrs = global('MMSRS');
var smsrt = global('SMSRT').replace(/\./, ":");
//flash(smsrf)
var pnum = global('PNUM').substring(3);
var smsrd = global('SMSRD');
//定义post方法
function postHttp(url, data)
{
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function ()
{
if (this.readyState === 4) {
flash(this.responseText);
//显示返回消息,可删除本行
}
});
xhr.open("POST", url, false);
xhr.send(data);
return xhr.responseText;
}
//定义get方法
function getHttp(url)
{
var xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function ()
{
if (this.readyState === 4) {
flash(this.responseText);
//显示返回消息,可删除本行
}
});
xhr.open("GET", url, false);
xhr.send();
return xhr.responseText;
}
//判断是短信,彩信还是无法获取短信内容
smsrb = (smsrb == "%SMSRB") ? (mmsrs == "%MMSRS") ? "无法获取短信内容" : mmsrs : smsrb;
//
if (smsrb == "无法获取内容") {
flashLong(smsrb)
}
else
{
//获取token
var tokenUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + ID + "&corpsecret=" + SECRET;
var access_tokenJson = JSON.parse(getHttp(tokenUrl));
if (access_tokenJson.errcode == 0)
{
var access_token = access_tokenJson.access_token;
//发送消息(文本)
var content = "发件人: " + smsrf + "\n收件人: " + pnum + "\n时间: " + smsrt + ", 日期: " + smsrd + "\n短信内容: " + smsrb;
var message = JSON.stringify(
{
"touser" : "@all", //@all代表发送给全体成员,也可指定某几个人,比如"abc"
//"toparty" : "12",//部门id
//"totag" : "12",//标签id,文档说明:https://work.weixin.qq.com/api/doc#90000/90135/90236
"msgtype" : "text", "agentid" : AGENTID, "text" : {
"content" : content
},
"safe" : 0
});
var msgUrl = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + access_token;
postHttp(msgUrl, message)
}
else if (access_tokenJson.errcode == 40013) {
flashLong("ID 错误,请检查是否修改正确(请注意不要有空格)");
}
else if (access_tokenJson.errcode == 40001) {
flashLong("SECRET 错误,请检查是否修改正确(请注意不要有空格)");
}
};

此图像的alt属性为空;文件名为3-1554217230.jpeg!default

在微信中收到的短信内容图示

配置链接

附上配置导入链接:

注意事项

  1. 华为手机需要关闭短信验证码保护功能和开启相关权限,否则含有验证码的短信无法读取。
  2. 小米手机可能需要打开短信通知和其他相关权限。
  3. 已知华为、小米、一加、三星、OPPO、vivo等机型可用; 360、坚果、魅族部分机型无法使用。
  4. 如果不打开企业微信信息同步到微信的开关的话,微信是收不到信息的。

更新于 20211118