在Twilio语音通话中重播语音

时间:2019-01-21 11:35:14

标签: node.js twilio twilio-functions

我正在尝试编写一个简单的Twilio设置,该设置将打出电话,记录用户的语音消息并立即将其重播。我创建了两个函数:startcallmsgin StartCall 呼叫用户,并在呼叫的url参数中指定 MsgIn MsgIn 然后有两种主要的操作模式:最初没有记录时,它返回TwiML响应以开始记录,然后以适当的参数作为Webhook调用时,它播放记录并挂起。起来至少这是应该所要做的。

根据我对文档的理解,我必须在recordingStatusCallback上附加一个Webhook,因为调用action Webhook时可能无法使用该记录。但是,虽然功能控制台指示两个webhook都已执行,但呼叫日志仅显示msgin的一次后续调用,其中event.RecordingStatus(对应于action)的值为空,通话确实挂断了,而没有播放录音。我在这里想念什么?

// this function's path is /msgin

exports.handler = function(context, event, callback) {
    if (!event.RecordingStatus && !event.RecordingUrl) {
        let twiml = new Twilio.twiml.VoiceResponse();
        console.log("Initial MsgIn");
        twiml.say({ voice: 'man', language: 'en-us' }, 'Leave your message');
        twiml.record({
            playBeep: false,
            transcribe: false,
            trim: "trim-silence",
            timeout: 1,
            recordingStatusCallback: "/msgin",
            recordingStatusCallbackEvent: "completed",
            action: "/msgin"
        });
        console.log("Recording started");
        callback(null, twiml);
    }
    else if (event.RecordingStatus == "completed") {
        let twiml = new Twilio.twiml.VoiceResponse();
        console.log("Supposedly callback");
        twiml.say({ voice: 'man', language: 'en-us' }, 'You said');
        twiml.play(event.RecordingUrl);
        twiml.hangup();
        callback(null, twiml);
    }
    else {
        console.log("Supposedly action");
        callback(null, "");
    }
};

1 个答案:

答案 0 :(得分:0)

我已按照此处接受的答案中的说明进行操作:Recording multiple user answers in Twilio call解决了此问题。不过,在开始提供音频录音之前,会有很大的延迟。