Enregistrer les journaux d'appels dans une source de données externe
Dans ce tutoriel, nous verrons comment enregistrer vos journaux d'appels dans une source de données externe afin de mieux comprendre vos données. Il existe de nombreux endroits où les journaux d'appels peuvent être sauvegardés (google sheets, excel, etc.). Pour cet exemple, nous allons enregistrer nos journaux d'appels dans une liste JSON, qui peut être utilisée comme source de données pour Tableau.
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 Reports API.
Authentification
Après avoir créé une application et souscrit à l'API Reports, vous devez maintenant vous connecter à l'aide de vos identifiants Vonage Business Communications. Consultez la page Guide des demandes d'API pour plus de détails.
Ensuite, nous créerons une fonction qui demandera à l'utilisateur d'utiliser la fonction /token 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.prodau 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"
}
API sur les journaux d'appels
L'étape suivante consiste à extraire la liste des appels de l'api des journaux d'appels. Nous pouvons utiliser cette fonction pour retourner une liste d'appels par date de début et date de fin. S'il y a plus de résultats que le nombre d'éléments que nous avons demandé en utilisant le paramètre page_size, cette fonction récupérera également ces autres pages.
results = []
def get_reports(token, account_id, start_date, end_date, order="asc", page_size=10, page=1):
url = "https://api.vonage.com/t/vbc.prod/reports/v1/accounts/{}/call-logs?start:gte={}&start:lte={}&page_size={}&page={}&order={}".format(account_id, start_date, end_date, page_size, page, order)
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer {}'.format(token),
}
response = requests.request("GET", url, headers=headers).json()
if "_embedded" in response:
results.extend(response["_embedded"]["call_logs"])
if page < response["total_page"]:
page = page + 1
get_reports(token, account_id, start_date, end_date, page_size=page_size, page=page)
return results
Ensuite, nous devons créer une date de début et une date de fin que nous transmettrons à la fonction. La date de début sera un jour dans le passé et la date de fin sera une minute avant minuit le jour en cours.
import datetime
from datetime import timedelta
today = datetime.datetime.now()
today_str = today.strftime('%Y-%m-%d 00:00:00')
yesterday = today - timedelta(days = 1)
yesterday_str = yesterday.strftime('%Y-%m-%d 23:59:59')
access_token = get_token()["access_token"]
reports = get_reports(access_token,account_id={YOUR_ACCOUNT_ID}, start_date=today_str, end_date=yesterday_str)
Nous appelons ensuite le get_reports() pour renvoyer une liste d'appels entre ces 2 dates. Ensuite, nous devrons créer un fichier JSON contenant la liste de ces logs.
import json
def write_json(data, filename='data.json'):
with open(filename,'w') as f:
return json.dump(data, f)
def read_json(filename='data.json'):
try:
with open(filename) as json_file:
return json.load(json_file)
except IOError:
return []
data = read_json()
data.extend(reports)
write_json(data)
Ici, nous créons 2 fonctions pour lire et écrire dans un fichier JSON. Nous lisons ensuite notre fichier JSON. Si le fichier n'existe pas, nous retournons une liste vide([]). Ensuite, nous devons ajouter nos journaux d'appels dans le fichier JSON à l'aide de la fonction extend() . Enfin, nous devons charger cette liste dans le fichier JSON. Pour chaque jour où nous exécutons cette fonction, nous ajouterons les derniers journaux d'appels dans le fichier JSON.
Emploi CRON
La dernière étape consiste à exécuter notre scénario chaque jour à l'aide d'une tâche CRON. De cette manière, nous n'aurons pas à exécuter ces fonctions manuellement. Un CRON est un moyen 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 ressemblera à ceci :
Cette tâche sera exécutée tous les jours à minuit. Pour créer votre propre job CRON, consultez le site https://crontab-generator.org/.
Importer dans Tableau
Pour cet exemple, nous utiliserons Tableau pour générer un tableau de bord à partir des données de notre journal d'appels. Il ressemblera à ceci :

Tout d'abord, dans Tableau, cliquez sur Connect To Data et sous To a file, cliquez JSON file
Ensuite, localisez le fichier JSON qui contient les journaux d'appels. Vous pouvez éventuellement sélectionner quelques colonnes. Naviguez ensuite vers Sheet 1 pour consulter vos données.
Ensuite, rendez-vous à l'adresse suivante Sheet 1 et dans le Folders cliquez avec le bouton droit de la souris sur la section End et définir le paramètre Change Data Type à Date.

Ensuite, faites glisser le End dans la section Colonnes. Ensuite, cliquez avec le bouton droit de la souris sur l'élément End et passer au paramètre Day.
Ensuite, faites glisser le Count sous le paramètre Measured Names à la section des lignes. Vous devriez alors voir apparaître un graphique linéaire du nombre d'appels par jour.
Comme notre job CRON s'exécute tous les jours, notre tableau de bord Tableau se mettra à jour avec les nouveaux journaux d'appels. N'oubliez pas de sauvegarder le JSON au même endroit que celui où vous avez ajouté la source de données pour Tableau.
Conclusion
Dans cet exemple, nous avons vu comment créer une fonction qui renvoie une liste de journaux d'appels pour un jour donné. En transférant ces données dans un tableau de bord comme Tableu, vous pourrez aider votre équipe à analyser votre trafic d'appels. Notre tableau de bord ne montre que le nombre d'appels chaque jour, mais vous pouvez le personnaliser pour montrer le nombre d'appels entrants / sortants, le coût moyen par jour, la durée moyenne des appels, et bien plus encore.