【问题标题】:Replaying an utterance in a Twilio voice call在 Twilio 语音通话中重放话语
【发布时间】:2019-01-22 22:13:43
【问题描述】:

我正在尝试编写一个简单的 Twilio 设置,用于拨打外线电话、录制用户的语音消息并立即将其回放给他。我创建了两个函数:startcall 和 msgin。 StartCall 调用用户并在调用的url 参数中指定MsgIn。 MsgIn 然后有两种主要的操作模式:最初,当没有附加记录时,它返回一个 TwiML 响应开始记录,然后当作为具有适当参数的 webhook 调用时,它会回放记录并挂起向上。至少这是它应该做的。

根据我对文档的理解,我必须将 webhook 附加到 recordingStatusCallback,因为在调用 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, "");
    }
};

【问题讨论】:

  • 发现了以下问答:stackoverflow.com/questions/43599336/…。这有助于理解为什么我的回调处理不起作用,但是如果我想保持录制和回放之间的延迟尽可能低,我不知道如何使用它,而且我不知道话语可能会持续多长时间最后。
  • 一个想法是启动另一个函数,它依赖于 memcached 来设置/获取记录状态(set 由回调调用,get 由 50 毫秒步进循环中的操作调用)。

标签: node.js twilio twilio-functions


【解决方案1】:

我已按照此处接受的答案中的说明进行操作:Recording multiple user answers in Twilio call 来解决此问题。不过,在音频录制可用之前存在相当长的延迟。

【讨论】:

  • 很高兴您找到了该答案并且对您有所帮助。尽管我很害怕,但无法保证录音需要多长时间才能可用。如果您为呼叫者提供稍后再次听到并需要按键的选项,它可能会提高呼叫者的感知性能。这将使录音有机会在用户与呼叫交互时完成。
  • 好主意。或者只是按照“现在重播您的消息”的方式播放一些预先录制的文本。我还注意到呼叫重定向最多需要 2-3 秒;如果这是正常的,而不是我的某种错误配置,这种方法也可以解决这种延迟。
  • 重定向不应该花那么长时间。呼叫重定向到的 URL 的响应时间如何?
猜你喜欢
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多