【问题标题】:How to record a voicemail if a number is not picked up in Twilio?如果在 Twilio 中未接听号码,如何录制语音邮件?
【发布时间】:2017-11-15 18:13:26
【问题描述】:

我在一个 PHP 项目中使用 Twilio,目前我可以使用它的 API 拨打电话和发送短信,如下所示:

        $client = new \Services_Twilio($AccountSid, $AuthToken);
        try {
            // Initiate a new outbound call
            $call = $client->account->calls->create(
                "<From Number>",
                $input['phone'],
                array("url" => "http://demo.twilio.com/welcome/voice/")
            );
            //echo "Started call: " . $call->sid;
            \Session::flash("success","Calling to ". $input['phone'] ."");
        }

但是现在客户想要在没有接听电话的情况下发送语音消息。

【问题讨论】:

  • 你的意思是“如果呼叫没有被接听,客户想要发送语音消息”?您的意思是要播放预先录制的消息以防呼叫转到应答机?
  • 不,如果有人没有接他的电话,我想让来电者能够留下他的语音消息。
  • @AlexBaban,好吧,让我解释一下,如果你想打电话给某人,但他没有接你的电话,那么你想给他留言,这是所有移动设备的普遍现象公司提供,我想使用 Twilio 在我的项目中添加相同的东西,这有意义吗?
  • 澄清一下,您希望这样当有人拨打您的 Twilio 号码并且没有人接听 Twilio 号码时,呼叫者应该能够留言?
  • @halfer 我很抱歉。

标签: php twilio twilio-api twilio-php


【解决方案1】:

这里是 Twilio 开发者宣传员。

这就是它的工作原理。当有人拨打您的 Twilio 号码时,Twilio 会向您在 number admin in your Twilio console 中为您的电话号码设置的 URL 发送一个 HTTP request, a webhook

该 URL 需要响应一些 TwiML,这只是一些 XML 标记,用于告诉 Twilio 如何处理该调用。

听起来,在您的情况下,您想拨打自己的号码并在一段时间后接收消息而不是继续响铃。为此,您将需要两个端点。第一个应该进行拨号,第二个是我们将呼叫重定向到语音邮件后重定向的位置。

所以,第一个端点 TwiML 应该看起来有点像这样,使用&lt;Dial&gt; 来转发呼叫:

<Response>
  <Dial timeout="30" action="/voicemail.php">
    <Number>YOUR_PHONE_NUMBER</Number>
  </Dial>
</Response>

我们使用timeout attribute 设置您希望电话响铃的时间。您可以将其设置在 5 到 600 秒之间。 action 属性是我们在超时完成后将调用定向到的端点。然后,该端点将读取呼叫者一条消息,告诉他们使用&lt;Say&gt; 进行文本转语音,然后使用&lt;Record&gt; 留言。

<Response>
  <Say voice="alice">Your call could not be answered at the moment. Please leave a message.</Say>
  <Record action="/hangup.php"/>
</Response>

我在&lt;Record&gt; 标签中添加了一个额外的操作,它只是挂断了电话。看起来像这样:

<Response>
  <Hangup/>
</Response>

还有其他属性可以用于&lt;Record&gt;。最重要的是,recordingStatusCallback attribute 带有一个 URL,当有新录音时,您的应用程序将在该 URL 上收到通知。

如需更深入地了解此内容,请查看guide on recording phone calls in PHP

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

【讨论】:

  • 很抱歉这么晚才回复,我不知道我是怎么错过的,是的,它对我帮助很大,我要感谢你提供这么好的信息。
  • 别担心!我很高兴它有帮助!
  • 我在实现这个时遇到了麻烦......当我结合 &lt;Dial&gt;&lt;Record&gt; 响应的 TwiML 语法时,终于能够让它工作。见this answer
  • 我对@9​​87654344@ 为何再次将呼叫转接到另一个电话号码感到有些困惑。当客户端呼叫 Twilio 号码时,如果我们想从 Twilio 号码应答或接收语音邮件,将如何实现相同的逻辑。 @philnash
  • @NomanJaved 我向 OP 澄清了他们想要什么,如果他们不接电话,那就是一个传入的语音邮件系统。 &lt;Number&gt; 部分将向他们的 Twilio 号码发出的传入语音呼叫转发到他们的个人电话号码上,然后在超时后将呼叫定向到留言。如果您对自己的应用程序有疑问,请提出一个新问题,因为在 cmets 中很难回答新问题。
【解决方案2】:

1) 创建一个 mp3 作为问候语。将其存储在网络上的某个位置并保存 URL。 我将我的作为媒体文件保存在我管理的 wordpress 网站上。如果您不创建自己的问候语,它将使用 Twilio 默认问候语。 2)我使用两个 twilio 工具路由到语音邮件。 Twiml 和 Twimlets。 通过转到主所有者仪表板并选择“运行时”然后选择“Twimls”来创建一个 Twiml bin。下面的代码可以在 Twiml 中使用。更改消息 URL、电子邮件、超时长度和电话号码。 我一次给两个人打电话,如果两个人都没有接,那么它会转到语音信箱。音频文件将发送到您提供的电子邮件。代码中的 twimlet 可以工作 - "http://twimlets.com/voicemail" 具有不同的参数。

TWIML 代码:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Dial timeout="30" action="http://twimlets.com/voicemail?Email=test@test.com&amp;Message=http://test.com/wp-content/uploads/2019/01/voicemail1.mp3">
    <Number>703-555-1212</Number>
    <Number>540-555-1212</Number>
  </Dial>
</Response>

【讨论】:

  • twilio 被叫号码将如何接收和收听消息。电子邮件中的音频文件 URL。我有点困惑。请您详细说明这一点吗?
  • 这将在30秒后记录甚至回答。所以,不是正确的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-19
相关资源
最近更新 更多