Aseity Life

人这一生,抛去自己的喜乐悲愁,最终还是要归于尘土,所留下的,无非就是一个或长或短的故事而已。

利用 Tasker 转发短信到微信

2022-08-25


一、需求

对于多部手机多个号码的用户,解决其接收另一部手机(需为 Android 手机,Tasker 暂时只支持 Android 平台)上号码的短信的需求。

bookmark

国内下载链接

二、原理

利用 Tasker 的 Javascript 脚本读取收到的短信内容并发送到企业微信机器人应用,从而达到从一台手机转发短信到另一台手机上的微信的目的。

三、步骤

1️⃣ 注册企业微信并创建机器人应用

  1. 注册企业微信

    企业注册

  2. 创建机器人:应用管理-应用-自建-创建应用

    创建机器人应用

  3. 获取企业 ID、机器人应用的 AgentId 和 Secret

    企业 ID

    机器人应用的 AgentId 和 Secret

2️⃣ Tasker 配置

  1. 创建任务

    创建任务并命名

  2. 编辑任务

    进入刚才创建的任务,点击右下角+号编辑,选择操作类别为「代码」

  3. 编辑代码操作

    选择代码为「JavaScriptlet」,在代码处粘贴下面的脚本代码,注意修改代码中的前三个变量

    💡 JavaScriptlet 脚本代码

     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
    79
    80
    81
    
    //下面的三个变量值需要修改为自己的
    var ID = "ww517c86ddceaf535a"; //企业微信 ID
    var SECRET = "XxBcnzIayt1ewuUs_yMxb2W4m53IgD7CVmA4W2IG2l8"; //机器人应用SECRET
    var AGENTID = 1000002; //机器人应用AGENTID
    
    //获取消息
    var smsrf = global('SMSRF');
    var smsrb = global('SMSRB');
    var mmsrs = global('MMSRS');
    var smsrt = global('SMSRT').replace(/\./, ":");
    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发件时间:" + smsrd + "  " + smsrt + "\n短信内容:" + smsrb;
            var message = JSON.stringify(
            {
                "touser" : "@all", //@all代表发送给全体成员,也可指定某几个人,比如"a|b|c"
                //"toparty" : "1|2",//部门id
                //"totag" : "1|2",//标签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 错误,请检查是否修改正确(请注意不要有空格)");
        }
    };
    
  4. 创建配置文件

    配置文件页面右下角+号创建新配置文件,选择类型为「事件」

  5. 编辑事件

    选择事件类别为「电话」,选择电话事件为「收到短信」

  6. 修改事件并选择任务

    修改事件类型为「短信」并选择刚才创建好的任务

  7. 长按修改配置文件名称,保存并打开配置文件

  8. 设置 Tasker 系统权限

    允许自启动和后台始终运行

    打开相关系统权限,关闭手机信息验证码保护

四、效果