我有一个电话树,如果他们不提供分机,就会将呼叫者排入队列,并且在播放音乐时,呼叫者可以随时按键以留言。
如果用户有一个分机,并且代理没有接听,则转到LeaveMessage.php,然后点击记录动词就好了,调用者可以留言,它会添加到我的数据库和电子邮件中出。效果很好。
当我尝试从重定向到队列的调用者中击中同一个LeaveMessage.php脚本时,会发生奇怪的记录动词行为。它只是跳过那个Record动词,即使它从其他任何地方都可以正常工作。
我不能为我的生活弄清楚为什么它会像这样。
的index.php
if( $_REQUEST['Digits'] ) {
echo '<Redirect>./LeaveMessage.php?exten=' . $digits . '</Redirect>';
}
echo '<Say>Thank you for calling.</Say>';
echo '<Gather timeout="4">';
echo '<Say>If you know your parties extension, please enter it now.</Say>';
echo '<Say>If you do not know your parties extension, please hold while we connect you to an operator.</Say>';
echo '</Gather>';
//redirect to enqueue caller, and dialOut and event handlers.
echo '<Redirect>./EnqueueCaller.php</Redirect>';
LeaveMessage.php
echo '<Say>Please leave a message after the tone. </Say>';
echo '<Record action="./handle_message.php?exten=' . $exten . '" maxLength="35" method="POST" timeout="7" playBeep="true" />';
echo '<Gather action="./leave_a_message.php?exten=' . $exten . '" method="GET" >';
echo '<Say>I\'m sorry, the message was not received, press any key to try again.</Say>';
echo '</Gather>';
WaitQueue.php
if( isset( $_REQUEST['Digits'] ) ) {
echo '<Redirect>./leave_a_message.php</Redirect>';
echo '</Response>';
exit();
}
else if( isset( $_REQUEST['hold'] ) ) {
echo '<Gather action="./wait.php?Digits=true" method="POST" numDigits="1" timeout="1">';
echo '<Say>At any time press any number to leave a message, and an agent will call you back shortly.</Say>';
}
else {
echo '<Say> You are now on hold.</Say>';
echo '<Gather action="./wait.php?Digits=true" method="POST" numDigits="1" timeout="1">';
}
echo '<Say>At any time press any number to leave a message, and an agent will call you back shortly.</Say>';
echo '<Play>';
echo 'http://com.twilio.sounds.music.s3.amazonaws.com/ClockworkWaltz.mp3';
echo '</Play>';
echo '</Gather>';
echo '<Redirect>./wait.php?hold=true</Redirect>';
echo '</Response>';
答案 0 :(得分:0)
Twilio开发者传道者在这里。
你的问题是,在调用者跳过<Record>
动词的情况下,你的调用者仍然在队列中。在队列中,用户会听到waitUrl
和you can only the use Play, Say, Pause, Hangup, Gather, Redirect and Leave verbs中发生的事情。
然而,你并没有失去运气。为了记录消息,您需要用户自己离开队列,您可以使用<Leave>
verb这样做。当您<Leave>
队列时,调用会在<Enqueue>
动词后直接返回到TwiML,因此您可以在那里添加<Record>
TwiML。
您没有提供您的EnqueueCaller.php文件,但您的想法是您的Enqueue可能如下所示:
<Response>
<Enqueue>Queue Name</Enqueue>
<Redirect>./leave_a_message.php</Redirect>
</Response>
您的WaitQueue.php将以(请注意<Leave>
而不是<Redirect>
)开头:
if( isset( $_REQUEST['Digits'] ) ) {
echo '<Leave/>';
echo '</Response>';
exit();
}
或者,您可以使用REST API手动将用户出列,并将其作为this question eventually did中的开发人员重定向到<Record>
TwiML。
请告诉我这是否有帮助!