はじめに
みなさん、こんにちは。
今回は、本日Twilioから届いた以下のタイトルのメールについて、例の通り英語で分かりづらいので解説記事を書きました。
[Breaking Change] Enforcing HTTP Authentication for Call Recordings and MMS Media, Effective July 31, 2023
対象
Voice および MMS を使って、メディアファイル(録音データなど)を Twilio からダウンロードする際に、HTTP認証が必須になります。日本では MMS は使えませんので、主に Voice で録音をしているユーザーが対象 になります。
変更内容
現在、Voice で録音をすると、録音データはまず Twilio 上に保管されます。録音データにはそれぞれrecordingUrlが設定され、そのURLを使ってデータをダウンロードすることができます。
このとき、デフォルトの設定では認証機能が無効になっているため、URL を知っている第三者が録音データにアクセスすることが可能になっています。
そのため、URLアクセス時に HTTP 認証を強制することができるようになっており、強制するかどうかは、管理コンソール上のVoice設定画面で設定することができます。
今回の変更で、2023年7月31日(日本時間だと8月1日午前9時)以降に作成される新規アカウントについては認証は必須となり、この設定を無効(Disabled)にすることができません。
すでにお持ちのアカウントで、この設定をすでに有効(Enabled)にしている方は、今後無効にすることができなくなります。また、同じくすでにアカウントをお持ちの方で、現在設定が無効になっている方は、設定自体は7月31日になっても強制的に有効にはなりません。 ただし、セキュリティ上、有効にすることをおすすめします。
認証方式は、ID/PassのBasin認証となります。
AccountSidとAuthTokenの組み合わせでもいいですが、API KeyとAPI Secretの組み合わせを使うことをおすすめします。
影響範囲の確認
まずは現在の設定状況を確認してください。
その上で、設定が無効になっている方は、7月31日までに一度設定を有効にしていただき、現状のシステムで不具合が出ないことを確認してください。不具合が出ないようであれば、設定は有効のままにしておきます。
もし不具合が出るようであれば、ダウンロードのために認証機能を実装する必要があります。
axios を使った場合の例はこんな感じです。
try {
// Download from Twilio
const res = await axios({
method: 'GET',
url: `${recordingUrl}.wav`,
responseType: 'blob',
auth: { // Basic認証
username: TWILIO_API_KEY,
password: TWILIO_API_SECRET,
},
・・・
});
} catch (err) {
// エラー処理
・・・
}
もしくは、以下のようにrecordingUrlに認証情報を付加することもできます。
https://<TWILIO_API_KEY>:<TWILIO_API_SECRET>@<recordingUrl>.wav
まとめ
今回の仕様変更では、既存のユーザーが設定を無効のままで使い続けることは可能ではありますが、新規アカウントでは強制的に有効となりますし、セキュリティ上も好ましくないので、設定は変更しておくことをおすすめします。

