我似乎无法删除 Twilio 中的错误日志。需要帮助
没有看到删除选项。只有一个过滤按钮。我不是程序员。我只需要基本程序。抱歉,我想不出更多问题来达到 180 个字符。也许如果我继续问它会让我完成,
删除日志的最简单方法是以编程方式。为此,您需要来自 Twilio 控制台的帐户凭据和一个简短的代码片段。 这是删除所有消息和调用日志的 Node.js 代码:
/*************************************
Run this code to remove all user data from the message and call logs
*************************************/
require("dotenv").config();
const client = require("twilio")();
console.log(`Clearing logs for account ${process.env.TWILIO_ACCOUNT_SID}.`);
(async () => {
let messages = await client.messages.list({});
await Promise.all(
messages.map((message) => {
console.log(message.body);
return client.messages(message.sid).remove();
})
);
console.log(`Deleted ${messages.length} messages successfully.`);
const calls = await client.calls.list({});
await Promise.all(
calls.map((call) => {
return client.calls(call.sid).remove();
})
);
console.log(`Deleted ${calls.length} calls successfully.`);
})();
我在工作项目中实施的删除 Twilio 中所有内容的更好方法:
它比上面的例子有它的优点,Promise.allSettled 会执行所有的事情,即使在消息删除过程中出现一个错误。如果执行过程中发生问题,Promise.all 将停止。
并且,如果failedPromises大于0,您可以递归地调用deleteSMSLogs函数,直到没有错误为止
const twilioClient = twilio(accountSid, authToken)
export async function getMessages(opts: MessageListInstanceOptions) {
return await twilioClient.messages.list(opts)
}
const deleteSMSLogs = async ({ phoneNumber }): Promise<void> => {
try {
const smsMessagesByTo = await getMessages({ to: phoneNumber })
const smsMessagesByFrom = await getMessages({ from: phoneNumber })
const smsMessages = [...smsMessagesByTo, ...smsMessagesByFrom]
if (smsMessages.length > 0) {
const log = `[DataDeletion] ${smsMessages.length} sms messages were found by ${phoneNumber}.`
logger.info(log)
const result = await Promise.allSettled(
smsMessages.map(async (smsMessage) => {
try {
await smsMessage.remove()
} catch (err) {
throw new MessageDeletionFailedError({
message: `[DataDeletion] Deletion SMS message ${smsMessage.sid} failed. Reason: ${err.message}`,
context: {
phoneNumber,
smsSid: smsMessage.sid,
},
})
}
}),
)
const failedPromises = result.filter((p) => p.status === 'rejected') as PromiseRejectedResult[]
if (failedPromises.length > 0) {
throw new MessageDeletionFailedError({
message: '[DataDeletion] One or more message deletions failed',
context: { failedPromises },
})
}
} else {
logger.info(`[DataDeletion] Current user with ${phoneNumber} doesn't have sms logs in twilio`)
}
} catch (err) {
throw new TwilioError(err)
}
}