【问题标题】:Twilio: How to play prerecorded voice to recevier's answering machine?Twilio:如何将预先录制的语音播放到接收者的答录机?
【发布时间】:2018-02-02 09:51:37
【问题描述】:

使用 twilio Api 我正在尝试实现以下功能:

  1. 代理单击列表中的号码以通过 twilio javaacript Web 客户端拨号
  2. 如果接收器不可用并且他的应答机响应 那时代理可以选择单击我网站上的按钮来播放将留在他的机器上的预先录制的音频

但我无法将呼叫转接到预先录制的音频。 到目前为止,我尝试的是更新正在进行的对页面的调用,该页面输出 twiml 播放动词,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Play>https://mywebsite.com/audio.mp3</Play>
</Response>

但是,一旦呼叫被重定向到上述 twiml,接收方电话似乎已断开连接,并且没有预先录制的音频留在他的语音信箱中,而是将音频回放给代理(呼叫者)。

我尝试更新父调用和子调用(从parentsid和child sid获得),但它似乎不起作用。

我用于更新调用的 php 代码:

$client->calls($callSid)->update([
      'url' => route('twilio.play-vm'),
      'StatusCallback' => route('twillo.call-complete')
 ]);

//Trying with child call
$childCall = $client->calls->read(['parentCallSid' => $callSid])[0];
$childCall->update([
          'record' => true,
          'url' => route('twilio.play-vm'),
          'StatusCallback' => route('twillo.call-complete')
]);  

【问题讨论】:

  • 从你描述的方式来看,听起来你实际上并没有更新子 sid 或者你用错误的值更新它
  • 你是如何得到孩子 callid 的? Twiml 看起来是正确的,用于修改调用的 PHP 看起来是正确的,所以我同意 @A-Developer-Has-No-Name 似乎错误的 callid 正在更新。您应该能够从 &lt;Number&gt; 名词的 statusCallback webhook 中获取子 callid。

标签: laravel twilio twilio-api twilio-php twilio-click-to-call


【解决方案1】:

这里是 Twilio 开发者宣传员。

您是否考虑过使用Answering Machine Detection (AMD)?

在你的场景中,我可以看到几种不同的方式。

  1. 让代理按钮单击告诉您的应用程序使用 REST API 在启用 AMD 的情况下向您的客户发起出站呼叫。如果 AMD 网络钩子告诉您有人回答了,则将 &lt;Dial&gt; 返回给 Twilio,告诉用户呼叫代理并将其连接到客户。否则,将 &lt;Play&gt; 返回给 Twilio。

  2. 让代理按钮单击告诉您的应用程序从他们的应用程序开始呼叫,但是当 Twilio 回答 &lt;Dial&gt; 时,代理进入电话会议。同时,您的应用程序使用 REST API 向使用 AMD 的客户发起出站呼叫。在 AMD webhook 中,如果检测到有人&lt;Dial&gt;,则呼叫与代理的现有会议。否则&lt;Play&gt;你的音频文件。

希望对您有所帮助。

【讨论】:

  • 不,我不想要 amd 检测,如果他们发现应答机回复然后他们只想播放预先录制的音频,代理将在整个呼叫过程中在那里,
猜你喜欢
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
  • 2017-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
相关资源
最近更新 更多