如果用户未接听,Twilio在呼出电话中发送语音消息

时间:2018-12-23 10:06:10

标签: javascript node.js twilio twiml twilio-twiml

我不熟悉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>

我该如何实现?

1 个答案:

答案 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_startmachine_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());