0

要进行此设置,以下是用例:

  • IVR 系统呼叫某人并向他们读取一个长长的 twiml 提示(大约 251 个字符)
  • 在提示结束时收集用户输入
  • 如果非人类接听电话,我将使用 asyncAMD 回调来获取 AMD 的结果,然后留下语音消息

我目前正在使用以下代码拨打电话:

var call = CallResource.Create(
    machineDetection: "DetectMessageEnd",   
    asyncAmd: "true",
    asyncAmdStatusCallback: new Uri("[URI to callback]"),
    asyncAmdStatusCallbackMethod: HttpMethod.Post,      
    twiml: new Twilio.Types.Twiml("<Response><Say>[MyMessage]</Say></Response>"),       
    from: new Twilio.Types.PhoneNumber(configuration["fromPhoneNumber"]),
    to: new Twilio.Types.PhoneNumber(configuration["toPhoneNumber"])
);

其中“MyMessage”的长度约为 251 个字符。

应答机位工作得非常好,我可以留下语音消息以防非人类回答(有关详细信息,请参阅我的问题和后续回答如何使用 Twilio AMD 留下语音邮件?)。

但是,我终其一生都无法弄清楚如何将 asyncAMD 回调延长到足够长的时间,以便在人类回答的情况下完成初始提示。

我已经尝试添加所有这些可选的 API 调整参数,但仍然无法正常工作:

machineDetectionTimeout: 59,
machineDetectionSpeechThreshold: 6000,
machineDetectionSpeechEndThreshold: 5000,
machineDetectionSilenceTimeout: 10000,

我在这里有什么选择?保释 asyncAMD 并使用阻塞 AMD?我需要能够在非人工应答的情况下留下语音消息,但我需要将调用它的回调的 asyncAMD 的结果推送足够长的时间,以便在人工应答中读取初始响应。

4

1 回答 1

0

我将采用这种方法。在收件人回答并说“你好”(他们可能会这么说)时,answeredBy 将返回“human”,但如果他们不这样做并且只听最初的提示,我会得到“unknown”回复。在这一点上,我将把一个被回答的“未知”视为一个回答和收听初始 Twiml 提示的人。

于 2021-11-12T14:57:50.217 回答