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



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

但是现在客户端希望在呼叫未接听时发送语音消息。

Twilio开发者布道者在这里。

这是它的工作原理。当有人拨打您的 Twilio 号码时,Twilio 会向您在 Twilio 控制台的号码管理员中为您的电话号码设置的 URL 发出 HTTP 请求,即网络钩子。

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

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

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

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

我们使用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>

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

<Response>
<Hangup/>
</Response>

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

有关此内容的更深入阅读,请查看有关在PHP中记录电话的指南。

让我知道这是否有帮助。

1)创建一个mp3作为问候语。将其存储在网络上的某个位置并保存URL。 我在我管理的wordpress网站上将我的媒体文件保存为媒体文件。如果您不创建自己的问候语,它将使用 Twilio 默认问候语。 2)我使用两个twilio工具来路由到语音邮件。特维姆和特维姆莱特。 通过转到主所有者仪表板并选择"运行时",然后选择"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&amp;Message=http://test.com/wp-content/uploads/2019/01/voicemail1.mp3">
<Number>703-555-1212</Number>
<Number>540-555-1212</Number>
</Dial>
</Response>

最新更新