带语音信箱的 Twilio 屏幕呼叫器
Twilio Screen Caller with Voicemail
我的目标是能够筛选来电,并将其发送到语音信箱。下面的代码正确地进行了筛选,但是如果我接听电话然后挂断电话而不是将其定向到语音信箱,则会挂断电话。我怎样才能做到这一点?
<Say>Please wait while we connect you to Aaron. Calls may be recorded for quality assurance purposes.</Say>
<Dial action="voicemail.php?email=aaron" timeout="15">
<Number url="screen-caller.xml">+11231231234</Number>
</Dial>
屏幕-caller.xml:
<Response>
<Gather action="handle-screen-input.php" numDigits="1">
<Say>To accept, press 1.</Say>
</Gather>
<!-- If customer doesn't input anything, prompt and try again. -->
<Say>Sorry, I didn't get your response.</Say>
<Redirect>screen-caller.xml</Redirect>
</Response>
手柄屏幕-input.php:
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<Response>';
$user_pushed = (int) $_REQUEST['Digits'];
if ($user_pushed == 1)
{
echo '<Say>Connecting. Calls are recorded.</Say>';
}
else {
echo '<Hangup />';
}
echo '</Response>';
voicemail.php:
header("content-type: text/xml");
echo '<?xml version="1.0" encoding="UTF-8"?>';
$email = $_REQUEST['email'];
?>
<Response>
<?php if ($_REQUEST['DialCallStatus'] == 'completed') { ?>
<Hangup/>
<?php } else { ?>
<Say>Please leave a message at the beep. Press the star key when finished.</Say>
<Record transcribe="true" action="goodbye.php" transcribeCallback="voicemail-send.php?email=<?php echo $email; ?>" maxLength="120" finishOnKey="*" />
<Say>I did not receive a recording.</Say>
<Redirect>voicemail.php</Redirect>
<?php } ?>
</Response>
[[编辑]]
啊啊啊!我知道它是什么!以下答案(我为后代保留)是完全错误的。
当被拨叫的人挂断电话时,会调用 <Dial>
动词上的 action
。根据文档,the DialCallStatus
values can be:已完成、忙碌、无人接听、失败或取消。当此人拿起 phone 时,状态不能是忙碌、无人接听、失败或取消。所以当他们在耳语结束之前挂断电话时,通话状态将完成。
因此,当您的操作被调用时,DialCallStatus
将完成并且您的 voicemail.php 将挂断。
您还会收到一条 DialCallDuration
,这样您就可以查看通话持续了多长时间,并确定电话是已接通还是对方刚刚挂断。
希望这对您有所帮助!
[[原答案]]
这里是 Twilio 开发人员布道者。
如果您在通话的耳语部分挂断电话,那么原始呼叫者将继续通过他们获得的 TwiML 进行操作。在这种情况下,您只给他们一个 <Dial>
动词,所以一旦您挂断电话,呼叫者就会完成 <Dial>
操作,到达他们的 TwiML 的结尾并挂断。
尝试在第一个 TwiML 中的 <Dial>
之后添加一个 <Redirect>/voicemail.php?email=aaron</Redirect>
。
如果有帮助请告诉我。
我的目标是能够筛选来电,并将其发送到语音信箱。下面的代码正确地进行了筛选,但是如果我接听电话然后挂断电话而不是将其定向到语音信箱,则会挂断电话。我怎样才能做到这一点?
<Say>Please wait while we connect you to Aaron. Calls may be recorded for quality assurance purposes.</Say>
<Dial action="voicemail.php?email=aaron" timeout="15">
<Number url="screen-caller.xml">+11231231234</Number>
</Dial>
屏幕-caller.xml:
<Response>
<Gather action="handle-screen-input.php" numDigits="1">
<Say>To accept, press 1.</Say>
</Gather>
<!-- If customer doesn't input anything, prompt and try again. -->
<Say>Sorry, I didn't get your response.</Say>
<Redirect>screen-caller.xml</Redirect>
</Response>
手柄屏幕-input.php:
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<Response>';
$user_pushed = (int) $_REQUEST['Digits'];
if ($user_pushed == 1)
{
echo '<Say>Connecting. Calls are recorded.</Say>';
}
else {
echo '<Hangup />';
}
echo '</Response>';
voicemail.php:
header("content-type: text/xml");
echo '<?xml version="1.0" encoding="UTF-8"?>';
$email = $_REQUEST['email'];
?>
<Response>
<?php if ($_REQUEST['DialCallStatus'] == 'completed') { ?>
<Hangup/>
<?php } else { ?>
<Say>Please leave a message at the beep. Press the star key when finished.</Say>
<Record transcribe="true" action="goodbye.php" transcribeCallback="voicemail-send.php?email=<?php echo $email; ?>" maxLength="120" finishOnKey="*" />
<Say>I did not receive a recording.</Say>
<Redirect>voicemail.php</Redirect>
<?php } ?>
</Response>
[[编辑]]
啊啊啊!我知道它是什么!以下答案(我为后代保留)是完全错误的。
当被拨叫的人挂断电话时,会调用 <Dial>
动词上的 action
。根据文档,the DialCallStatus
values can be:已完成、忙碌、无人接听、失败或取消。当此人拿起 phone 时,状态不能是忙碌、无人接听、失败或取消。所以当他们在耳语结束之前挂断电话时,通话状态将完成。
因此,当您的操作被调用时,DialCallStatus
将完成并且您的 voicemail.php 将挂断。
您还会收到一条 DialCallDuration
,这样您就可以查看通话持续了多长时间,并确定电话是已接通还是对方刚刚挂断。
希望这对您有所帮助!
[[原答案]]
这里是 Twilio 开发人员布道者。
如果您在通话的耳语部分挂断电话,那么原始呼叫者将继续通过他们获得的 TwiML 进行操作。在这种情况下,您只给他们一个 <Dial>
动词,所以一旦您挂断电话,呼叫者就会完成 <Dial>
操作,到达他们的 TwiML 的结尾并挂断。
尝试在第一个 TwiML 中的 <Dial>
之后添加一个 <Redirect>/voicemail.php?email=aaron</Redirect>
。
如果有帮助请告诉我。