【问题标题】:Capturing Twilio's outgoing call status on google appscript在谷歌应用脚​​本上捕获 Twilio 拨出呼叫状态
【发布时间】:2021-04-26 07:50:15
【问题描述】:

我正在尝试获取我拨出的 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);
}

【问题讨论】:

  • 能否提供您要使用的API官方文档?
  • @Tanaike 感谢您的评论!我正在使用 twilio,所以我在网上看到了一些参考资料,但它们是针对其他编程语言的,我不确定如何将它合并到谷歌应用程序脚本中。 [链接] (twilio.com/docs/voice/twiml#callstatus-values) 我只是想在这篇文章中记录一下最终的通话状态。我知道如何使用应用程序脚本更新我的电子表格。它只是与 twilio 连接让我感到困惑。 [链接] (support.twilio.com/hc/en-us/articles/…)
  • 感谢您的回复。当我看到您提供的官方文档时,您的脚本请求是正确的。那么在您的情况下,再次检查您发送的每个值怎么样?顺便问一下,你为什么用var response = UrlFetchApp.fetch(call_url, options);和UrlFetchApp.fetch(call_url, options);请求两次?
  • @Tanaike 是的,我仍在尝试查看如何获取呼叫状态值。啊,我一定是忘了删除第二个UrlFetchApp.fetch(call_url, options);,在我的程序中被注释掉了。但感谢您发现这一点!
  • 感谢您的回复。我认为您脚本的要求是正确的。因此,当再次确认每个值时,脚本可能会起作用。

标签: flask google-apps-script twilio twilio-api


【解决方案1】:

这里是 Twilio 开发者宣传员。

要接收通话状态,您需要在创建通话时设置StatusCallback URL。该 URL 应指向您控制的 URL,当它收到来自 Twilio 的 HTTP 请求时,它可以更新您的电子表格。

  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 接收这样的 webhook。简而言之,您需要创建具有doPost 方法的脚本(Twilio webhook 默认为POST 请求)并返回成功响应。 Twilio statusCallback webhook 不希望响应中有任何内容,因此您可以使用空文本输出。

这样的事情可能会奏效:

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 上的文档了解更多详情。

【讨论】:

    猜你喜欢
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多