Twilio отправляет голосовое сообщение, если пользователь не отвечает, в исходящем звонке - PullRequest
0 голосов
/ 23 декабря 2018

Я новичок в использовании 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());

Если пользователь в другомend не ответил на звонок, мне нужно отправить запись, нажав кнопку в качестве голосовой почты для этого пользователя.

<button>Send Voicemail</button>

Как мне этого добиться?

1 Ответ

0 голосов
/ 24 декабря 2018

Это должно быть возможно с использованием комбинации службы обнаружения автоответчика Twilio и глагола <Play> TwiML.

Вот пример кода совершения исходящего вызова с обнаружением автоответчика.

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 опубликует результат вызова в указанном вами веб-крюке.Этот веб-крючок получит параметр AnsweredBy, который будет указывать на такие события, как machine_start или machine_end_beep.

Контроллер, который получает веб-крючок, должен ответить, используя глагол <Play> TwiML, чтобы «нажать» правильныйкнопка. Вот пример кода того, как это может выглядеть (этот код не проверен):

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());
...