LoginSignup
4
1

More than 1 year has passed since last update.

Twilio上に溜まった録音データを一括削除

Last updated at Posted at 2020-03-03

2023年5月1日を持ちまして、株式会社KDDIウェブコミュニケーションズのTwilioリセール事業が終了したため、本記事に記載されている内容は正確ではないことを予めご了承ください。

はじめに

みなさん、こんにちは。
KDDIウェブコミュニケーションズのTwilio事業部エバンジェリストの高橋です。

今回は、Twilio上に保存されている録音データをプログラムを使って一括削除する方法をご紹介します。なお、削除にあたっては、日付での範囲指定ができるようにしてあります。

通話録音ってどんなもの?

Twilioには、通話録音の機能があります。録音データは、mp3もしくはWAV形式でTwilio上に保存されます。
この通話録音は通常の通話料に加えて、以下の追加料金がかかります。

  • 録音料金:0.38円/分
  • ストレージ使用料:10,000分まで無料、10,001分からは0.1円/分

録音料金はともかく、ストレージの使用料については、毎月の平均保存時間(分)に対して課金されるので、不要な録音データに関しては定期的に削除していくと無駄なコストを押さえられます。

ハンズオン

以下のGitHubにプログラムを用意しました。
https://github.com/mobilebiz/twilio-remove-recordings

使用するライブラリなど

  • node 10.8.0 以上
  • dotenv 8.2.0
  • moment 2.24.0
  • twilio 3.39.5

インストール

git clone https://github.com/mobilebiz/twilio-remove-recordings.git
cd twilio-remove-recordings
npm install
cp .env.sample .env

ここまでできたら、.envをエディタで開き、TwilioのAccountSidとAuthTokenを書き込みます。
AccountSidとAuthTokenは こちら で調べられます。
次に、.envのSTART_DATEとEND_DATEに削除したい日付を範囲指定します。日付は2015-01-01のように指定してください。
<注意>
日付を指定し間違えると、予期しないデータを削除することになりますので注意してください。

テスト

.envファイルを編集したら、まずはパラメータをテストしてください。

npm test

実行

エラーがなければ実行します。

npm start

解説

本プログラムを以下のようになっています。

/**
 * Remove recordings with date range.
 *  
 */
'use strict';

require('dotenv').config();
const accountSid = process.env.TWILIO_ACCOUNT_SID;
const authToken = process.env.TWILIO_AUTH_TOKEN;
const client = require('twilio')(accountSid, authToken);
const moment = require('moment');

const START_DATE = moment(process.env.START_DATE);      // Range start
const END_DATE = moment(process.env.END_DATE);          // Range end

const delLoop = (targetDate => {
    let _targetDate = targetDate || START_DATE;

    // Extract data from one day.
    client.recordings.list({
        dateCreated: _targetDate.toDate()
    })
    .then(recordings => {
        // Remove the retrieved list.
        recordings.forEach(async r => {
            await client.recordings(r.sid).remove();
            console.log(`${r.sid} ${r.dateCreated} deleted.`);
        });

        // If the end date has not been reached, call it recursively.
        if (_targetDate.isBefore(END_DATE)) {
            _targetDate = _targetDate.add(1, 'days');
            delLoop(_targetDate);
        }
    })
    .catch(err => {
        console.log(err);
    })
});

delLoop();

START_DATEを起点に、一日づつ録音データをリストアップし、中身を1件ずつ削除しています。async/awaitで非同期対応をしていますが、極稀にTwilio側からAPIコールのエラーが戻ることがあります。
そのようなときには、同じ日付範囲で再度プログラムを実行することで取りこぼしたデータも確実に削除することができます。

まとめ

一度削除してしまった録音データは復活できません。
日付範囲指定はくれぐれも間違えないようにしましょう。
また、本プログラムを利用したことによる責任は、当方では負いかねますので予めご了承ください。


Twilio(トゥイリオ)とは

https://cloudapi.kddi-web.com
Twilioは音声通話、メッセージング(SMS/チャット)、ビデオなどの 様々なコミュニケーション手段をアプリケーションやビジネスへ容易に組み込むことのできるクラウドAPIサービスです。初期費用不要な従量課金制で、各種開発言語に対応しているため、多くのハッカソンイベントやスタートアップなどにも、ご利用いただいております。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1