我正在尝试通过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技术团队昨天告诉我,他们最近升级了他们的服务器以接受分块响应。
谢谢!
答案 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);
}
答案 1 :(得分:0)
目前尚不清楚问题是什么 - 您是尝试通过Twilio发送消息还是收到消息?它们是两个非常不同的代码路径。发送更容易。在Apps脚本中接收消息需要您将脚本部署为Web应用程序,然后将其作为POST后备URL包含在Twilio控制台中。
同时确保您的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
});