Supprimer les enregistrements d'appels de l'entreprise / les enregistrements d'appels à la demande par durée

Dans ce tutoriel, vous apprendrez comment obtenir une liste d'enregistrements d'appels par durée. Cela peut être utile si vous avez beaucoup d'appels qui sont très courts (< 30 secondes) et qui peuvent être supprimés. Cela peut être utile lors de la création de rapports afin de supprimer les appels qui n'ont que peu ou pas d'importance pour le rapport. Vous pouvez également l'utiliser pour supprimer des enregistrements d'appels afin d'économiser de l'argent sur les archives d'appels.

L'API d'enregistrement des appels vous permet de récupérer tous les enregistrements d'appels et de les filtrer par date d'appel, extension, ID de l'appelant, direction (entrante ou sortante) et plus encore. Veuillez consulter la référence de l'API pour voir tous les filtres possibles.

Dans cet exemple, nous allons rechercher les enregistrements du dernier mois et supprimer les appels de moins de 30 secondes. Nous utiliserons un script python pour rechercher les enregistrements d'appels et nous supprimerons chaque enregistrement.

Python est le langage utilisé pour construire l'exemple suivant, mais vous pouvez utiliser le langage avec lequel vous vous sentez le plus à l'aise. La bibliothèque Python suivante est utilisée dans cet exemple.

Conditions préalables

Avant de commencer, vous devez avoir un Account de développeur Vonage. Si vous n'avez pas de compte Vonage Developer, veuillez utiliser ce formulaire. guide pour configurer et créer votre Account.

Après avoir créé un Account, vous devrez effectuer les opérations suivantes à l'aide de ces guides :

Pour cet exemple, vous devez vous abonner à l'application API d'enregistrement des appels.

Authentification

Après avoir créé une application et souscrit à l'API d'enregistrement des appels, vous devez maintenant vous connecter à l'aide de vos informations d'identification Vonage Business Communications. Cet exemple d'application utilise la bibliothèque Requests pour appeler la fonction /api/accounts/ API. Consultez l Guide des demandes d'API pour plus de détails.

Ensuite, nous créerons une fonction qui demandera à l'utilisateur d'utiliser la fonction /api/accounts pour générer un jeton d'accès.

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()

Pour exécuter cette fonction, vous devrez fournir les éléments suivants :

  • USERNAME - Nom d'utilisateur de Vonage Business Communications. Veillez à ajouter @vbc.prod au nom d'utilisateur. firstname.lastname@vbc.prod.
  • PASSWORD - Mot de passe Vonage Business Communications.
  • CLIENT_ID - L'identifiant client de votre application Vonage Developer.
  • SECRET - Le secret de votre application Vonage Developer.

Après avoir exécuté cette fonction, vous devriez obtenir la réponse suivante :

{'access_token': 'abc123-xxxxx-xxxxx',
'expires_in': 9999,
'refresh_token': 'def456-xxxx-xxxx',
'scope': 'default',
'token_type': 'Bearer'}

Obtenir des enregistrements d'appels

Avant d'appeler l'API "company_call_recordings", nous devons lui transmettre une chaîne de date correspondant à un mois dans le passé.

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'))

Ici, nous obtenons la date du jour en utilisant datetime.datetime.now()puis utiliser datetime.timedelta() pour créer une date qui est days dans le passé. Ici, nous utilisons 30. Ensuite, nous soustrayons la date du jour de la date des 30 derniers jours pour obtenir notre date. Enfin, nous utilisons strftime() pour convertir l'objet date en chaîne de caractères. Nous avons fixé l'heure à 00:00:00+0000ce qui signifie que nous obtenons la date à minuit UTC. Avant de pouvoir transmettre la date à l'API des enregistrements d'appels, nous devons l'encoder dans l'url à l'aide de la fonction urllib.parse.quote_plus().

Ensuite, nous demanderons l'API d'enregistrement des appels et utiliserons la fonction access_token qui a été renvoyée par le get_token() fonction. Elle renvoie une réponse JSON contenant les enregistrements des appels. Nous transmettrons ensuite la date encoded_date dans cette fonction

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/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

Ici, nous appelons le company_call_recordings/v1/api/ et en transmettant les paramètres suivants :

  • account_id - L'Account ID de Vonage Business Communications. Vous pouvez utiliser self pour faire référence au compte de l'utilisateur authentifié.
  • page - Le nombre de pages à demander.
  • page_size - La taille de la page demandée.
  • order - L'ordre des enregistrements des appels renvoyés
  • start:gte - Filtrer les enregistrements par date de début (supérieure ou égale)

Nous pourrions également passer en start:lte qui renverrait les enregistrements inférieurs à la date donnée.

Une fois que nous avons obtenu une liste d'enregistrements d'appels, nous parcourons en boucle chaque enregistrement et obtenons la durée de l'appel. Si la durée de l'appel est inférieure ou égale à 30 secondes, nous le supprimons. Avant de procéder à cette opération, assurez-vous de disposer d'une sauvegarde des enregistrements. Jetez un coup d'œil au fichier Supprimer des enregistrements par date pour sauvegarder des enregistrements sur Amazon S3.

Supprimer des enregistrements d'appels

Les get_company_call_recordings() renvoie une liste des enregistrements du compte. Ensuite, nous allons créer une fonction pour supprimer l'enregistrement par son identifiant.

def delete_call_recording(token, call_id, account_id="self"):
  url = "https://api.vonage.com/t/vbc.prod/call_recording/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

