2013-04-03 182 views
2

我試圖通過Google Apps腳本(GAS)發送和接收短信。 GAS不提供發送短信或檢查Google語音的原生支持,因此我一直在尋找與第三方API(在本例中爲Twilio)的集成。Twilio通過Google Apps腳本發送和接收短信

我一直在Twilio的技術支持聯繫,他們還沒有能夠回答這個問題。我也看得很遠,還沒有找到一個能夠成功與Twilio合作的GAS示例。

我按照教程https://developers.google.com/live/shows/11404657/https://github.com/entaq/GoogleAppsScript/blob/master/Twilio/RecieveSMS/RecieveSMS.gs -

我的代碼如下複製:然後從谷歌Apps腳本隊平行的教程中的代碼複製無功能的代碼示例

的倒數第二個命令,appendrow()工作正常,這意味着GAS從Twilio API正確獲取。然而,最後一條命令createTextOutput()不起作用,這表明GAS無法以正確的格式向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); 
}; 

我會很樂意用一種變通方法(電子郵件,手機短信爲例),但我必須同時發送和接收短信,我不希望有,因爲我們已經轉移到另一種編程平臺花了4個月的時間通過Google Apps腳本開發我們的內部操作軟件,因此轉換將非常繁瑣。

請注意,這不是「分塊」XML響應的問題 - 正如在此主題中發現的:Connect Twilio wtih Google Apps Script - Twilio高科技團隊昨天告訴我他們最近升級了服務器以接受分塊響應。

謝謝!

回答

0

它不清楚問題是什麼 - 你想通過Twilio發送消息還是接收消息?它們是兩種非常不同的代碼路徑。發送更容易。將消息接收到Apps Script需要您將腳本部署爲Web應用程序,然後將其作爲POST後URL包含在Twilio控制檯中。

enter image description here

此外,還要確保您的web app is deployed爲匿名運行,你和入店。

+0

阿倫您好,感謝爲迴應。正如您所描述的,我上面粘貼的代碼在發佈爲Web應用程序時確實可以成功接收SMS。但是我無法發送短信。如果你有一個可以通過Twilio發送SMS的示例腳本,你會讓我成爲一隻快樂的猴子。 – numbermonkey

+0

明白了。我會挖掘我的樣本。您是否嘗試回覆收到的短信或發送短信給某人開始? –

+0

嗨@ArunNagarajan我想在谷歌表中收到短信。如前所述,我有一個doGet(e)方法的腳本,並部署爲Web App。我已經在Twilio控制檯中將該腳本URL映射到消息webhook和「GET」方法。但是我的doGet方法沒有被觸發。有什麼建議麼? –

4

OK Twilio tech Alex Chan來了答案!

原來,正如阿倫所說,這是一種獲取和發佈短信的不同方法。在亞歷克斯·陳的話說:

「發送短信與Twilio是不同的替代實現的。‘的doGet’的方法,你必須調用Twilio的REST API用於發送短信的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); 
} 

阿倫,感謝您的幫助,並張貼在GitHub上的原代碼!

0

於2013年3月1日至所有SMS api封鎖其服務。 出現以下錯誤 System.Net.WebException:遠程服務器返回錯誤:(404)Not Found。 在SMS_Client的System.Net.HttpWebRequest.GetResponse() 。

-1

我寫周圍的twilio的NodeJS lib中谷歌Apps腳本在包裝,你可以檢查出來在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 
});