3

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

我一直在与 Twilio 的技术支持人员取得联系,但他们还不能回答这个问题。我也进行了广泛的研究,并没有找到与 Twilio 成功合作的有效 GAS 示例。

我按照https://developers.google.com/live/shows/11404657/上的教程进行操作。然后从 Google Apps 脚本团队复制了一个与教程中的代码平行的无效代码示例: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);
};

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

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

谢谢!

4

3 回答 3

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);
}

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

于 2013-04-04T06:52:21.177 回答
0

不清楚问题是什么 - 您是尝试通过 Twilio 发送消息还是接收消息?它们是两个非常不同的代码路径。发送要容易得多。将消息接收到 Apps 脚本需要您将脚本部署为 Web 应用程序,然后将其作为 POST 返回 URL 包含在 Twilio 控制台中。

在此处输入图像描述

还要确保您的Web 应用程序部署为与您一样运行并且可以匿名访问。

于 2013-04-03T16:48:34.613 回答
-1

我已经为 Google Apps 脚本编写了一个围绕 twilio nodejs 库的包装器,您可以在 github 上查看它:https ://github.com/illiatdesdindes/twilio-gas

这是发送短信的示例:

var account_sid = 'ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
var auth_token = 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy';

var client = new twiliogas.RestClient(account_sid, auth_token);

client.sendSms({
    to:'+16515556677',           // Any number Twilio can deliver to
    from: '+14506667788',        // A number you bought from Twilio and can use for outbound communication
    body: 'word to your mother.' // body of the SMS message
});
于 2015-04-01T10:20:33.423 回答