Twilio 和 Node JS:无法找到和删除媒体 instances/resources
Twilio & NodeJS: can't find and delete Media instances/resources
我正在使用 Twilio 的 NodeJS 模块 & API 发送附有图像的彩信(从远程 URL),我想删除在 Twilio 上创建的媒体实例我一发出消息就服务器。
我的消息发送正确,在回调中,我尝试 1) 列出当前消息的媒体实例,然后 2) 遍历这些实例并删除。问题是从 API 返回的当前消息的 mediaList 数组始终为空。
这是我的代码:
twilio_client.messages.create({
body: "Thanks for taking a photo. Here it is!",
to: req.query.From,
from: TWILIO_SHORTCODE,
mediaUrl: photo_URL,
statusCallback: STATUS_CALLBACK_URL
}, function(error, message) {
if (!error) {
twilio_client.messages(message.sid).media.list(function(err, data) {
console.log(data);
// The correct object comes back as 'data' here per the API
// but the mediaList array is empty
}
console.log('Message sent via Twilio.');
res.status(200).send('');
} else {
console.log('Could not send message via Twilio: ');
console.log(error);
res.status(500).send('');
}
});
所以,事实证明,在我尝试获取媒体列表时尝试不起作用,因为媒体实例尚不存在。
我在 statusCallback 有一个单独的小应用程序 运行(我通过上面代码中的常量 STATUS_CALLBACK_URL 提供 URL),到现在为止,只是检查了查看我尝试向用户发送 MMS 的消息是否未被 Twilio 正确处理,并通过 SMS 提醒用户注意问题。因此,我在同一个应用程序中添加了一个检查,以查看该消息是否实际上是 'sent' 给用户的,然后检查并删除了此时与该消息关联的媒体实例,它工作正常.这是我的代码:
// issue message to user if there's a problem with Twilio getting the photo
if (req.body.SmsStatus === 'undelivered' || req.body.SmsStatus === 'failed') {
twilio_client.messages.create({
body: "We're sorry, but we couldn't process your photo. Please try again.",
to: req.body.To,
from: TWILIO_SHORTCODE
}, function(error, message) {
if (!error) {
console.log('Processing error message sent via Twilio.');
res.send(200,'');
} else {
console.log('Could not send processing error message via Twilio: ' + error);
res.send(500);
}
});
}
// delete media instance from Twilio servers
if (req.body.SmsStatus === 'sent') {
twilio_client.messages(req.body.MessageSid).media.list(function(err, data) {
if (data.media_list.length > 0) {
data.media_list.forEach(function(mediaElement) {
twilio_client.media(mediaElement.sid).delete;
console.log("Twilio media instance deleted");
});
}
});
}
我正在使用 Twilio 的 NodeJS 模块 & API 发送附有图像的彩信(从远程 URL),我想删除在 Twilio 上创建的媒体实例我一发出消息就服务器。
我的消息发送正确,在回调中,我尝试 1) 列出当前消息的媒体实例,然后 2) 遍历这些实例并删除。问题是从 API 返回的当前消息的 mediaList 数组始终为空。
这是我的代码:
twilio_client.messages.create({
body: "Thanks for taking a photo. Here it is!",
to: req.query.From,
from: TWILIO_SHORTCODE,
mediaUrl: photo_URL,
statusCallback: STATUS_CALLBACK_URL
}, function(error, message) {
if (!error) {
twilio_client.messages(message.sid).media.list(function(err, data) {
console.log(data);
// The correct object comes back as 'data' here per the API
// but the mediaList array is empty
}
console.log('Message sent via Twilio.');
res.status(200).send('');
} else {
console.log('Could not send message via Twilio: ');
console.log(error);
res.status(500).send('');
}
});
所以,事实证明,在我尝试获取媒体列表时尝试不起作用,因为媒体实例尚不存在。
我在 statusCallback 有一个单独的小应用程序 运行(我通过上面代码中的常量 STATUS_CALLBACK_URL 提供 URL),到现在为止,只是检查了查看我尝试向用户发送 MMS 的消息是否未被 Twilio 正确处理,并通过 SMS 提醒用户注意问题。因此,我在同一个应用程序中添加了一个检查,以查看该消息是否实际上是 'sent' 给用户的,然后检查并删除了此时与该消息关联的媒体实例,它工作正常.这是我的代码:
// issue message to user if there's a problem with Twilio getting the photo
if (req.body.SmsStatus === 'undelivered' || req.body.SmsStatus === 'failed') {
twilio_client.messages.create({
body: "We're sorry, but we couldn't process your photo. Please try again.",
to: req.body.To,
from: TWILIO_SHORTCODE
}, function(error, message) {
if (!error) {
console.log('Processing error message sent via Twilio.');
res.send(200,'');
} else {
console.log('Could not send processing error message via Twilio: ' + error);
res.send(500);
}
});
}
// delete media instance from Twilio servers
if (req.body.SmsStatus === 'sent') {
twilio_client.messages(req.body.MessageSid).media.list(function(err, data) {
if (data.media_list.length > 0) {
data.media_list.forEach(function(mediaElement) {
twilio_client.media(mediaElement.sid).delete;
console.log("Twilio media instance deleted");
});
}
});
}