Как настроить голосовую почту с помощью Twilio SIP Endpoint - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь настроить простую систему голосовой почты в twiml с этим в качестве моего руководства,

Желаемое поведение:

Когдазвонок поступил, подключись к SIP.Если в течение 20 секунд нет ответа, воспроизведите mp3, запишите сообщение, отправьте электронное сообщение.

<Response>
    <Dial action="/voicemail" timeout="20">
        <Sip>
            username@endpoint.sip.us1.twilio.com
        </Sip>
      </Dial>
  </Response>

с функцией голосовой почты следующим образом

<Response>
    <Play>https://www.example.com/voicemail.mp3</Play>
    <Record transcribe="true" transcribeCallback="http://twimlets.com/voicemail?Email=somebody@somedomain.com" action="/hangup"/>
</Response>

Все работает нормально, за исключением того, что вызывающий абонент перенаправленна голосовую почту независимо от того, принят вызов или нет.

Чего мне не хватает, чтобы обеспечить логику для зависания, если вызов завершен?

Можно ли это сделать чисто в twiml, так какнет условных логических операторов?

Заранее спасибо за любую помощь, которую вы можете оказать!

1 Ответ

0 голосов
/ 23 октября 2018

Разработчик Twilio здесь.

Невозможно достичь этого с помощью чистого TwiML, так как вы говорите, что в TwiML (XML) нет условий.

Что вам нужно сделать, так этопроверьте в своей /voicemail конечной точке, был ли вызов "завершен" или "ответил"Это можно сделать, проверив параметр DialCallStatus .Если это так, то вы можете прервать вызов, в противном случае вы хотите продолжить с голосовой почтой.

Вы можете сделать это, используя Node.js и Twilio Function , например, так:

exports.handler = function(context, event, callback) {
    const twiml = new Twilio.twiml.VoiceResponse();
    if (event.DialCallStatus === 'completed' || event.DialCallStatus === 'answered') {
        twiml.hangup();
    } else {
        twiml.play("https://www.example.com/voicemail.mp3");
        twiml.record({
            transcribe: true,
            transcribeCallback: "http://twimlets.com/voicemail?Email=somebody@somedomain.com",
             action: "/hangup"
        });
    }
    callback(null, twiml);
};

Дайте мне знать, поможет ли это вообще.

...