问题描述
我正在尝试获取传出 twilio 呼叫的状态并将其更新到电子表格中。 “已完成、忙碌、无应答、取消、失败”。
但是,我不知道在哪里包含 StatusCallBackEvent 以及如何从 Google Apps 脚本访问检索到的状态。
这是我必须发起出站呼叫的代码。
function makeCall(to) {
var call_url = "https://api.twilio.com/2010-04-01/Accounts/" + TWILIO_ACCOUNT_SID + "/Calls.json";
var payload = {
"To": "+" + String(to),"From" : TWILIO_NUMBER,"Url": "http://a1fb888ec032.ngrok.io/" +"voice","Method": "GET"
};
var options = {
"method" : "post","payload" : payload
};
options.headers = {
"Authorization" : "Basic " + Utilities.base64Encode(TWILIO_ACCOUNT_SID + ":" + TWILIO_AUTH_TOKEN)
};
var response = UrlFetchApp.fetch(call_url,options);
UrlFetchApp.fetch(call_url,options);
return JSON.parse(response);
}
解决方法
这里是 Twilio 开发者布道者。
要接收呼叫状态,您需要在创建呼叫时设置 StatusCallback
URL。该 URL 应指向您控制的 URL,当它收到来自 Twilio 的 HTTP 请求时,该 URL 可以更新您的电子表格。
var payload = {
"To": "+" + String(to),"From" : TWILIO_NUMBER,"Url": "http://a1fb888ec032.ngrok.io/" +"voice","Method": "GET","StatusCallback": "https://SOME_URL"
};
您可以use Google Sheets and App Script to set up a web application接收这样的网络钩子。简而言之,您需要创建具有 doPost
方法(默认情况下 Twilio webhook 是 POST
请求)并返回成功响应的脚本。 Twilio statusCallback webhooks 不希望响应中包含任何内容,因此您可以使用空文本输出。
这样的事情可能会奏效:
function doPost(event) {
var callSid = event.parameter("CallSid");
var status = event.parameter("CallStatus");
// update spreadsheet with call status
return ContentService.createTextOutput('');
}
查看关于 turning scripts into web apps 和 Twilio call status callbacks 的文档了解更多详情。