如何使用 Twiml Bins 设置语音信箱?

How to set voicemail using Twiml Bins?

我正在使用 Twiml Bins 进行快速 POC,我正在尝试连接 2 个电话,如果电话未被收件人接听,则应转到他们的语音信箱。

用例:

  1. 用户A给我的twilio打了电话
  2. Twilio 将 A 置于等待状态并尝试呼叫 B。
  3. 如果 B 接听电话,则要求 B 接听或拒绝来电。按 1 或 2(或挂断)。
  4. 如果接受,通话接通,A 和 B 通话。
  5. 如果被拒绝,A 可以在他的手机上给 B 留言。
  6. 如果 B 没有接听电话,A 可以在他的手机上给 B 留言。

我卡在 5 点和 6 点。如果电话被拒接或无人接听,则无法向 B 发送语音邮件。 Twiml 标签的嵌套让我有点困惑。到目前为止,这是我尝试过的: PutAOnholdAndCallB:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Say>Thank you for calling please wait while I connect you.</Say>
  <Dial timeout="15" action="Callhangup">
        <Number url="AcceptorDeny">UserBPhoneNo
        </Number>
    </Dial>
</Response>

接受者拒绝:

    <?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Gather numDigits="1" timeout="20" action="DoNothing">
    <Say>You have a call, press 1 to answer or hang-up for it to go to voicemail.</Say><Pause length="3"/><Say>Connecting</Say>
  </Gather>
  <Hangup/>
</Response>

挂断电话:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Say>
        You have reached the voicemail.
        Please leave a message at the beep. 
        Press the star key when finished. 
    </Say>

    <Record action="DoNothing"
        method="GET" 
        maxLength="20"
        finishOnKey="*"
    />
    <Hangup />
</Response>

什么都不做:

<?xml version="1.0" encoding="UTF-8"?>
<Response />

您面临的挑战是 TwiML Bin 不提供分析 Dial action URL you define. You need to evaluate the value of DialCallStatus 结果所需的条件逻辑级别,无法正确引导 未应答 调用(或拨打方未按号码接听电话的电话)。

在那些未应答 的情况下,您希望将呼叫发送到您的 TwiML Bin 语音邮件逻辑,Callhangup,您检查 DialCallStatus(的拨号操作 URL) = no-answer 否则你 Hangup 或 return 不再有 TwiML(因为被叫方按下了一个键来接听电话,所以不需要出示语音信箱给来电者)。

此 Twilio 函数中记录了逻辑,Implement voicemail

我建议 Twilio Studio 来处理这个问题,但是 Studio 目前不支持 Number URL 您用于向被叫方耳语选项接受呼叫的选项的功能。

如果您确实使用了 Studio,则需要查看 TwiML Redirect Widget to add that whisper functionality into your Studio Flow. I saw a blog doing what I wrote above using Studio (without whisper) last week here, Using Twilio To Make A Call Forwarding And Voice Messaging System