我正在尝试为Twilio#(非Twilio Cell)设置语音邮件...而且它在大多数情况下都能正常工作,除了我20秒后回叫,没有任何内容(下面的步骤5)。我认为我的问题是TWIML 1/2测试,但我不知道。
我在TWIML 2中做错了什么?
或
是否正在使用我的单元格来导致问题?
接收
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial action="https://-->TWIML 2"
timeout="1"
callerId="{{To}}"
>
<Number>##CELL##</Number>
</Dial>
</Response>
<?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>
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Say>Bi</Say>
</Response>
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需要异步,但你可以在没有为你的情况定制时编写它。