Twilio 通过 Google Apps 脚本发送和接收短信

num*_*key 3 sms twilio google-apps-script

我正在尝试通过 Google Apps Script (GAS) 发送和接收短信。GAS 不提供对发送文本消息或检查 Google 语音的本机支持,因此我一直在考虑与第三方 API 集成 - 在本例中为 Twilio。

我已经联系了 Twilio 的技术支持,但他们还没有回答这个问题。我也四处张望,并没有找到一个可以成功与 Twilio 一起使用的正常运行的 GAS 示例。

我遵循了https://developers.google.com/live/shows/11404657/ 上的教程。然后从 Google Apps Script 团队复制了一个与教程中的代码并行的无功能代码示例:https : //github.com/entaq/GoogleAppsScript/blob/master/Twilio/RecieveSMS/RecieveSMS.gs -

我的代码复制如下:

倒数第二个命令 appendrow() 工作正常,这意味着 GAS 正确地从 Twilio API 获取。但是,最后一个命令 createTextOutput() 不起作用,这表明 GAS 无法以正确的格式 POST 到 Twilio……对吗?

function doGet(args) {
var spreadsheetID = "<< your spreadsheet ID >>";

var vote = args.parameter.Body;
var from = args.parameter.From;

var actualVote;
switch (vote.toLowerCase()) {
 case "a":
    actualVote = 'Giants';
    break;
 case "b":
    actualVote = 'Jets';
    break;
 default:
    actualVote = 'Dont care';
}

SpreadsheetApp.openById(spreadsheetID).appendRow([from,actualVote,vote]);

return ContentService.createTextOutput(LanguageApp.translate(args.parameter.Body, "en", "es")).setMimeType(ContentService.MimeType.TEXT);
};
Run Code Online (Sandbox Code Playgroud)

我很乐意使用一种解决方法(例如电子邮件到 SMS),但我必须同时发送和接收 SMS,而且我不想转移到另一个编程平台,因为我们已经花了 4 个月的时间来开发我们的内部操作软件通过 Google Apps Script 因此转移将是非常繁重的。

请注意,这不是“分块”XML 响应的问题 - 正如在此线程中发现的那样:连接 Twilio 与 Google Apps 脚本- Twilio 技术团队昨天告诉我,他们最近升级了他们的服务器以接受分块响应。

谢谢!

num*_*key 6

好的,Twilio 技术人员 Alex Chan 给出了答案!

事实证明,正如 Arun 所说,这是一种不同的获取和发布 SMS 的方法。用 Alex Chan 的话说:

“使用 Twilio 发送 SMS 消息是不同的。您必须调用 Twilio 的 REST API,而不是实现“doGet”方法。此处记录了用于发送 SMS 消息的 REST API 操作:

http://www.twilio.com/docs/api/rest/sending-sms "

我现在正在使用下面的一个变体,它运行良好:

function sendSms() {
  // Get account SID and auth token here:
  //   https://www.twilio.com/user/account
  var accountSid = "AC...";
  var authToken = "...";
  var url = "https://api.twilio.com/2010-04-01/Accounts/" + accountSid + "/SMS/Messages.json";
  var options = {
    method: "post",
    headers: {
      Authorization: "Basic " + Utilities.base64Encode(accountSid + ":" + authToken)
    },
    payload: {
      // From is one of your Twilio phone numbers
      From: "+12025551212",
      To: "+14155551212",
      Body: "Test from Google Apps Script"
    }
  };
  var response = UrlFetchApp.fetch(url, options);
  Logger.log(response);
}
Run Code Online (Sandbox Code Playgroud)

Arun,感谢您的帮助并在 gitHub 上发布原始代码!