通話時間による通話録音の削除
このチュートリアルでは、通話時間別に通話録音リストを取得する方法について説明します。これは、削除可能な非常に短い(30秒未満)通話がたくさんある場合に便利です。これは、レポートを作成する際に、レポートにとってほとんど重要でない通話を削除するのに役立ちます。または、通話アーカイブにかかる費用を節約するために、通話録音を削除するために使用することもできます。
Call Recording APIを使用すると、すべての通話録音を取得し、通話日、内線番号、発信者ID、方向(着信または発信)などでフィルタリングすることができます。可能なすべてのフィルタを表示するには、apiリファレンスを参照してください。
この例では、直近1ヶ月の録音をクエリーし、30秒未満の通話を削除する。pythonスクリプトを使用して通話の録音をクエリし、録音ごとに録音を削除します。
Pythonは、以下の例を構築するために使用される言語ですが、あなたが最も使いやすい言語を使用することができます。以下のPythonライブラリーは この例.
前提条件
始める前に、Vonage Developerアカウントが必要です。Vonage Developerアカウントをお持ちでない場合は、こちらをご利用ください。 ガイド をクリックしてアカウントを作成します。
Accountを取得したら、以下のガイドに従って以下のことを行う必要があります:
この例では、Subscribeを 通話録音CSP(インド)API.
認証
アプリケーションを作成し、通話録音APIにサブスクライブした後、Vonage Business Communicationsの認証情報を使用してログインする必要があります。このサンプルアプリケーションでは、Requests ライブラリを使用して /api/accounts/ API。をチェックしてください。 APIリクエストガイド をご覧ください。
次に、この関数に /api/accounts APIを使用してアクセストークンを生成します。
def get_token():
url = "https://api.vonage.com/token"
payload = 'grant_type=password&username={}&password={}&client_id={}&client_secret={}'.format(USERNAME, PASSWORD, CLIENT_ID, SECRET)
headers = {
'Content-Type': 'application/x-www-form-urlencoded'
}
response = requests.request("POST", url, headers=headers, data = payload)
return response.json()
この関数を実行するには、以下を渡す必要がある:
USERNAME- Vonage Business Communicationsのユーザー名。必ず@vbc.prodをユーザー名に追加する。firstname.lastname@vbc.prod.PASSWORD- Vonage Business Communicationsのパスワード。CLIENT_ID- Vonage Developer アプリケーションのクライアント ID。SECRET- Vonage Developerアプリケーションの秘密。
この関数を実行すると、次のような応答が表示されるはずだ:
{'access_token': 'abc123-xxxxx-xxxxx',
'expires_in': 9999,
'refresh_token': 'def456-xxxx-xxxx',
'scope': 'default',
'token_type': 'Bearer'}
通話記録の取得
company_call_recordings APIをコールする前に、過去1ヶ月の日付文字列を渡す必要がある。
import datetime
import urllib.parse
today = datetime.datetime.now()
last_week = datetime.timedelta(days = 30)
date_diff = today - last_week
encoded_date = urllib.parse.quote_plus(date_diff.strftime('%Y-%m-%dT00:00:00+0000'))
ここでは datetime.datetime.now()を使用する。 datetime.timedelta() 関数を使って days を使用している。ここでは 30.次に、30日前の日付から現在の日付を引いて、日付を求める。最後に strftime() で日付オブジェクトを文字列に変換している。時刻を 00:00:00+0000つまり、UTC午前0時の日付を取得していることになる。
通話録音APIに日付を渡す前に、次のようにして日付をURLエンコードする必要があります。 urllib.parse.quote_plus().
次に、通話録音APIをリクエストして access_token から返された get_token() 関数を使用します。この関数は、通話録音のJSONレスポンスを返します。次に、日付 encoded_date この関数に
import requests
comany_recordings = []
def company_call_recordings(token, start_date, account_id="self",order="asc", page_size=10, page=1):
url = "https://api.vonage.com/t/vbc.prod/call_recording_india/v1/api/accounts/{}/company_call_recordings?order={}&page_size={}&page={}&start:gte={}".format(account_id, order, page_size, page, start_date)
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {}'.format(token),
}
response = requests.request("GET", url, headers=headers).json()
if "_embedded" in response:
comany_recordings.extend(response["_embedded"]["recordings"])
if "total_pages" in response:
if page < response["total_pages"]:
page = page + 1
company_call_recordings(token, start_date, account_id, order, page_size, page)
return comany_recordings
ここでは company_call_recordings_india/v1/api/ で、以下のパラメータを渡す:
account_id- Vonage Business CommunicationsのアカウントIDです。を使用することができます。self認証されたユーザーのアカウントを参照する。page- リクエストするページ数。page_size- 要求されたページサイズ。order- 返された通話記録の順序start:gte- 開始日(以上)によるレコードのフィルタリング
でパスすることもできる。 start:lte これは、指定された日付より前のレコードを返す。
通話録音のリストを取得したら、それぞれの録音をループし、通話時間を取得する。通話時間が30秒以下であれば、削除する。これを行う前に、録音のバックアップがあることを確認してください。その前に 日付による録画の削除 の使用例では、録画をAmazon S3に保存します。
通話録音の削除
について get_company_call_recordings() 関数はAccountから録画のリストを返します。次に、録画IDによって録画を削除する関数を作成します。
def delete_call_recording(token, call_id, account_id="self"):
url = "https://api.vonage.com/t/vbc.prod/call_recording_india/v1/api/accounts/{}/company_call_recordings/{}".format(account_id, call_id)
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {}'.format(token)
}
response = requests.request("DELETE", url, headers=headers)
return response
この機能は call_id パラメータを設定し、通話録音を削除します。この例では account_id への self.
次に、通話録音をループさせてみましょう。 get_company_call_recordings() 関数を作成し、録画データを取得する。 call_id そして duration.で通過する。 call_id 私たちの delete_call_recording() 機能を使って録音を削除します。
for recording in recordings:
duration = int(recording["duration"])
call_id = recording["id"]
if duration <=30:
response = delete_call_recording(access_token, call_id)
ここで、録音を入手した。 id より recordings リストを作成し、そのcall_idを delete_call_recording 関数を使用する。成功すれば、空の204レスポンスが返される。
CRONジョブ
最後のステップは、CRONジョブを使って毎週通話記録を削除することである。こうすることで、これらの機能を手動で実行する必要がなくなる。CRONとは、決まった日時や間隔で定期的にスクリプトを実行する方法です。
ローカルでCRONジョブを作成するには、最初に crontab -e OSX/Linuxベースのシステムで。
Windowsマシンの場合:
- 管理者などの特権アカウントでログオンする。
- スタート」→「コントロールパネル」→「システムとセキュリティ」→「管理ツール」→「タスクスケジューラ」を選択。
- 右のパネルで「基本タスクの作成」をクリックする。
CRONジョブは30日ごとに実行されます。CRONジョブは以下のようになります:
について delete_vbc_recordings_by_duration.py は、30秒未満の通話の録音を両方とも削除するスクリプトです。
以下をご覧ください。 https://crontab-generator.org/ をクリックして、独自のCRONジョブを作成してください。
結論
ここでは、CRONジョブとして実行し、VBC Call Recordingを期間ごとに削除するpythonスクリプトの作成方法を紹介します。スクリプトはニーズに合わせてカスタマイズできます。1分間の通話がたくさんある場合、必要に応じてスクリプトを更新することができます。