我在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'] ."");
}
但现在客户希望在未接听电话时发送语音留言。
答案 0 :(得分: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会带有一个网址,当有新的记录时,您的应用程序会通知该网址。
有关详细信息,请查看guide on recording phone calls in PHP。
如果有帮助,请告诉我。
答案 1 :(得分:1)
1)创建一个mp3作为问候。将其存储在网络上的某个位置并保存URL。 我将我的媒体文件保存在我管理的wordpress网站上。如果您不创建自己的问候语,它将使用Twilio默认问候语。 2)我使用两个twilio工具路由到语音邮件。 Twiml和Twimlets。 通过转到主所有者仪表板并选择“运行时”,然后选择“ Twimls”,来创建Twiml箱。下面的代码可以在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&Message=http://test.com/wp-content/uploads/2019/01/voicemail1.mp3">
<Number>703-555-1212</Number>
<Number>540-555-1212</Number>
</Dial>
</Response>