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サービスです。初期費用不要な従量課金制で、各種開発言語に対応しているため、多くのハッカソンイベントやスタートアップなどにも、ご利用いただいております。