Twilio 可以实现这种情况吗?

Is this scenario possible with Twilio?

系统中的用户为他们拥有的其中一种产品录制音频,该音频保存在我们的服务器中,稍后在平台中用于某些功能。

目前录音是这样录制的:

用户拨打phone号码*1234*1#为产品1录音。 用户拨打phone号码*1234*2#为产品2录音。 我的客户要求我这样做:

仪表板中的用户,有一个名为 "Record Audio" 的按钮。 系统会弹出一个询问用户 phone 号码的提示,以便平台可以呼叫他。 用户接听电话并听到类似 "Hello blah blah blah... Please click [in the web page dashboard] the product you want to record audio for" 的声音 用户点击他想录制音频的产品,所以在通话中,机器说 "Record the audio for product [product clicked] after the beep"... 我想我已经描述了这个想法的关键。这可能吗?

我正在使用 PHP。

这可以用 Twilio 来完成。

当用户点击录制音频并提交his/her phone号码时,您可以使用twilio rest api向用户号码拨出电话。

一旦来电者接听电话,就会播放一条循环消息,要求 him/her 单击仪表板进行录音。在仪表板上单击再次调用 twilio 以更新之前的调用以路由到您的录音流。

这里是 Twilio 开发人员布道者。

您绝对可以使用 Twilio 做到这一点。我也会给你几个选项,因为你描述的不是那么简单。所以我们会努力做到这一点。

您要执行的操作的最简单版本是稍微反转您描述的流程。您可以让用户单击他们希望为其录制音频的产品按钮,然后询问他们的 phone 号码。完成后,您可以使用在此 click to call PHP tutorial 中构建的类似系统回叫用户以接收他们的录音。

关键是您可以在创建记录产品 ID 的调用时使用的 URL 中包含一个参数。

$call = $client->account->calls->create(
        $_ENV['TWILIO_NUMBER'], // A Twilio number in your account
        $number, // The user's phone number
        "http://example.com/calls?productId=" . $productId // the product the user selected
    );

然后,当呼叫连接时,Twilio 将向 URL 发出 HTTP 请求,并传递产品 ID,您可以像以前一样处理录音。

但是,完全可以做您想做的事。不过需要多做一些工作。

收到用户的 phone 号码后,您可以按照上面的点击呼叫示例中的说明向他们拨打电话。您需要保存 API return 的 CallSid,因为您稍后需要使用它。

$call = $client->account->calls->create(
        $_ENV['TWILIO_NUMBER'], // A Twilio number in your account
        $number, // The visitor's phone number
        $url
    );
$callSid = $call->sid;

您在此调用中提供的 URL 应该 return TwiML 与用户对话以告诉他们 select 页面上的项目。类似于:

<Response>
  <Say loop="0">Please select the product on the page you wish to record audio for.</Say>
</Response>

然后,当您的用户按下按钮时,您将需要触发对 REST 的另一个调用 API 以将调用从重复消息重定向到处理记录的 TwiML。这是您需要从您创建的呼叫中获取呼叫 Sid 的地方。您的请求看起来像这样:

$call = $client->account->calls->get($callSid);
$call->update(array(
         "Url" => "http://example.com/calls?productId=" . $productId
       ));

查看 documentation on modifying live calls 了解更多详情。

如果这有帮助,请告诉我。