Twilio Voiceの通話録音向け外部ストレージ機能リリースのお知らせ

May 09, 2022
執筆者
レビュー担当者

External Storage Support Programmable Voice JP

この記事はRamón Ulldemolinsこちらで公開した記事(英語)を日本語化したものです。

Twilio Voiceサービスの通話録音ファイルをお客様企業が管理するAWS S3バケット(ストレージ)に保存できるようになったことをお知らせします。

通話録音のメディアファイルは、デフォルトでTwilioクラウド内に保存されます。多くのお客様企業にとって便利な構成ですが、追加の処理、独自のストレージ、コンプライアンス等の理由から、通話録音を自社で管理するシステムに保存したいと考えるお客様もいらっしゃいます。

従来この構成を実現するためには、通話録音が完了したときに通知されるWebhookをrecordingStatusCallbackを通じて設定し、録音ファイルをダウンロードを行います。その後、独自ストレージに保存してから、Twilioクラウド上の録音ファイルを削除する必要がありました。今回の機能により、録音メディアを保存するストレージとして自社が管理するAWS S3バケットを指定することで、追加のソフトウェア開発や、各録音のダウンロードやアップロードするための追加APIリクエスト(プログラム処理)が必要なく、各録音ファイルを独自に保存できるようになりました。

本機能のリリースは、Twilioが提供するサービスにおいて、お客様のセキュリティやプライバシー要件を満たし、データ主権や各地域における規制遵守に対してコミットする姿勢の現れとも言えます。

外部ストレージ機能の仕組み

通話録音は、デフォルトでTwilioクラウドに保存されます。今回機能を利用し適切な設定を行うことで、録音メディアをAWS S3バケットに対して自動的にアップロードができ、かつ保存することが可能となりました。通話録音の外部ストレージ機能は、Twilioコンソールから有効にすることができます。(コンソール画面>Developタブ>Voice>Settings>General>Voice Recording External Storage)

対象のTwilioアカウントで通話録音の外部ストレージ機能が有効な場合、Twilio Voiceサービスは録音メディアファイルをTwilioクラウドに保存または保持せず、録音コンテンツのセキュリティとライフサイクルの管理はお客様企業の責任の元で行うこととなります。そのため、Twilioコンソールから録音メディアを再生したり、録音メディアファイルを取得したりすることはできません。ただし通話録音リソースのメタデータは、明示的に削除されるまでTwilioクラウド上で利用が可能です。

設定した外部ストレージ構成が一定期間動作していたとして、あるタイミングでアップロードと保存に失敗した場合、Twilio Voiceサービスは自動的にS3バケットへの書き込みを2時間再試行します。2時間後にTwilioは再試行を停止し、録音ファイルを該当のクラウドホスト内にキャッシュします。録音ファイルは該当のホストがアクティブな期間のみ保持される仕様のため、早期に失敗の原因を特定修正し、弊社サポートに手動による再試行を依頼いただく必要があります。

致命的なエラーが原因で外部バケットへのアップロードが失敗する場合(例: アクセス拒否、暗号化に際して利用する公開鍵が無効)、通話録音はTwilio Voiceサービスによって直ちに削除され、再試行は行われません。

外部ストレージを有効にする方法

通話録音サービスで、録音ファイルを任意のAWS S3バケットに直接自動アップロードして保存するように設定するには、以下が必要です。

  • AWS S3 バケットの URL - 選択したAWS S3バケットのURL。
  • AWSの認証情報 - バケットへの書き込み権限を持つAWS Identity and Access Management(IAM)ユーザーの認証情報(アクセスキーIDおよびシークレットアクセスキー)。

ステップ1: AWSアカウントを用意する

AWS S3バケットを作成し、そのURLを取得する

まず、S3バケットを作成します。アプリケーションに適したバケット構成を使用してください。Twilio Voiceサービスとしての特別なバケット要件はありません。次に、S3バケットのURLを取得します。仮想ホスティング形式とパス形式がありますが、仮想ホスティング形式のURLを使用することをお勧めします。

仮想ホスティング形式: https://<bucket-name>.s3.<Region>.amazonaws.com/<key-name>

パス形式:  https://s3.<Region>.amazonaws.com/<bucket-name>/<key-name>

bucket-nameはバケット名で、Regionはバケットリージョンに対応するAWSリージョンコードに置き換えるか、S3ダッシュリージョンエンドポイント(s3-Region)とするかを選択できます。key-nameは任意のパスに置き換えることができ、またパスを使用しないこともできます。

