我想设置twilio来呼叫A,如果A人没有回答我想打电话给B等等。
根据我的理解,twilio将通过机器或人员(如果启用了机器检测)请求一旦接听电话时提供的URL。
目前我进行了设置,以便在检测到应答机时,它会提供TWIML XML以进行挂断,如果有人应答,则提供TWIML XML消息。但我无法找到一种方法来呼叫名单上的下一个人。
`
client.calls.create({
to: "+1" + numbers[i],
from: process.env.TWILIO_NUMBER,
url: "https://publically.accessable/url-of_mine",
machineDetection: "Enabled",
method: "GET"
})
.catch((err) => {
console.log(err)
})
这是我公开网址
中的功能
const params = event.queryStringParameters;
if (params.AnsweredBy == "machine_start") {
let xml = `
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Hangup/>
</Response>`
return Response(xml, mimetype = 'text/xml')
} else{
let xml = `
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say voice="alice" loop='3'>Wildfire Alert. """ + memberCount + """ PURE members are within 15 miles of """ + fireName + """ fire. Please refer to Incident Monitor for further information.</Say>
</Response>`
return Response(xml, mimetype='text/xml')
}
`
答案 0 :(得分:0)
Twilio开发者传道者在这里。
我投票结束的道歉,我发现现在这是一个不同的用例。
要在未接听上一个电话时接听新电话,或接听电话接听电话,您需要做几件事。
首先,对于未应答呼叫,失败,收到忙音或被取消的情况,您需要为呼叫设置statusCallback
。 statusCallback
是您在initial API call to make the phone call中设置为另一个公开可访问网址的参数。默认情况下,当您设置statusCallback
时,Twilio会在
client.calls.create({
to: "+1" + numbers[i],
from: process.env.TWILIO_NUMBER,
url: "https://publicly.accessable/url-of_mine",
machineDetection: "Enabled",
method: "GET",
statusCallback: "https://another.publicly.accessible/url-of_yours?currentIndex=" + i,
statusCallbackMethod: "GET"
})
您可能希望在URL中添加一些额外信息,例如当前索引(我在上面的示例中已经这样做了。
当您收到statusCallback
网址的请求时,您应该检查通话的实际状态。基本上,completed
以外的任何内容都表示呼叫未通过,您需要拨打列表中的下一个号码。这是您可以再次使用该索引的地方。
const params = event.queryStringParameters;
if (params.CallStatus != 'completed') {
let i = parseInt(params.currentIndex, 10) + 1;
client.calls.create({
to: "+1" + numbers[i],
from: process.env.TWILIO_NUMBER,
url: "https://publicly.accessable/url-of_mine",
machineDetection: "Enabled"
method: "GET",
statusCallback: "https://another.publicly.accessible/url-of_yours?currentIndex=" + i,
statusCallbackMethod: "GET"
})
}
return Response('')
我无法测试,但我的预感是,当您将<Hangup/>
返回到应答机检测到的呼叫时,这也将被视为已完成的呼叫。处理此问题的最佳方法是在您使用<Hangup/>
const params = event.queryStringParameters;
if (params.AnsweredBy == "machine_start") {
let xml = `
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Hangup/>
</Response>`
client.calls.create( callParameters )
return Response(xml, mimetype = 'text/xml')
} else{ .. }
让我知道这是否有帮助。