如果在Twilio中没有收到号码,如何录制语音邮件?

问题描述 投票:2回答:2

我在PHP项目中使用Twilio,目前我能够使用其API进行调用和发送SMS,如下所示:

        $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'] ."");
        }

但现在,如果未接听电话,客户端希望发送语音消息。

php twilio twilio-api twilio-php
2个回答
10
投票

Twilio开发者传道者在这里。

这是一切如何运作。当有人拨打您的Twilio号码时,Twilio会将HTTP request, a webhook制作成您在number admin in your Twilio console中为您的电话号码设置的网址。

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

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

所以,第一个端点TwiML应该看起来有点像这样,使用<Dial>转发调用:

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

我们使用timeout attribute来设置您希望手机响铃的时间。您可以将其设置为5到600秒。 action属性是我们在超时完成后指示调用的端点。然后,该端点将向调用者读取一条消息,告诉他们使用<Say>发送消息进行文本到语音,然后<Record>消息。

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

我在<Record>标签上添加了一个额外的动作,它只是挂断电话。这看起来像这样:

<Response>
  <Hangup/>
</Response>

您可以使用<Record>的其他属性。最重要的是,recordingStatusCallback attribute会获取一个URL,当有新记录时,您的应用程序将通知该URL。

有关这方面的更多深入阅读,请查看guide on recording phone calls in PHP

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


1
投票

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/[email protected]&amp;Message=http://test.com/wp-content/uploads/2019/01/voicemail1.mp3">
    <Number>703-555-1212</Number>
    <Number>540-555-1212</Number>
  </Dial>
</Response>
© www.soinside.com 2019 - 2024. All rights reserved.