Borrar grabaciones de llamadas de empresa por duración

En este tutorial, usted aprenderá cómo obtener una lista de grabaciones de llamadas por una duración. Esto sería útil si usted tiene un montón de llamadas que son muy cortos (< 30 segundos) que se pueden eliminar. Esto ayudaría a la hora de generar informes con el fin de eliminar las llamadas que tienen poca o ninguna importancia para el informe. O, puede utilizar esto para eliminar grabaciones de llamadas con el fin de ahorrar dinero en los archivos de llamadas.

La API de grabación de llamadas le permite recuperar todas las grabaciones de llamadas y permite filtrar por fecha de llamada, extensión, caller_id, dirección (entrante o saliente) y más. Eche un vistazo a la referencia de la API para ver todos los filtros posibles.

En este ejemplo, consultaremos las grabaciones del último mes y eliminaremos las llamadas que duren menos de 30 segundos. Utilizaremos un script de Python para consultar las grabaciones de las llamadas y, para cada una de ellas, la eliminaremos.

Python es el lenguaje utilizado para crear el siguiente ejemplo; sin embargo, puedes utilizar cualquier lenguaje con el que te sientas más cómodo. En este ejemplo se utiliza la siguiente biblioteca de Python: este ejemplo.

Requisitos previos

Antes de comenzar, deberás tener una cuenta de Vonage Developer. Si no tienes una cuenta de Vonage Developer, usa esto guía para configurar y crear su Account.

Una vez que tenga una Account, tendrá que hacer lo siguiente siguiendo estas guías:

Para este ejemplo, tendrás que suscribirte a la Grabación de llamadas CSP(India) API.

Autenticación

Una vez creada la aplicación y realizada la suscripción a la API de grabación de llamadas, ahora tendrás que iniciar sesión con tus credenciales de Vonage Business Communications. Esta aplicación de ejemplo utiliza la biblioteca «Requests» para llamar a la /api/accounts/ API. Echa un vistazo a la Guía para realizar una solicitud API Para más información.

A continuación, crearemos una función que solicite el /api/accounts API para generar un token de acceso.

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

Para ejecutar esta función, tendrá que pasar lo siguiente:

  • USERNAME - Nombre de usuario de Vonage Business Communications. Asegúrate de añadir @vbc.prod al nombre de usuario. firstname.lastname@vbc.prod.
  • PASSWORD - Contraseña de Vonage Business Communications.
  • CLIENT_ID - El ID de cliente de tu aplicación de Vonage Developer.
  • SECRET - El secreto de tu aplicación Vonage Developer.

Tras ejecutar esta función, deberías ver la siguiente respuesta:

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

Obtener grabaciones de llamadas

Antes de llamar a la API company_call_recordings, tendremos que pasar una cadena de fecha de un mes en el pasado.

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

Aquí, obtenemos la fecha actual utilizando datetime.datetime.now(), y luego utiliza datetime.timedelta() para crear una fecha que sea days en el pasado. Aquí utilizamos 30. A continuación, restaremos la fecha actual de la fecha de hace 30 días, para obtener nuestra fecha. Por último, utilizaremos strftime() para convertir el objeto fecha en una cadena. Hemos establecido la hora en 00:00:00+0000lo que significa que obtendremos la fecha a medianoche UTC. Antes de que podamos pasar la fecha a la API de grabaciones de llamadas, necesitamos urlencode la fecha utilizando urllib.parse.quote_plus().

A continuación, realizaremos una solicitud a la API de grabación de llamadas y utilizaremos el access_token devuelto por el get_token() función. Esto devolverá una respuesta JSON con las grabaciones de las llamadas. A continuación, introduciremos la fecha encoded_date en esta función

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

En este caso, llamamos al company_call_recordings_india/v1/api/ y pasando los siguientes parámetros:

  • account_id - El ID de account de Vonage Business Communications. Puedes utilizar self para referirse a la cuenta del usuario autenticado.
  • page - El número de páginas a solicitar.
  • page_size - El tamaño de página solicitado.
  • order - El orden de las grabaciones de llamadas devueltas
  • start:gte - Filtrar registros por fecha de inicio (mayor o igual a)

También podríamos pasar en start:lte que devolvería registros anteriores a la fecha dada.

Una vez que tengamos la lista de grabaciones de llamadas, haremos un bucle con cada grabación y obtendremos la duración de la llamada. Si la duración de la llamada es inferior o igual a 30 segundos, la eliminaremos. Antes de hacer esto, asegúrate de que tienes una copia de seguridad de las grabaciones. Echa un vistazo al archivo Borrar grabaciones por fecha para guardar grabaciones en Amazon S3.

Eliminar grabaciones de llamadas

El get_company_call_recordings() La función devuelve una lista de grabaciones del Account. A continuación, crearemos una función para eliminar la grabación por su 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

Esta función toma la grabación del call_id y borrará la grabación de la llamada. Para este ejemplo, estamos configurando account_id a self.

A continuación, vamos a hacer un bucle con las grabaciones de llamadas del get_company_call_recordings() que escribimos y obtener las grabaciones call_id y duration. Pasaremos en call_id en nuestro delete_call_recording() para borrar la grabación.

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

Aquí tenemos la grabación id del recordings y, a continuación, pasar ese call_id a la lista delete_call_recording función. Si tiene éxito, la respuesta será una respuesta 204 vacía.

Tarea CRON

El último paso consiste en eliminar las grabaciones de llamadas cada semana mediante una tarea CRON. De esta forma, no tendremos que ejecutar estas funciones manualmente. Un CRON es una forma de ejecutar scripts periódicamente a horas, fechas o intervalos fijos. Puedes crear un trabajo CRON localmente ejecutando primero crontab -e en un sistema basado en OS X o Linux.

Para una máquina Windows:

  • Conectarse con una Account privilegiada, por ejemplo Administrador
  • Vaya a Inicio > Panel de control > Sistema y seguridad > Herramientas administrativas > Programador de tareas
  • En el panel de la derecha, haz clic en «Crear tarea básica».

Nuestra tarea CRON se ejecutará cada 30 días. Y así es como será la tarea CRON:

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

El delete_vbc_recordings_by_duration.py es un script que borrará las grabaciones de las llamadas de menos de 30 segundos de duración. Eche un vistazo a https://crontab-generator.org/ para crear tu propia tarea CRON.

Conclusión

Aquí, hemos mostrado cómo crear un script python que se ejecuta como un trabajo CRON para eliminar grabaciones de llamadas VBC por su duración. El script puede ser personalizado para adaptarse a sus necesidades. Si tiene muchas llamadas de 1 minuto de duración, podrá actualizar el script según sea necesario.