如何删除 Twilio 日志?

问题描述 投票:0回答:2

我似乎无法删除 Twilio 中的错误日志。需要帮助

没有看到删除选项。只有一个过滤按钮。我不是程序员。我只需要基本程序。抱歉,我想不出更多问题来达到 180 个字符。也许如果我继续问它会让我完成,

twilio
2个回答
0
投票

删除日志的最简单方法是以编程方式。为此,您需要来自 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.`);
})();

0
投票

我在工作项目中实施的删除 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)
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.