javascript - 如果用户在出站调用中未接听,Twilio 会发送语音消息

标签 javascript node.js twilio 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>

我怎样才能实现这个目标?

最佳答案

结合使用 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/

相关文章:

node.js - 如何使用 ansible 永久设置 NODE_ENV?

javascript - 每个 ejs 渲染调用上的 "Default"参数?

twilio - 保护 twilio 传真 mediaUrl

Javascript 目标 href 和类

javascript - react native : How to create a menu brought up from bottom?

javascript - 如何在应用程序 > Web浏览器控件中使用 Google Maps API v3 ClientID

node.js - 通过传递我的简单例份验证中间件来表达

javascript - 为不同的代码块设置超时(对于模式)

http - Azure 逻辑应用程序 - Twilio 连接器

twilio - 从 Twilio 调用 Skype ID?