如何使用Twilio SIP端点设置语音邮件

如何使用Twilio SIP端点设置语音邮件,twilio,sip,twilio-twiml,voicemail,Twilio,Sip,Twilio Twiml,Voicemail,我试图在twiml中设置一个简单的语音邮件系统,作为我的向导 期望的行为: 当呼叫到达时,连接到SIP。 如果20秒后没有回答,请播放mp3,录制信息和电子邮件 <Response> <Dial action="/voicemail" timeout="20"> <Sip> username@endpoint.sip.us1.twilio.com </Sip> </D

我试图在twiml中设置一个简单的语音邮件系统,作为我的向导

期望的行为:

当呼叫到达时,连接到SIP。 如果20秒后没有回答,请播放mp3,录制信息和电子邮件

<Response>
    <Dial action="/voicemail" timeout="20">
        <Sip>
            username@endpoint.sip.us1.twilio.com
        </Sip>
      </Dial>
  </Response>

username@endpoint.sip.us1.twilio.com
使用语音信箱功能,如下所示

<Response>
    <Play>https://www.example.com/voicemail.mp3</Play>
    <Record transcribe="true" transcribeCallback="http://twimlets.com/voicemail?Email=somebody@somedomain.com" action="/hangup"/>
</Response>

https://www.example.com/voicemail.mp3
一切正常,除了来电者被转接到语音信箱,不管电话是否被接听

如果呼叫完成,我缺少什么可以提供挂断逻辑

既然没有条件逻辑运算符,那么这可以完全在twiml中完成吗


提前感谢您提供的任何帮助

这里是Twilio开发者福音传道者

纯TwiML无法实现这一点,正如您所说,TwiML(XML)中没有条件

您需要做的是在
/voicemail
端点内检查呼叫是“已完成”还是“已应答”。您可以通过检查。如果是这样,那么你可以挂断电话,否则你想继续语音信箱

您可以使用Node.js和类似的


如果有任何帮助,请告诉我。

太好了!你能把答案标记为正确的吗?这样其他人就可以看到它也有帮助了?
exports.handler = function(context, event, callback) {
    const twiml = new Twilio.twiml.VoiceResponse();
    if (event.DialCallStatus === 'completed' || event.DialCallStatus === 'answered') {
        twiml.hangup();
    } else {
        twiml.play("https://www.example.com/voicemail.mp3");
        twiml.record({
            transcribe: true,
            transcribeCallback: "http://twimlets.com/voicemail?Email=somebody@somedomain.com",
             action: "/hangup"
        });
    }
    callback(null, twiml);
};