如何在 Node.JS 中删除调用者在 Twilio 中所做的最后(最近)录音
How to delete the last (most recent) recording made by caller in Twilio in Node.JS
我有一个功能可以让你录音,如果你不满意就删除你的录音。您可以按 * 删除最后的录音。
我的录音密码是:
exports.handler = function(context, event, callback) {
const twiml = new Twilio.twiml.VoiceResponse();
twiml.say('Welcome! Please record your announcement after the beep!');
twiml.say('After your recording, hang up if you are satisfied or press star to delete the newest recording.');
twiml.record({
finishOnKey: '*',
recordingStatusCallback: '/delete',
action: '/delete'
});
callback(null, twiml);
};
最后一条录音删除代码(/delete):
exports.handler = function(context, event, callback) {
const twiml = new Twilio.twiml.VoiceResponse();
const id = event.RecordingSid;
console.log(id);
console.log(typeof id);
const accountSid = 'AC1775ae53d952710bb1b4e47ea19c009c';
const authToken = {my_token};
const client = require('twilio')(accountSid, authToken);
client.recordings(id)
.remove(function(err, data) {
if (err) {
twiml.say("there is an error");
console.log(err.status);
throw err.message;
} else {
console.log("deleted successfully.");
twiml.say("deleted successfully");
}
})
.then(recording => console.log(recording.sid))
.done();
twiml.say('Your announcement is deleted');
callback(null, twiml);
};
现在,我得到了正确的 ID,没有错误,但是当我检查录音日志时,录音仍然存在。这是为什么?我需要给它一些时间让它删除吗?
来自 console.log(recording.sid)
的日志也没有显示,我不确定为什么它没有执行应该删除录音的整个代码块。
提前致谢!
这里是 Twilio 开发人员布道者。
当您将 recordingStatusCallback
设置为 /delete
以及 <Gather>
的 action
时,Twilio 将尝试两次调用 /delete
;录制完成时一次,用户响应 <Gather>
.
时一次
recordingStatusCallback
旨在与调用本身异步工作,因此我将专注于 action
。
录制完成后(用户按 *),Twilio 将向 <Record>
action
属性发出请求。在该请求中,作为请求正文的一部分,您将收到 RecordingURL
(即使录制状态尚未完成)。您应该将此 RecordingURL
传递给 <Gather>
的结果(或将其存储在会话中)并使用它来执行 DELETE
请求或提取 Recording SID 以用于Twilio Node模块如果需要删除录音。
这有什么帮助吗?
我想通了!
这是 /delete:
的正确代码
我更改的主要内容是将我的回调移动到 remove(function(...)) 中,因此该函数仅在 HTTP 请求完成后 returns。
exports.handler = function(context, event, callback) {
const twiml = new Twilio.twiml.VoiceResponse();
const id = event.RecordingSid;
var client = context.getTwilioClient();
console.log(client);
const URL = event.RecordingUrl;
client.recordings(id)
.remove(function(err, data) {
if (err) {
twiml.say("there is an error");
console.log(err.status);
throw err.message;
} else {
console.log("deleted successfully.");
twiml.say("deleted successfully");
callback(null, twiml);
}
})
.then(recording => console.log(recording.sid))
.done();
twiml.say('Your announcement is deleted');
};
我有一个功能可以让你录音,如果你不满意就删除你的录音。您可以按 * 删除最后的录音。
我的录音密码是:
exports.handler = function(context, event, callback) {
const twiml = new Twilio.twiml.VoiceResponse();
twiml.say('Welcome! Please record your announcement after the beep!');
twiml.say('After your recording, hang up if you are satisfied or press star to delete the newest recording.');
twiml.record({
finishOnKey: '*',
recordingStatusCallback: '/delete',
action: '/delete'
});
callback(null, twiml);
};
最后一条录音删除代码(/delete):
exports.handler = function(context, event, callback) {
const twiml = new Twilio.twiml.VoiceResponse();
const id = event.RecordingSid;
console.log(id);
console.log(typeof id);
const accountSid = 'AC1775ae53d952710bb1b4e47ea19c009c';
const authToken = {my_token};
const client = require('twilio')(accountSid, authToken);
client.recordings(id)
.remove(function(err, data) {
if (err) {
twiml.say("there is an error");
console.log(err.status);
throw err.message;
} else {
console.log("deleted successfully.");
twiml.say("deleted successfully");
}
})
.then(recording => console.log(recording.sid))
.done();
twiml.say('Your announcement is deleted');
callback(null, twiml);
};
现在,我得到了正确的 ID,没有错误,但是当我检查录音日志时,录音仍然存在。这是为什么?我需要给它一些时间让它删除吗?
来自 console.log(recording.sid)
的日志也没有显示,我不确定为什么它没有执行应该删除录音的整个代码块。
提前致谢!
这里是 Twilio 开发人员布道者。
当您将 recordingStatusCallback
设置为 /delete
以及 <Gather>
的 action
时,Twilio 将尝试两次调用 /delete
;录制完成时一次,用户响应 <Gather>
.
recordingStatusCallback
旨在与调用本身异步工作,因此我将专注于 action
。
录制完成后(用户按 *),Twilio 将向 <Record>
action
属性发出请求。在该请求中,作为请求正文的一部分,您将收到 RecordingURL
(即使录制状态尚未完成)。您应该将此 RecordingURL
传递给 <Gather>
的结果(或将其存储在会话中)并使用它来执行 DELETE
请求或提取 Recording SID 以用于Twilio Node模块如果需要删除录音。
这有什么帮助吗?
我想通了!
这是 /delete:
的正确代码
我更改的主要内容是将我的回调移动到 remove(function(...)) 中,因此该函数仅在 HTTP 请求完成后 returns。
exports.handler = function(context, event, callback) {
const twiml = new Twilio.twiml.VoiceResponse();
const id = event.RecordingSid;
var client = context.getTwilioClient();
console.log(client);
const URL = event.RecordingUrl;
client.recordings(id)
.remove(function(err, data) {
if (err) {
twiml.say("there is an error");
console.log(err.status);
throw err.message;
} else {
console.log("deleted successfully.");
twiml.say("deleted successfully");
callback(null, twiml);
}
})
.then(recording => console.log(recording.sid))
.done();
twiml.say('Your announcement is deleted');
};