TwiML 脚本跳过记录动词并且不会记录消息
TwiML script skips over Record verb and won't record a message
我一遍又一遍地解决了这个看似简单的 TwiML (Twilio) 问题,但无法弄清楚发生了什么。
我的Objective:将入站呼叫放入队列中,同时向座席发出出站呼叫以查看他们是否可以接听电话。如果座席可以接听电话,则这两个电话被桥接。如果座席无法接听电话,来电者会听到等待音乐大约一分钟,然后是一条消息,要求他们留下语音邮件。来电者留下语音邮件后,应挂断电话。
发生了什么:在接听入站呼叫后,呼叫者会听到一条简短的消息,然后进入队列(这有效)。向座席发出出站呼叫(这有效),如果他们可以接听电话,他们就会接听(这有效)。如果座席无法接听电话,则来电者会听到等待音乐大约一分钟,然后是一条消息,要求他们留下语音邮件(这可行)。然后,电话没有给来电者留下语音邮件的机会,而是突然挂断了。 Record 动词似乎被跳过,就好像它不存在一样,流程直接转到 Hangup。
这是接听来电和入队 waitUrl 的代码:
传入-call.php
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say voice="Polly.Joanna-Neural">Please wait while I find someone to speak with you.</Say>
<Enqueue waitUrl="wait-url.php">support</Enqueue>
</Response>
等等-url.php
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Play loop="1">../../audio-files/hold-music/smile.mp3</Play>
<Say voice="Polly.Joanna-Neural">I'm sorry, but I couldn't reach anyone to take your call. Please leave a message, and someone will return your call as soon as possible. Have a great day!</Say>
<Record timeout="10" />
<Hangup/>
</Response>
我已经尝试重新配置 Record 动词,有和没有 recordingStatusCallback url,有和没有超时,甚至什么都没有。在每种情况下,通话都没有记录消息就结束了。
提前感谢您对如何解决此问题提出任何想法或建议。
尝试修改 Enqueued calls CallSid 以指向新的 TwiML 源(包括 Record 动词)。如果座席无法接听电话,您将触发此操作。
正如您在评论中所述,问题是您的呼叫仍在队列中,您正在处理的 TwiML 只能是 waitUrl
友好的 TwiML。
您需要的是让呼叫离开队列,然后它可以继续使用所有可用的 TwiML。您可以让呼叫使用 <Leave>
TwiML element 离开队列。当呼叫离开队列时,它将继续 <Enqueue>
元素之后的下一个 TwiML。根据您当前的实施,我假设您的 mp3 文件的长度与您希望呼叫者留在队列中的长度差不多。
因此,在您的情况下,您可以将 TwiML 更新为以下内容:
incoming-call.php - 将呼叫排队,但也会在呼叫者离开队列后处理录音语音邮件。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say voice="Polly.Joanna-Neural">Please wait while I find someone to speak with you.</Say>
<Enqueue waitUrl="wait-url.php">support</Enqueue>
<Say voice="Polly.Joanna-Neural">I'm sorry, but I couldn't reach anyone to take your call. Please leave a message, and someone will return your call as soon as possible. Have a great day!</Say>
<Record timeout="10" />
<Hangup />
</Response>
wait-url.php - 播放 mp3,然后离开队列。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Play loop="1">../../audio-files/hold-music/smile.mp3</Play>
<Leave />
</Response>
我一遍又一遍地解决了这个看似简单的 TwiML (Twilio) 问题,但无法弄清楚发生了什么。
我的Objective:将入站呼叫放入队列中,同时向座席发出出站呼叫以查看他们是否可以接听电话。如果座席可以接听电话,则这两个电话被桥接。如果座席无法接听电话,来电者会听到等待音乐大约一分钟,然后是一条消息,要求他们留下语音邮件。来电者留下语音邮件后,应挂断电话。
发生了什么:在接听入站呼叫后,呼叫者会听到一条简短的消息,然后进入队列(这有效)。向座席发出出站呼叫(这有效),如果他们可以接听电话,他们就会接听(这有效)。如果座席无法接听电话,则来电者会听到等待音乐大约一分钟,然后是一条消息,要求他们留下语音邮件(这可行)。然后,电话没有给来电者留下语音邮件的机会,而是突然挂断了。 Record 动词似乎被跳过,就好像它不存在一样,流程直接转到 Hangup。
这是接听来电和入队 waitUrl 的代码:
传入-call.php
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say voice="Polly.Joanna-Neural">Please wait while I find someone to speak with you.</Say>
<Enqueue waitUrl="wait-url.php">support</Enqueue>
</Response>
等等-url.php
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Play loop="1">../../audio-files/hold-music/smile.mp3</Play>
<Say voice="Polly.Joanna-Neural">I'm sorry, but I couldn't reach anyone to take your call. Please leave a message, and someone will return your call as soon as possible. Have a great day!</Say>
<Record timeout="10" />
<Hangup/>
</Response>
我已经尝试重新配置 Record 动词,有和没有 recordingStatusCallback url,有和没有超时,甚至什么都没有。在每种情况下,通话都没有记录消息就结束了。
提前感谢您对如何解决此问题提出任何想法或建议。
尝试修改 Enqueued calls CallSid 以指向新的 TwiML 源(包括 Record 动词)。如果座席无法接听电话,您将触发此操作。
正如您在评论中所述,问题是您的呼叫仍在队列中,您正在处理的 TwiML 只能是 waitUrl
友好的 TwiML。
您需要的是让呼叫离开队列,然后它可以继续使用所有可用的 TwiML。您可以让呼叫使用 <Leave>
TwiML element 离开队列。当呼叫离开队列时,它将继续 <Enqueue>
元素之后的下一个 TwiML。根据您当前的实施,我假设您的 mp3 文件的长度与您希望呼叫者留在队列中的长度差不多。
因此,在您的情况下,您可以将 TwiML 更新为以下内容:
incoming-call.php - 将呼叫排队,但也会在呼叫者离开队列后处理录音语音邮件。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say voice="Polly.Joanna-Neural">Please wait while I find someone to speak with you.</Say>
<Enqueue waitUrl="wait-url.php">support</Enqueue>
<Say voice="Polly.Joanna-Neural">I'm sorry, but I couldn't reach anyone to take your call. Please leave a message, and someone will return your call as soon as possible. Have a great day!</Say>
<Record timeout="10" />
<Hangup />
</Response>
wait-url.php - 播放 mp3,然后离开队列。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Play loop="1">../../audio-files/hold-music/smile.mp3</Play>
<Leave />
</Response>