Twilio收集可编程语音 - 如何访问底层电话呼叫事件

时间:2017-08-23 13:25:57

标签: node.js twilio voice

我正在尝试将呼叫流程自动化到回归测试呼叫中心应用程序的IVR系统。

我可以按预期拨打电话并收到回复。但我想了解两行代码之间的时间

<tr ng-repeat="task in retrievedTasks">
  <td>
    <button class="btn btn-danger" ng-click="deleteTask(task)">Delete</button>
    <!--  $index-->
  </td>
  <td>{{task.taskName}}</td>
  <td>
    <input type="checkbox" ng-model="statusCheck"> </td>
  <td style="{{setStyleToTd(statusCheck)}}">{{statusChecker(statusCheck)}}</td>
  <td>
    <button class="btn btn-primary" ng-click="editTask(task)">Edit</button>
  </td>
</tr>

console.log("Waiting for Server to respond");

我的理解是在Twilio从我的Node.js实例收到TwiML响应之后,它处理并发送/接收电话信号。

只有在收到服务器的整个响应后,我才会收到console.log("Received response from Server"); 中的语音回复。当我记录两条线的时间戳并捕获差异时。大概20秒左右。但实际上应用程序会在几秒钟内响应。

我相信Twilio等待整个对话完成,等待3秒钟静音,将音频流转换为文本,然后将其发布到我的功能。这就是我看到20秒的原因。

但我需要了解首次接收电话响应所花费的时间,而不是整个流的超时和语音到文本转换时间。

简而言之,我试图了解联络中心应用程序响应所花费的时间。

请在下面找到我的示例代码

发出电话的功能

/TC4_Step1_Validate

在我拨打电话时从我的联络中心应用程序收集第1步回复的功能

app.get('/TC4', function(req, res) {
  client.calls.create({
    url: 'http://{PUBLIC_URL}/TC4_Step1',
    to: '{TO_NUMBER}',
    from: '{TWILIO_NUMBER}',
    method: 'GET',
    Record: 'false',  
  })
  .then((call) => res.send(call.sid));   
});

验证Step1&amp;的响应的功能收集第2步回复

app.get('/TC4_Step1', function(req, res) {
  res.setHeader('Content-Type', 'application/xml');
  const response = new VoiceResponse();
  const gather = response.gather({
    input: 'speech',
    action: 'http://{PUBLIC_URL}/TC4_Step1_Validate',
    timeout: 3,
  });
  res.send(response.toString());
  console.log("Waiting for Server to respond");
  console.log(response.toString());
});

1 个答案:

答案 0 :(得分:0)

Twilio开发者传道者在这里。

当您设置action属性时,就像您在此处使用路径/TC4_Step1_Validate一样,Twilio只会在当前操作完成后调用它。在这种情况下,它正在等待用户停止讲话3秒钟,然后,正如您所建议的那样,正在使用音频流将其转换为文本并最终调用您的action URL。

在听取语音输入或实际上大多数交互的情况下,Twilio没有提供特别代表Twilio与呼叫交互的开始的其他事件。您可以在使用<Dial>时获取通话事件,但它们是指对第三方的通话。

所以,虽然我不相信Twilio可以做你所要求的,但我想问你想要达到的目标,所以我可以用另一种方式帮助解决问题?