Cette fonction prend l'enregistrement de la call_id et supprimera l'enregistrement de l'appel. Pour cet exemple, nous définissons account_id à self.

Ensuite, nous allons parcourir en boucle les enregistrements d'appels provenant de l'application get_company_call_recordings() que nous avons écrite et obtenir les enregistrements call_id et duration. Nous passerons en call_id dans notre delete_call_recording() pour supprimer l'enregistrement.

for recording in recordings:
  duration = int(recording["duration"])
  call_id = recording["id"]
  if duration <=30:
    response = delete_call_recording(access_token, call_id)

Ici, nous obtenons l'enregistrement id de la recordings puis transmet ce numéro d'appel à la fonction delete_call_recording fonction. En cas de succès, la réponse sera une réponse 204 vide.

Supprimer des enregistrements d'appels à la demande

La suppression des enregistrements d'appels à la demande sera presque identique à la suppression des enregistrements d'appels, mais nous utiliserons l'option de suppression des enregistrements d'appels à la demande. call_recordings API.

Comme précédemment, nous devons dresser la liste de tous les enregistrements à la demande après une date donnée. Tout d'abord, nous devons obtenir une liste d'enregistrements d'appels à la demande à l'aide de cette fonction.

on_demand_recordings = []
def on_demand_call_recordings(token, account_id="self", user_id="self", order="start%3ADESC",page=1, page_size=10, start_date=None, end_date=None):
  url = "https://api.vonage.com/t/vbc.prod/call_recording/v1/api/accounts/{}/users/{}/call_recordings?order={}&page={}&page_size={}".format(account_id, user_id, order, page, page_size)
  if start_date:
    url = url + "&start:gte="+start_date

  if end_date:
    url = url + "&start:lte="+end_date

  headers = {
    'Accept': 'application/json',
    'Authorization': 'Bearer {}'.format(token),
  }

  response = requests.request("GET", url, headers=headers).json()
  if "_embedded" in response:
    on_demand_recordings.extend(response["_embedded"]["recordings"])

  if "total_pages" in response:
    if page < response["total_pages"]:
      page = page + 1
      on_demand_call_recordings(token, account_id, user_id, order,page, page_size, start_date, end_date)

  return on_demand_recordings

Ici, nous appelons le call_recording et en passant le paramètre suivant :

  • account_id - L'Account ID de Vonage Business Communications. Vous pouvez utiliser self pour faire référence au compte de l'utilisateur authentifié.
  • user_id - L'identifiant de l'utilisateur. Vous pouvez utiliser self pour faire référence à l'utilisateur authentifié.
  • page - Le nombre de pages à demander.
  • page_size - La taille de la page demandée.
  • order - L'ordre des enregistrements des appels renvoyés
  • start:gte - Filtrer les enregistrements par date de début (supérieure ou égale)

Ensuite, nous allons générer une date de 30 jours dans le passé et l'utiliser pour le start_date paramètre.

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'))

Ensuite, nous écrirons une fonction qui appellera la fonction company_call_recordings API pour supprimer l'enregistrement en call_id.

def delete_on_demand_recording(token, call_id, account_id="self", user_id="self"):
  url = "https://api.vonage.com/t/vbc.prod/call_recording/v1/api/accounts/{}/users/{}/call_recordings/{}".format(account_id, call_id)

  headers = {
    'Accept': 'application/json',
    'Authorization': 'Bearer {}'.format(token)
  }

  response = requests.request("DELETE", url, headers=headers)
  return response

Nous allons ensuite parcourir les enregistrements en boucle et écrire une fonction pour supprimer l'enregistrement de l'appel à la demande à l'aide de la fonction call_id.

access_token = get_token()["access_token"]
recordings = on_demand_call_recordings(access_token, start_date=encoded_date)

for recording in recordings["_embedded"]["recordings"]:
  call_id = recording["id"]
  duration = int(recording["duration"])
  if duration <=30:
    response = delete_on_demand_recording(access_token, call_id)
    print(response)

Emploi CRON

La dernière étape consiste à supprimer les enregistrements d'appels chaque semaine à l'aide d'une tâche CRON. De cette manière, nous n'aurons pas à exécuter ces fonctions manuellement. Un CRON permet d'exécuter des scripts périodiquement à des heures, des dates ou des intervalles fixes. Vous pouvez créer une tâche CRON localement en exécutant d'abord la commande crontab -e sur un système OSX/Linux.

Pour une machine Windows :

  • Se connecter avec un compte privilégié, par exemple Administrateur
  • Allez dans Démarrer > Panneau de configuration > Système et sécurité > Outils d'administration > Planificateur de tâches
  • Dans le panneau de droite, cliquez sur Créer une tâche de base

Notre tâche CRON sera exécutée tous les 30 jours. Voici à quoi ressemblera la tâche CRON :

* * 30 * * delete_recordings.py >/dev/null 2>&1

Les delete_vbc_recordings_by_duration.py est un script qui supprime à la fois les enregistrements d'appels et les enregistrements d'appels à la demande pour les appels d'une durée inférieure à 30 secondes. Jetez un coup d'œil à https://crontab-generator.org/ pour créer votre propre tâche CRON.

Conclusion

Ici, nous avons montré comment créer un script python qui s'exécute comme une tâche CRON pour supprimer les enregistrements d'appels VBC par sa durée. Le script peut être personnalisé pour répondre à vos besoins. Si vous avez de nombreux appels d'une durée d'une minute, vous pourrez mettre à jour le script en fonction de vos besoins.