IAMユーザーを作成し、その認証情報を取得する

AWSコンソールを使ってIAMユーザーを作成し、IAMユーザーのアクセス許可の種類を[Programmatic access]( プログラムによるアクセス)に設定します。そして、Twilioがお客様の代わりにファイルをアップロードできるように、書き込み権限を付与します。なお、権限付与のアプローチとして「ポリシーをユーザーに直接アタッチすることによるアクセス権限の追加」をお勧めします。具体的には、以下のJSONスニペットをポリシードキュメントのテンプレートとして使用できます。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "UploadUserDenyEverything",
      "Effect": "Deny",
      "NotAction": "*",
      "Resource": "*"
    },
    {
      "Sid": "UploadUserAllowPutObject",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::my_bucket_name/folder/for/storage/*"
      ]
    }
  ]
}

考慮すべき点

  • スニペット下部のmy_bucket_nameは、実際のバケット名に置き換えてください。
  • /folder/for/storage/という文字列は、録音ファイルを保存させたいバケット内の特定のパスに置き換えてください(/は有効なパスであることに注意してください)。また、最後の*ワイルドカードを忘れないでください。

必要な権限を持つIAMユーザーは、後で使用するため認証情報に注釈を付けて安全な場所に保管する必要があります。認証情報には、アクセスキーIDとシークレットアクセスキーが含まれます。また、通話録音のメディアファイルをアップロードするために、書き込み権限を与えたパス(例: /folder/for/storage/)をメモしておきましょう。

ステップ2: TwilioアカウントにAWSの認証情報を追加する

Twilioアカウントに作成したばかりのAWS認証情報を追加し、AWS側での認証と通話録音のメディアファイルを保存するS3バケットへのアクセスを付与する必要があります。これは、Twilioコンソールの画面 [Voice Credentials]([AWS Credentials] タブ)から設定できます。[Create a new AWS Credential](AWSクレデンシャルを新規作成する)を押すと、ポップアップが開き、希望する管理名称を指定できます。次に、ステップ1で取得したAWS Access Key Id(AWSアクセスキーID)およびAWS Access Secret Key(AWSシークレットアクセスキー)を指定します。

aws-iam-jp

その後、新規作成されたTwilio AWS Credentialが [Credentials] ページに表示されます。CRxxのフォーマットのAWS Credential SIDをメモしてください。

aws-iam-set-up-in-twilio-jp

ステップ3: 通話録音がAWS S3にメディア保存されるように設定する

通話録音用のAWS S3ストレージを設定するには、Twilioコンソールで所定のアカウントまたはプロジェクトを開き、[Voice Settings] ペ ージ(コンソール画面>Developタブ>Voice>Settings>General>Voice Recording External Storage)に移動します。ステップ2で作成したAWS認証情報と、ステップ1で取得したAWS S3バケットURL、およびフォルダパス(該当する場合)を指定し、外部ストレージを有効にします。設定を保存すると、今後作成されるすべての通話録音は、指定されたバケットURLに保存されます。

通話録音メディアの保存場所を確認する方法

通話録音リソースの構造が更新され、新しく用意されたmediaUrlプロパティに、通話録音リソースに関連付けられたメディアファイルのURLが含まれるようになりました。外部ストレージに保存される場合、このプロパティにはメディアファイルの完全なURLが記載されます。RecordingStatusCallbackの既存プロパティRecordingUrlにも、Twilioクラウドにホストされている録音メディアの所在、または外部ストレージに保存されている場合のURLのいずれかが格納されます。

また、通話録音の詳細ログページには、通話録音の外部ストレージ機能が有効になっており録音メディアが外部に保存されているため、Twilioから録音メディアを再生できない旨の免責事項が表示されるようになります。

音声サービスの力を解き放つ

Twilioでは、私たちを密接に結びつける音声サービスの力を信じており、音声インタラクションがグローバル経済における人間関係の強化に役立つよう、様々な施策を講じています。私たちは、お客様一人ひとりが大切にされ理解されていると感じられるような楽しい音声サービス体験を、すべての組織が簡単に作り出せるようにしたいと考えています。

Twilio Voiceサービスの通話録音機能は、企業・組織のお客様が通話を最大限に活用し、事業成長、コンプライアンス、品質保証、会話分析による顧客理解を促進し、データを完全にコントロールできるよう支援します。

コミュニケーションの未来を創造しましょう!