要设置此功能,以下是用例:
- IVR系统呼叫某人,并向他们读取一个长提示(约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,
我有什么选择?异步AMD上的保释和使用阻塞AMD?我需要能够在非人工应答的情况下留下语音消息,但我需要将异步AMD调用其回调的结果推送足够长的时间,以便在人工应答中读取初始响应。
我将采用这种方法。在接收者的回答中;你好";(他们很可能会这么说(,回答说By将返回";"人";,但如果他们不这样做,只听最初的提示,我就会得到";未知";返回在这一点上,我将处理一个回答;未知";作为回答和收听初始Twiml提示的人。