语音邮件在20秒后回拨

时间:2018-01-01 04:03:43

标签: twilio

我正在尝试为Twilio#(非Twilio Cell)设置语音邮件...而且它在大多数情况下都能正常工作,除了我20秒后回叫,没有任何内容(下面的步骤5)。我认为我的问题是TWIML 1/2测试,但我不知道。

  1. 我会从我的手机里打电话给我的Twilo#。
  2. 我在我的手机上击中了拒绝(即使我的时间是1,它也不会放弃。)。
  3. 留言
  4. 挂断||按按钮结束
  5. [第4步后约20秒]获得空白回电
  6. [第5步之后10-15秒]按预期获取我的文字/电子邮件
  7. 我在TWIML 2中做错了什么?

    是否正在使用我的单元格来导致问题?

    接收

    TWIML 1:

    <?xml version="1.0" encoding="UTF-8"?>
    <Response>
      <Dial action="https://-->TWIML 2"
       timeout="1" 
       callerId="{{To}}"       
      >
        <Number>##CELL##</Number>
      </Dial>
    </Response>
    

    TWIML 2:

    <?xml version="1.0" encoding="UTF-8"?>
      <Response>
        <Say>
          Please leave a message 
        </Say>
          <Record action="https://TWIML 3"
            method="POST"
            maxLength="120"
            playBeep="false"
            trim="do-not-trim"
            transcribe="true"
            transcribeCallback="https://FUNCTION 1"
          />
        <Say>I did not receive a recording.</Say>
    </Response>
    

    TWIML 3

    <?xml version="1.0" encoding="UTF-8"?>
    <Response>
      <Say>Bi</Say>
    </Response>
    

    功能1

    exports.handler = function(context, event, callback) {
    var client = context.getTwilioClient();
    const mailgun = require('mailgun-js')({apiKey: context.MG_KEY, domain:context.MG_DOMAIN});
    var async = require('async');
    
     var sendSMS = function(callback){
       let dataSMS = {
                to: '##CELL##',
              from: event.To,
              body: 'Voicemail from:\n ' + event.From + '\n\nText:\n' + event.TranscriptionText + '\n\n---MSG Recording---\n' + event.RecordingUrl
       };
       client.messages.create(dataSMS).then(function(response){
         console.log('N [T1]: ' + response.status); 
         return callback(null, response);
       }).catch(function(err){
         console.log('T2: ' + err); 
       });
     };
    
     var sendEmail = function(callback){
       let dataMG = {
                to: '@@TO@@',
              from: '@@FROM@@',
           subject: 'Voicemail: ' + event.From,
              text: event.TranscriptionText + '\n\n--- MSG Recording --->\n' + event.RecordingUrl
         };
       console.log('-------- Sending Mail (Mailgun API)---->' + dataMG.to);
       mailgun.messages().send(dataMG, function (error, body) {
         console.log('N [MB] Mailgun Body :' + body);
         return callback(null, body);
       });
     };
    
     var waitTime = function(callback){
       setTimeout(function() {
         return callback(200);
       }, 1000);
     };
    
     var asyncTasks = [sendSMS, sendEmail, waitTime];
    
     async.parallel(asyncTasks, function(err, result){
       console.log('--------------------------DONE--------------------------' + result[0] + result[1]);
       callback(null, 200);
     });
    };
    

    解决:

    所以几天之后,按预期工作,而不是在20秒后回电话。我不认为我改变了什么,但谁知道;现在我无法强制发生意外行为:)

    下是示例如何设置语音信箱系统,转录您的信息 彩信,包括指向原始语音留言的链接。如果您设置了mailgun帐户,还会包含电子邮件副本。

    使用转录服务需要支付额外费用,并且在您不再需要访问录制内容后,您必须最终删除录制内容。

    如果你要尝试这个,在为你的情况清理代码时,Twiml 1中的超时变量是响铃的秒数。功能1需要异步,但你可以在没有为你的情况定制时编写它。

0 个答案:

没有答案