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

Amr*_*ngh 2 php twilio twilio-php twilio-api

我在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'] ."");
        }
Run Code Online (Sandbox Code Playgroud)

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

phi*_*ash 10

Twilio开发者传道者在这里.

这是一切如何运作.当有人拨打您的Twilio号码时,Twilio会向您在Twilio控制台号码管理员中为您的电话号码设置一个HTTP请求,即webhook.

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

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

因此,第一个端点TwiML应该看起来像这样,<Dial>用于转发呼叫:

<Response>
  <Dial timeout="30" action="/voicemail.php">
    <Number>YOUR_PHONE_NUMBER</Number>
  </Dial>
</Response>
Run Code Online (Sandbox Code Playgroud)

我们使用该timeout属性来设置您希望手机响铃的时间.您可以将其设置为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>
Run Code Online (Sandbox Code Playgroud)

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

<Response>
  <Hangup/>
</Response>
Run Code Online (Sandbox Code Playgroud)

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

有关详细信息,请查看有关使用PHP录制电话指南.

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

  • 很抱歉这么晚才回复,我不知道我是怎么错过的,是的,它对我帮助很大,我要感谢您提供如此好的信息。 (2认同)