51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

利用Google App script实现Google Voice自动回复短信保号

因为Google voice的政策需要大约3个月内拨打电话或发送短信,否则会回收号码。

We noticed that you haven't used your Google Voice number in a while. Because phone numbers are a limited resource, it is our policy to reclaim unused numbers so they can be made available to new users.

If you'd like to keep your Google Voice number (xxx) xxx-xxxx, you will need to make calls or send text messages by 2023年2月25日 by logging in to your account or using the Google Voice app on Android or iOS.


Please remember that your current number will be reclaimed in 7 days unless you start using it. If the number is reclaimed, your existing messages will remain available in your account, but you will no longer be able to receive calls or text messages.

`The Google Voice Team`

必要准备

  • 一个可用的Google voice号码[超级重要]
  • 邮箱中存在@txt.voice.google.com邮箱的短信邮件[超级重要]
  • 可以定时发送邮件命中下方邮箱过滤规则

可以使用https://lolicp.com/shell/202228442.html中的脚本定时拨打电话实现过滤规则命中。

操作步骤

设置短信转发

访问并登录https://voice.google.com/u/0/settings网站,开启将短信转发到电子邮件地址功能及语音信箱。
设置短信转发

设置gmail邮箱过滤规则

这个规则只是用来触发脚本,并不是一定要某个邮箱地址。
只需要定期能够触发即可。

访问并登录https://mail.google.com/mail/u/0/#settings/filters网站,新建过滤器规则。
新建过滤器
本文章由于使用的是ifttt拨打电话,故发件人填写为voice-noreply@google.com,如是收短信触发,则修改为voice-noreply@google.com
创建过滤器_1
新建或者选择已有标签,本文章标签为Autoreply

创建过滤器_2

获取发件人地址

访问收件人名称非Google Voice的邮件,获取@txt.voice.google.com邮箱地址
也可以使用其他美国手机号发送短信获取@txt.voice.google.com邮箱地址
这个是必须获取的,否则无法使用。

访问gmail邮箱搜索曾经收到过的短信。

搜索短信
示范获取到的短信发件人(993) 999-9994 <19933999999.19933999994.z-MxfmSSG7@txt.voice.google.com>
获取发件人信息

配置谷歌应用脚本

访问并登录https://script.google.com/home,新建或选择已有项目并访问,添加脚本。

编辑脚本

sender为发件人邮箱,即脚本执行后给谁发短信。
脚本触发关键字为:闲云博客connect the phone

编辑脚本内容,修改sender参数,脚本触发时会向该邮件发送消息,从而实现短信发送功能。

function autoReplier() {
  console.log("开始执行")
  var labelObj = GmailApp.getUserLabelByName('Autoreply');
  var gmailThreads;
  var messages;
  var messagecount;
  var sender;
  var num = 6;  //设置连续自动回复邮件的次数(为防止两人都是自动回复,当发送次数达到 6 时将不自动回复)。
  var hours = 12;  //过了多少小时后又可以自动回复。
  var week = new Date().getDay();  
  console.log(MailApp.getRemainingDailyQuota())
  if (labelObj.getUnreadCount() === 0 ) {
    console.log("未发现新邮件")
    return
  } else {
    console.log("嘿嘿嘿,发现一封未读的小可爱!")
  }
  try {
    for (var gg = 0; gg < labelObj.getUnreadCount(); gg++) {
      gmailThreads = labelObj.getThreads()[gg];
      messages = gmailThreads.getMessages();
      messagecount = gmailThreads.getMessageCount();
      //console.log(messages[messagecount - 9].getDate() + "  time");
      for (var ii = 0; ii < messages.length; ii++) {
        if (messages[ii].isUnread()) {
          msg = messages[ii].getPlainBody();
          // 回复短信发送人
          //sender = messages[ii].getFrom();
          // 指定收件人
          sender = '(993) 999-9994 <19933999999.19933999994.z-MxfmSSG7@txt.voice.google.com>';
          var is_send = false
          if (msg.indexOf("闲云博客") !== -1) {
            try {
              var response = UrlFetchApp.fetch("https://cloud.qqshabi.cn/api/comments/api.php?format=text");
              if(response.getResponseCode() === 200) {
                var content = response.getContentText();
                content = "网易云热评: 【" + content + "】"
                console.log("网易云OK了")
              } else{
                console.log("网易云GG了1", response.getContentText())
                var content = '快快乐乐每一天哟~'
              }
            } catch (err) {
                console.log("网易云GG了2", err)
                var content = '快快乐乐每一天哟~'
            }
            if (week === 4) {
              var temp = "自动回复!星期四V50哟~ " + content
            } else {
              var temp = "自动回复!" + content 
            }
            is_send = true
          // 设置关键字"connect the phone"
          } else if (msg.indexOf("connect the phone") !== -1)  {
            is_send = true
            try {
              var response = UrlFetchApp.fetch("https://cloud.qqshabi.cn/api/tiangou/api.php");
              if(response.getResponseCode() === 200) {
                var content = response.getContentText();
                console.log("舔狗OK了")
                content = "自动回复: 【" + content + "】"
              } else{
                console.log("舔狗GG了1")
                var content = '自动回复: 不要做舔狗啊!!!'
              }
            } catch (err) {
                console.log("舔狗GG了2")
                var content = '自动回复: 不要做舔狗啊!!!'
            }
            var temp = content
          } 
          if (is_send) {
            console.log("发邮件啦!")
            if (messagecount < num){
              console.log(temp)
              MailApp.sendEmail(sender, "自动回信", temp);
            }else if( (messages[messagecount - 1].getDate().getTime() - messages[messagecount - num].getDate().getTime()) > hours * 60 * 60 * 1000 ){
              MailApp.sendEmail(sender, "Auto Reply", "您好!已经发了好几条信息了,可以停下来休息休息一下了!本短信自动发出。");
            }
            console.log("发完啦!")
            console.log("标记为已读")
            messages[ii].markRead();
            messages[ii].moveToTrash();
          } else {
            console.log("这个吊人:",sender,', 不认识,内容也不是关键词! So:不回复。')
            messages[ii].markRead();
            messages[ii].moveToTrash();
            console.log("标记为已读")
          }
        }
      }
    }
  } catch (err) {
      console.error('for loop error: ' + err);
  }
}
运行脚本

执行shell脚本拨打电话至gv号码。

执行shell脚本
脚本执行后约2分钟左右,邮箱会收到邮件。
确认邮箱收到邮件
运行脚本并查看输出
运行脚本

检查结果

访问google voice短信应用,查看对应号码的聊天记录。

查看短信发送记录

创建触发器

点击左侧触发器图标,创建触发器

创建触发器
配置触发器相关功能,建议间隔分数5分钟
配置触发器

借鉴文章:https://www.aprilming.top/archives/googlevoice

赞(3)
未经允许不得转载:工具盒子 » 利用Google App script实现Google Voice自动回复短信保号