【问题标题】:How to Setup Voicemail with Twilio SIP Endpoint如何使用 Twilio SIP 端点设置语音邮件
【发布时间】:2018-10-22 15:48:01
【问题描述】:

我正在尝试在 twiml 中设置一个简单的语音邮件系统,并以 this 为指导,

期望的行为:

来电时,连接到 SIP。 如果 20 秒后无人接听,则播放 mp3、录音、发送电子邮件。

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

语音信箱功能如下

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

一切正常,除了呼叫者被转移到语音信箱,无论是否接听电话。

如果通话完成,我缺少什么会提供挂断逻辑?

由于没有条件逻辑运算符,这可以纯粹在 twiml 中完成吗?

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

【问题讨论】:

    标签: twilio sip twilio-twiml voicemail


    【解决方案1】:
    推荐的答案 Twilio

    这里是 Twilio 开发者宣传员。

    没有办法用纯 TwiML 实现这一点,正如你所说的 TwiML (XML) 中没有条件。

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

    您可以使用 Node.js 和 Twilio Function 来做到这一点,如下所示:

    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);
    };
    

    让我知道这是否有帮助。

    【讨论】:

    • 甜蜜!您能否将答案标记为正确,以便其他人也可以看到它也有帮助?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    相关资源
    最近更新 更多