0

我的目标是能够筛选来电,并将它们发送到语音信箱。下面的代码正确地进行了筛选,但是如果我接听电话然后挂断电话,则电话被挂断,而不是将其定向到语音信箱。我怎样才能做到这一点?

<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>

屏幕调用者.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>

处理屏幕输入.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>';

语音邮件.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>
4

1 回答 1

0

[[ 编辑 ]]

啊!我知道它是什么!下面的答案(我为后代保留)是完全错误的。

当被拨号的人挂断耳语时,就会调用动词actionon 。<Dial>从文档中,这些DialCallStatus值可以是:完成、忙碌、无应答、失败或取消。当该人拿起电话时,状态不能是忙碌、无人接听、失败或取消。所以当他们在窃窃私语结束之前挂断,通话状态就完成了。

因此,当您的操作被调用时,DialCallStatus将完成并且您的 voicemail.php 将挂断。

您还会收到一个DialCallDuration,因此您可以检查通话持续了多长时间,并确定通话是否已接通或对方刚刚挂断。

希望这对现在有帮助!

[[原答案]]

Twilio 开发人员布道者在这里。

如果您在通话的耳语部分挂断,那么原始呼叫者将继续通过他们获得的 TwiML。在这种情况下,您只需给他们一个<Dial>动词,因此一旦您挂断电话,呼叫者就会完成<Dial>操作,到达他们的 TwiML 末尾并挂断。

尝试在第一个 TwiML 中添加<Redirect>/voicemail.php?email=aaron</Redirect>一个<Dial>

让我知道这是否有帮助。

于 2015-04-23T08:11:18.443 回答