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

时间:2013-04-03 13:24:12

标签: sms google-apps-script twilio

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

我一直在接触Twilio的技术支持,他们还没有回答这个问题。我也看了很多,并没有找到一个功能正常的GAS示例,它可以成功地与Twilio一起使用。

我按照https://developers.google.com/live/shows/11404657/上的教程进行了操作。然后从Google Apps脚本团队中复制了一个与教程中的代码平行的无效代码示例:https://github.com/entaq/GoogleAppsScript/blob/master/Twilio/RecieveSMS/RecieveSMS.gs -

我的代码复制如下:

第二个最后一个命令,appendrow()工作正常,这意味着正确地从Twilio API获取GAS GET。但是,最后一个命令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)但是我必须发送和接收短信我不想转移到另一个编程平台,因为我们已经花了4个月的时间开发我们的内部操作软件通过Google Apps脚本进行转移,这将非常繁重。

请注意,这不是“分块”XML响应的问题 - 正如此线程中所见:Connect Twilio wtih Google Apps Script - Twilio技术团队昨天告诉我,他们最近升级了他们的服务器以接受分块响应。

谢谢!

4 个答案:

答案 0 :(得分:4)

好的,所以Twilio tech Alex Chan得出了答案!

事实证明,正如Arun所说,这是一种不同的方法来获取和发布短信。在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上发布原始代码!

答案 1 :(得分:0)

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

enter image description here

同时确保您的web app is deployed正常运行,并且可以匿名访问。

答案 2 :(得分:0)

2013年3月1日,所有SMS api都阻止了它的服务。 以下错误来了 System.Net.WebException:远程服务器返回错误:(404)Not Found。    在System.Net.HttpWebRequest.GetResponse()    在SMS_Client。

答案 3 :(得分:-1)

我为Google Apps脚本的twilio nodejs lib编写了一个包装器,您可以在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
});