Supprimer les enregistrements d'appels de l'entreprise par date

Dans ce tutoriel, vous apprendrez comment supprimer des enregistrements d'appels à une date donnée. Cela vous permettra de réduire les coûts de stockage des enregistrements d'appels dont vous n'avez peut-être pas besoin. Cela peut également s'avérer utile si vous souhaitez supprimer des enregistrements à des fins de sécurité. L'API des enregistrements d'appels vous permet de récupérer tous les enregistrements d'appels et de les filtrer en fonction de la durée de l'appel, de l'extension, de l'identifiant de l'appelant, de la direction (entrante ou sortante) et d'autres critères encore. Veuillez consulter la référence de l'API pour voir tous les filtres possibles.

Dans cet exemple, nous allons rechercher les enregistrements des 7 derniers jours. 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 êtes 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 Enregistrement des appels CSP(Inde) API.

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': 99999,
'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 située dans le passé. Pour cet exemple, nous allons créer une date qui se situe 7 jours dans le passé

import datetime
import urllib.parse
today = datetime.datetime.now()
last_week = datetime.timedelta(days = 7)
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 7. Ensuite, nous soustrayons la date actuelle de la date de 7 jours dans le passé, 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_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

Ici, nous appelons le company_call_recordings_india/v1/api/ 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é.
  • 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 allons parcourir en boucle chaque enregistrement pour le supprimer. Avant de procéder à cette opération, assurez-vous de disposer d'une sauvegarde des enregistrements. Jetez un coup d'œil au fichier Sauvegarder les enregistrements d'appels sur Amazon S3 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_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

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. Nous passerons en call_id dans notre delete_call_recording() pour supprimer l'enregistrement.

for recording in recordings["_embedded"]["recordings"]:
  call_id = recording["id"]
  response = delete_call_recording(access_token, call_id)
  print(response)

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.

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 job CRON s'exécutera tous les 7 jours. Voici à quoi ressemblera la tâche CRON :

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

Les delete_vbc_recordings.py est un script qui supprimera les deux enregistrements d'appels datant de plus de 7 jours. 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 simple script de travail CRON pour supprimer les enregistrements d'appels VBC tous les 7 jours. Vous pouvez jeter un coup d'œil à ce script liste pour voir l'exemple de code complet.