我刚开始使用 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>
我怎样才能实现这个目标?
最佳答案
结合使用 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 的 Controller 应使用 <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());
关于javascript - 如果用户在出站调用中未接听,Twilio 会发送语音消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53902705/