我不熟悉twilio。我正在使用twilio从浏览器拨打电话。在浏览器端,我正在使用twiml设备连接到呼叫。
Twilio.Device.connect({ phoneNumber: phoneNumber, userId: id });
在nodejs服务器端,我正在使用此代码。
import twilio from 'twilio';
const VoiceResponse = twilio.twiml.VoiceResponse;
let phoneNumber = req.body.phoneNumber;
let callerId = user.phoneNumber;
let twiml = new VoiceResponse();
let dial = twiml.dial({ callerId: callerId });
dial.number(phoneNumber);
res.send(twiml.toString());
如果另一端的用户未接听电话,我需要通过按一个按钮将录音作为语音邮件发送给该用户。
<button>Send Voicemail</button>
我该如何实现?
答案 0 :(得分:1)
应该结合使用Twilio的电话答录机检测服务和<Play>
TwiML动词。
Here is a code sample使用应答机检测来打出电话。
const accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const authToken = 'your_auth_token';
const client = require('twilio')(accountSid, authToken);
client.calls
.create({
machineDetection: 'Enable',
url: 'https://handler.twilio.com/twiml/EHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
to: '+1562300000',
from: '+18180000000'
})
.then(call => console.log(call.sid))
.done();
在通话中启用AMD的情况下,Twilio会将通话结果发布到您指定的Webhook。该Webhook将收到一个AnsweredBy
参数,该参数指示诸如machine_start
或machine_end_beep
之类的事件。
接收Webhook的控制器应通过使用<Play>
TwiML动词来响应,以“按下”正确的按钮。 Here is a code sample的外观(此代码未经测试):
const VoiceResponse = require('twilio').twiml.VoiceResponse;
app.post('/answering-machine-handler', function (req, res) {
const response = new VoiceResponse();
if (req.params.AnsweredBy === 'machine_start') {
response.play({
digits: 'wwww3'
});
} else {
// Handle other cases here.
}
res.send(response);
})
console.log(response.toString());