API Voice Management

API Voice Management

1 Généralités

L’API du Voice Management permet de configurer et de superviser le traitement des appels.

Cette API s’inspire du formalisme REST. Les données sont servies au format JSON.

Vous devez obtenir auprès de votre interlocuteur Axialys l’URL d’accès, ainsi que vos données d’authentification.

2.1 Format des requêtes

Les requêtes seront de la forme

https://SERVER/vm...?user=<username>&password=<password>

A noter concernant le format des paramètres :

  • les numéros de téléphone sont attendus au format E164 (c’est-à-dire code pays suivi du numéro national, par exemple 33145420000 pour un numéro parisien).
  • les dates sont attendues au format IS0 8601. Cependant, notre système acceptera les variations les plus communes, et notamment le format AAAA-MM-DD HH:MM.

2.2 Format des réponses

Les réponses sont fournies au format JSON par défaut sauf si la requête est passée depuis un navigateur, auquel cas les données sont présentées au format HTML. Pour forcer une réponse JSON, ajouter le paramètre

accept=application/json

.

Attention, la réponse JSON est susceptible de contenir des données supplémentaires, en cas d’évolution de l’API. Ne pas en tenir compte.

3.1 Récupération des opérateurs

Cette API fournit le listing des opérateurs.

URL/vm/operators
Méthode(s)GET

Il est possible de récupérer un opérateur particulier via :

URL/vm/operators/<id_operator>
Méthode(s)GET

Il est également possible d’utiliser la méthode POST afin de filtrer sur les données suivantes :

NomTypeOblig.Description
emailEmailNAdresse email
loginAlpha-numériqueNLogin de connexion

Données retournées

Les données retournées incluent les paramètres passés en entrée, ainsi que les données suivantes :

NomTypeOblig.Description
idYAdresse email
emailEmailNAdresse email
realnameAlpha-numériqueYNom de la personne
loginAlpha-numériqueYLogin de connexion

3.2 Récupération de l’état courant des opérateurs

Attention à ne pas faire plus d’une requête toute les 30s, à terme un contrôle sera activé.

Cette API fournit le listing des opérateurs.

URL/vm/operators_init
Méthode(s)GET

Il est possible de récupérer un opérateur particulier via :

URL/vm/operators_init/<id_operator>
Méthode(s)GET

Données retournées

Les données retournées incluent les paramètres passés en entrée, ainsi que les données suivantes :

NomTypeOblig.Description
idYid de l operateur
etatavailable,ringing,calling,connected,unavailableNétat de l’opérateur
ui_loginDateNdate du dernier login
ui_logoutDateNdate du dernier logout
pauseDateNpause courante de l’opérateur
ui_pauseDateNdate de la dernière pause
ui_unpauseDateNdate de la dernière unpause

3.3 Récupération des groupes

Cette API fournit le listing des groupes.

URL/vm/groups
Méthode(s)GET

Il est possible de récupérer un groupe particulier via :

URL/vm/groups/<id_groupe>
Méthode(s)GET

Il est également possible d’utiliser la méthode POST afin de filtrer sur les données suivantes :

NomTypeOblig.
nameAlpha-numériqueNNom du groupe recherché

Données retournées

Les données retournées incluent les paramètres passés en entrée, ainsi que les données suivantes :

NomTypeDescription
idAdresse email
nameAlpha-numériqueNom du groupe recherché

3.4 Récupération de l’historique du statut des opérateurs

Cette API fournit le listing du statut des opérateurs. Attention le statut ne fournit pas le statut actuel, mais uniquement l’historique (ils sont insérés une fois que l’opérateur change d’état. Les informations d’appels peuvent également être ajoutées un peu plus tard.)

URL/vm/calls/status
Méthode(s)POST

Les requêtes devront se faire sous la forme

curl -u <username>:<password> "https://api.axialys.com/vm/calls/status" -X POST -d '{"date":"2019-04-20","date_end":"2019-05-01"}'

Paramètres

NomTypeOblig.Description
dateDateODate/heure de début de la période.
date_endDateODate/heure de fin de la période.
id_opNumériqueNID de l’opérateur.

Données retournées

Les données retournées incluent les paramètres passés en entrée, ainsi que les données suivantes :

NomTypeDescription
id_opID d’opérateur
durationEntierDurée en secondes
dateDate/HeureDate de début de l’événement
id_callEntierID de l’appel
infosChaîne de caractèresInfos supplémentaires
typeChaîne de caractèresType de l’événement (call_incall_outbreaklogincatchup)
Il n’y a pas de login_out dans Type, car avec login, on connaît la date de début et la durée.

4.1 Appels reçus (numéros)

Cette API fournit des statistiques globales sur le nombre d’appels reçus au niveau télécom pour une période donnée (par défaut, la journée en cours).

URL : /vm/stats/numbers_calls Méthode acceptée : GET

Paramètres

NomTypeOblig.Description
from_dateDate/HeureNDate/heure de début de la période. Par défaut, aujourd’hui à 00:00
to_dateDate/HeureNDate/heure de fin de la période. Par défaut, maintenant.
dest_numberAlphanumNNuméro pour lequel on veut spécifiquement des données. Ce paramètre peut-être indiqué plusieurs fois; dans ce cas les données de tous les numéros indiqués sont cumulées.
include_realtimeNLorsque ce paramètre est positionné, des données d’état “temps réel” sur les appels en cours sont incluses.

Données retournées

Les données retournées incluent les paramètres passés en entrée, ainsi que les données suivantes :

NomTypeOblig.Description
total_durationEntierODurée totale des appels reçus en secondes.
calls_countEntierONombre total d’appels reçus.
agent_connected_calls_countEntierONombre d’appels ayant donné lieu à une connexion effective vers un agent.
active_callsEntierNNombre d’appels en cours sur le ou les numéros concernés par la requête (si include_realtime).
in_conversation_callsEntierNNombre d’appels en conversation sur le ou les numéros concernés par la requête (si include_realtime).
oldest_call_sinceDate/TimeNHorodatage du début de l’appel le plus ancien en cours (si include_realtime).
oldest_in_conversation_call_sinceDate/TimeNHorodatage du début de l’appel en conversation le plus ancien en cours (si include_realtime).
Il n’est pas possible de requêter une période plus longue qu’un mois.

4.2 Appels reçus (groupes agents)

Cette API fournit des statistiques sur le nombre d’appels reçus présentés aux groupes d’agents pour une période donnée (par défaut, la journée en cours).

URL : /vm/stats/group_calls Méthode acceptée : GET

Paramètres

NomTypeOblig.Description
from_dateDate/HeureNDate/heure de début de la période. Par défaut, aujourd’hui à 00:00
to_dateDate/HeureNDate/heure de fin de la période. Par défaut, maintenant.
group_idNumériqueNID du groupe pour lequel on veut spécifiquement des données. Ce paramètre peut-être indiqué plusieurs fois; dans ce cas les données de tous les groupes indiqués sont cumulées.
include_realtimeNLorsque ce paramètre est positionné, des données d’état “temps réel” sur les appels en cours sont incluses.

Données retournées

Les données retournées incluent les paramètres passés en entrée, ainsi que les données suivantes :

NomTypeOblig.Description
total_durationEntierODurée totale des appels reçus par les agents en secondes.
calls_countEntierONombre total d’appels reçus par les agents.
agent_connected_calls_countEntierONombre d’appels décrochés par un agent.
active_callsEntierNNombre d’appels en cours sur le ou les groupes concernés par la requête (si include_realtime).
oldest_call_connected_sinceDate/TimeNHorodatage du début de la plus ancienne conversation avec un agent en cours (si include_realtime).
oldest_call_waiting_sinceDate/TimeNHorodatage du début de l’attente de l’appel le plus ancien en cours (si include_realtime).
Il n’est pas possible de requêter une période plus longue qu’un mois.

4.3 Supervision (groupes agents)

Cette API fournit des statistiques actuelles de la supervision liées à un groupe d’agents.

URL : /vm/stats/group_stats Méthode acceptée : GET

Format des requêtes

Les requêtes devront se faire sous la forme

curl -u <username>:<password> "https://api.axialys.com/vm/group_stats/<id_group>" -X GET

ou

wget -qO- "https://<username>:<password>@api.axialys.com/vm/group_stats/<id_group>"

Paramètres

NomTypeOblig.Description
group_idEntierNID du groupe pour lequel on veut spécifiquement des données.

Données retournées

Les données retournées incluent le paramètre passé en entrée, ainsi que les données suivantes :

NomTypeDescription
group_nameAlpha-numériqueNom du groupe
nbr_globalEntierNombre d’appels Global
nbr_global_reelEntierNombre d’appels uniques Global, dans le cas d’appels en débordement [En ligne le 28/02]
nbr_escaladesEntierNombre d’appels Escaladés
pourc_decrocheEntierPourcentage d’appels Décrochés
nbr_commEntierNombre d’appels En communication
nbr_attenteEntierNombre d’appels En attente
nbr_perdusEntierNombre d’appels Perdus
nbr_perdus_reelEntierNombre d’appels uniques Perdus, dans le cas d’appels en débordement [En ligne le 28/02]
tps_max_attenteHeureTemps max d’attente
tps_moyen_attenteHeureTemps moyen d’attente
tps_moyen_commHeureTemps moyen de communication
tps_moyen_abandonHeureTemps moyen d’abandon
nbr_appels_attente_moins1mEntierNombre de personnes en attente de moins de 1 minute
nbr_appels_attente_1a3mEntierNombre de personnes en attente entre 1 et 3 minutes
nbr_appels_attente_3mplusEntierNombre de personnes en attente de plus de 3 minutes
nbr_abandonneEntierNombre d’appels abandonnés en moins de X secondes (X secondes d’attente sur le groupe). Par défaut, en moins de 5 secondes.
nbr_reponduEntierNombre d’appels répondus en moins de Y secondes (Y secondes après arrivé sur le groupe). Par défaut, en moins de 45 secondes.
tps_moyen_catchupHeureTemps moyen de de Catchup
La fréquence d’utilisation ne doit pas excédée à 1 requête toutes les 10 secondes.
Il ne vous est pas possible de configurer les valeurs personnalisées des variables nbr_abandonne et nbr_repondu. Si vous souhaitez des valeurs personnalisées, veuillez transmettre la demande à votre Customer success manager.

Haut de page

API notifications Voice Management

 

Cette API permet de recevoir en temps réel un flux d’événements en rapport avec tous les aspects du fonctionnement du Voice Management : agents, files d’attentes, acheminements. Elle peut être utilisée pour divers usages, et notamment la production de dashboards de supervision.

Elle est basée sur le protocole Socket.IO

L’utilisation de l’API nécessite deux étapes :

  1. une première étape d’authentification, sous forme de requête HTTP normale
  2. l’utilisation à proprement parler, via la librairie Socket.IO, en utilisant l’authentification créée au point précédent.

Avant de pouvoir se connecter à notre serveur de notifications, il est nécessaire d’obtenir un token d’authentification qui sera valable 2h. La requête doit être effectuée à partir de la machine où sera effectué le traitement des notifications. La vérification étant effectuée via le token et l’IP.

L’authentification nécessite l’usage d’un login/password de type “superviseur”.

On effectue donc une requête POST en y configurant un header JSON avec les credentials afin d’obtenir le token qui sera utilisé pour s’authentifier auprès du serveur de notifications.

Les données à inclure dans le JSON sont :

  • requete: init
  • header:
    • count_type: supervisor
    • login: « login »
    • password: « password »
  • msg: (vide)

Exemple de demande d’authentification avec CURL :

curl -X POST -H "X-JSON: {\"requete\":\"init\",\"header\": 
{\"login\":\"xxxxx\",\"password\":\"xxx\",\"account_type\":\"supervisor\"},\"msg\":{}}" 
https://voice-management.axialys.com/ws/

Cette requête retourne dans un objet JSON toutes les informations nécessaires à la réception des notifications, la configuration des groupes et des agents.

Les principales informations utiles sont :

  • ops (id, nom, groupes[])
  • groupes (id, nom)
  • trunks (id, nom)
  • pauses (id, value)
  • target (id du superviseur)
  • id_session

Les deux derniers paramètres sont l’identifiant du compte de supervision (target) et le token (id_session) nécessaires à l’authentification, voir ci-après.

4.1 Connexion

Le flux de notifications utilise le protocole de la librairie Javascript Socket.IO. Les exemples ci-après sont en Javascript, mais toute librairie compatible avec ce protocole devrait fonctionner.

Une fois l’authentification effectuée et le token d’authentification obtenu, on peut se connecter au serveur de notifications pour recevoir les événements en temps réel.

Il convient de positionner un callback sur les événements de type update, et ensuite de demander le démarrage du flux par un message de type init.

socket = io.connect() ;
socket.on(‘update’, function(data) { // traitement de l'événement })
socket.emit('init', 'supervisor', <id_superviseur>, <id_session>);

4.2 Evénements

Les données sont transmises sous forme d’un objet JSON, avec le nom de l’événement qui sera toujours «update» et une structure de la forme suivante :

  • cpt: numéro de l’événement
  • elapse: temps écoulé depuis l’événement
  • event:
    • event: insert_call
    • type_notification: queue |operator |UI |trunk
  • ts: timestamp auquel l’événement a été envoyé

Il existe 5 types d’événements, détaillés ci-après:

  • operator: concerne l’état des communications d’un agent.
  • UI: concerne l’état de l’interface de l’agent, login / pauses…
  • PUSHCALL: une demande a été effectuée pour demander à un agent d’effectuer un appel sortant.
  • queue: informations sur une file de type agents.
  • trunk: informations sur une file de type acheminement.

4.2.1 Evénement operator

Permet d’obtenir des informations sur le statut d’un agent:

Exemple:

{“msg”: {“status”: “connected”, “rec”: 1, “call_duration”: 0, “caller_id_num”: “3363441111”, “step”: 1, “id_queue”: 0, “id_call”: -17137, “id_operator”: 8, “id_client”: 3}, “type_notification”: “operator”, “event”: “status”}

Valeurs disponibles pour les principales variables:

  • call_duration: durée de l’appel
  • caller_id_num: numéro de l’appelant
  • id_call: identifiant de l’appel
  • id_operator: id de l’agent concerné
  • id_queue: id de la file associé à l’appel en cours
  • rec: appel enregistré
  • statut
    • available: agent disponible
    • ringing: agent en sonnerie
    • calling: appel effectué
    • connected: appel en cours
    • unavailable: état inconnu

4.2.2 Evénement UI

Permet d’obtenir des informations sur le login/logout/pause ou d’autres de types d’informations en lien avec l’interface des agents.

Exemple login:

{"msg": {"supp": "", "id_operator": 1, "id_client": 1}, "type_notification": "UI", "event": "login"}

Exemple de pause: {“msg”: {“supp”: “user1”, “id_operator”: 1, “id_client”: 1}, “type_notification”: “UI”, “event”: “pause”}

Valeurs disponibles pour les principales variables:

  • event:
    • login: connexion de l’agent
    • logout: déconnexion de l’agent
    • pause: événement de type pause
  • id_operator: identifiant de l’agent concerné
  • supp: informations complémentaire, notamment identifiant du type de pause

4.2.3 Evénement «queue»

Permet d’obtenir des informations sur le login/logout ou d’autres de types d’informations en lien avec l’interface, type utilisateur en pause.

Exemple d’appel entrant:

{"msg": {"call_duration": 43, "caller_id_num": "33761433333", "priority": 100, "id_queue": 391, "id_call": 26, "vip_rate": 1, "duration_in_queue": 0, "id_client": 174808}, "type_notification": "queue", "event": "insert_call"}

Exemple de mise en relation:

{"msg": {"status": "connected", "call_duration": 0, "caller_id_num": "335497", "step": 1, "id_queue": 8, "id_call": -1713, "id_operator": 2, "id_client": 1}, "type_notification": "queue", "event": "connect_call"}

Exemple de sortie de file d’attente:

{"msg": {"id_call": 26901513, "id_queue": 1023, "id_client": "164645"}, "type_notification": "queue", "event": "delete_call"}

Valeurs disponibles pour les principales variables:

  • call_duration: durée de l’appel
  • caller_id_num: numéro de l’appelant
  • duration_in_queue: durée d’attente dans la file
  • event:
    • connect_call: mise en relation
    • delete_call: appel terminé
    • insert_call: appel entrant dans file
  • id_call: identifiant de l’appel
  • id_operator: id de l’agent concerné
  • id_queue: id de la file associé à l’appel en cours
  • rec: appel enregistré
  • statut
    • available: agent disponible
    • ringing: agent en sonnerie
    • calling: appel effectué
    • connected: appel en cours
    • unavailable: état inconnu

4.2.4 Evénement «trunk»

Permet d’obtenir des informations sur les appels de type acheminement

Exemple ajout d’appel:

{"msg": {"call_duration": 0, "id_trunk": 346223, "caller_id_num": "33783655555", "id_call": 269, "duration_in_queue": 0}, "type_notification": "trunk", "event": "insert_call"}

Exemple de mise en relation

{"msg": {"status": "connected", "call_duration": 0, "id_trunk": "345940", "caller_id_num": "33980689888",  "id_call": "26903925"}, "type_notification": "trunk", "event": "connect_call"}

Exemple fin d’appel:

{"msg": {"id_call": 2690, "id_trunk": 34}, "type_notification": "trunk", "event": "delete_call"}

Valeurs disponibles pour les principales variables:

  • caller_id_num: numéro de l’appelant
  • call_duration: durée de l’appel
  • id_call: identifiant de l’appel
  • id_trunk: identifiant du compte d’acheminement
  • event:
    • insert_call: ajout d’un appel dans une file
    • connect_call: mise en relation
    • delete_call: fin appel

4.3 Exemple avec un message complet

Ci-dessous un exemple de message complet tel que le JSON sera reçu.

Exemple:

["update",{"ts":1547651821,"elapse":0,"event":{"msg":{"status":"transfert_start","id_operator":1,"stype":3,"id_client":164645,"id_call":"26"},"type_notification":"operator","event":"status"},"cpt":2297}]

4.4 Exemple d’appel

Au préalable, il faut générer un token et ajouter l’identifiant du superviseur ([target]) à la variable “id_sup” et l’identifiant de la session ([id_session]) à la variable “id_session”.

<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Demo socket.io</title>
<script src="./socket.io.js" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.2.1.min.js" crossorigin="anonymous"></script>
<script>
 
var id_sup = [target] ;
var id_session = [id_session] ;
 
$(document).ready(function () {
	var socket = io.connect("https://voice-management.axialys.com", {path:"/socket.io/"});
	socket.on('connect', function() {
		console.log("ready") ;
		$("#text").append("<p>ready</p>") ;
		socket.emit('init', 'supervisor', id_sup, id_session);
	});
 
	socket.on('update', function(data) {
		$("#text").append("<p>"+JSON.stringify(data)+"</p>") ;
		console.log(data) ;
	}) ;
 
	console.log([id_sup, id_session]) ;
    socket.emit('init', 'supervisor', id_sup, id_session);
}) ;
</script>
</head>
<body>
Mon test:
<div id="text"></div>
</body>
</html>

Il est possible d’utiliser différemment l’API pour avoir l’ensemble des événements, depuis la présentation de l’appel, y compris avant le décroché, durant la sonnerie ou le message de pré-décroché

5.1 Principe de fonctionnement

L’utilisation de l’API nécessite aussi les deux étapes décrites ci-dessus : l’authentification en générant un token, puis l’appel à l’API, en utilisant le token préalablement créé.

5.2 Authentification

Avant de pouvoir se connecter à notre serveur de notifications, il est nécessaire d’obtenir un token d’authentification qui sera valable 2h. La requête doit être effectuée à partir de la machine où sera effectué le traitement des notifications. La vérification étant effectuée via le token et l’IP.

L’authentification nécessite l’usage d’un login/password correspondant à votre compte API (Si vous n’en n’avez pas, veuillez en faire la demande).

On effectue donc une requête POST en y configurant un header JSON avec les credentials afin d’obtenir le token qui sera utilisé pour s’authentifier auprès du serveur de notifications.

Sous la forme, avec CURL :

curl -X POST -u "<login>:<password>" -H "Content-Type: application/json" -d '{"ip":"<ip>", "user_type":"api"}' https://api.axialys.com/vm/token

5.3 Evénements

Voici un exemple d’utilisation

https://voice-management.axialys.com/labo/index.htm?id_client=<id_client>&id_session=<id_session>

Pour tester, il vous suffit de remplacer id_client par celui que l’on vous a founit et id_session avec celui qui vous a été transmis par la génération du token, pour voir défiler l’ensemble des évènements de son compte.

 

Haut de page

Intégration de DESK avec le VoiceManagement

En préambule, Axialys doit vous fournir l’adresse unique du voiceManagement à configurer dans votre interface DESK.

Aller dans la section “admin>site setting” et cocher “phone integration”. Ensuite aller dans la section “channels>phone” et dans la partie générale activer “phone calls enable”. Puis dans la section “channels>phone” et dans la partie intégration configurer l’adresse fournie par Axialys. Attention, il faut également sélectionner l’ensemble des comptes devant avoir accès au VoiceManagement.

A partir de ce point, la popin devrait être disponible dans l’interface desk nouvelle génération. Si vous n’êtes pas automatiquement logué dans l’interface, c’est que l’utilisateur n’existe pas dans l’extranet Axialys. Vous devez alors ajouter l’opérateur dans la section “VoiceManagement>Opérateurs>Ajout d’un opérateur” en vous assurant de bien renseigner la même adresse email que celle utilisée par l’agent pour se connecter sur DESK.

Haut de page

API gestion des appels sortants et campagnes

Cette API permet de gérer les appels à effectuer, soit en appels sortants unitaires, soit sous forme de campagne d’appels sortants.

L’API permet ainsi de :

  1. Demander un nouvel appel sortant
  2. Consulter l’état d’un appel sortant
  3. Consulter l’état d’un appel sortant

L’API fonctionne suivante un paradigme de type REST, en acceptant des données sous forme de paramètres passés en GET ou en POST, et retourne des données au format JSON.

1.1 Paramètres

Toutes les fonctions d’API nécessitent l’usage des paramètres suivants (en plus des paramètres spécifiques) :

NomTypeDéfautOblig.Description
auth_idAlphanum 32OIdentifiant utilisateur API
auth_passwordAlphanum 32OMot de passe

1.2 Retour

En cas de succès, l’API répond 200 OK ainsi que les champs spécifiques à la fonction appelée.

En cas d’erreur, un code retour HTTP approprié est utilisé et le message JSON contiendra les champs suivants :

NomTypeDescription
statusNumCode de retour HTTP
err_codeAlphanum 16OK en cas de succès, ou un code d’erreur spécifique, par exemple INVALID_AUTH
err_msgAlphanumMessage d’erreur (lisible par un humain)

L’usage des campagnes est optionnel : il permet d’avoir un suivi et une visualisation d’un ensemble d’appels à effectuer.

L’API propose les fonctions suivantes :

  1. Créer une nouvelle campagne
  2. Modifier une campagne
  3. Consulter l’état d’une campagne (statistiques)

2.1 Créer une nouvelle campagne

URL/vm/campaign
Méthode(s)POST

Paramètres

NomTypeDéfautOblig.Description
nameAlphanum 32ONom de la campagne à créer
recordBool0NActivation de l’enregistrement de tous les appels pour cette campagne. NB: même si cette valeur est à 0, l’enregistrement peut être actif pour d’autres raisons (par exemple, configuré sur un agent)

Retour

NomTypeDescription
id_campaignNumIdentifiant de la nouvelle campagne, à utiliser pour d’autres appels d’API

2.2 Modifier une campagne

URL/vm/campaign/<id_campaign>
Méthode(s)POST

Paramètres

NomTypeDéfautOblig.Description
nameAlphanum 32NNouveau nom de la campagne
recordBool0NActivation de l’enregistrement de tous les appels pour cette campagne. NB: même si cette valeur est à 0, l’enregistrement peut être actif pour d’autres raisons (par exemple, configuré sur un agent)
pauseBoolNDés/activation de la mise en pause de la campagne (inchangé si paramètre absent)

Retour

NomTypeDescription
id_campaignNumIdentifiant de la campagne
nameAlphanum 32Nom de la campagne
pauseBoolIndication de pause de la campagne
recordBoolIndication de l’enregistrement activé

2.3 Annuler une campagne

URL/vm/campaign/<id_campaign>/cancel
Méthode(s)POST

Paramètres

Aucun

Retour

NomTypeDescription
id_campaignNumIdentifiant de la campagne
nameAlphanum 32Nom de la campagne
pauseBoolIndication de pause de la campagne
recordBoolIndication de l’enregistrement activé

2.4 Consulter l’état d’une campagne

URL/vm/campaign/<id_campaign>
Méthode(s)GET

Paramètres

Aucun

Retour

NomTypeDescription
id_campaignNumIdentifiant de la campagne
nameAlphanum 32Nom de la campagne
pauseBoolIndication de pause de la campagne
recordBoolIndication de l’enregistrement activé
total_calls_countNum 8Nombre total d’appels à passer
ok_status_countNum 8Nombre d’appels réussis
ko_status_countNum 8Nombre d’appels en échec
pending_status_countNum 8Nombre d’appels encore à effectuer

3.1 Demander un nouvel appel sortant

URL/vm/outbound_call
Méthode(s)POST

Format des requêtes

Les requêtes devront se faire sous la forme

curl -u <username>:<password> "https://api.axialys.com/vm/outbound_call" -X POST -d '{"dest_number":<numéro>,"id_agent":<id_agent>}'

Paramètres

NomTypeDéfautOblig.Description
id_campaignNumNIdentifiant de la campagne de laquelle l’appel fait partie
typeAUTO/MANUALMANUALNType pour passer l’appel sortant. AUTO : l’appel est automatiquement lancé dès qu’un agent est libre, MANUAL l’agent doit valider le lancement de l’appel
id_agentNum 10O/NL’agent qui va devoir faire l’appel (obligatoire si un groupe n’est pas choisi)
id_groupNum 10O/NLe groupe d’agents qui va devoir faire l’appel (obligatoire si un opérateur n’est pas choisi)
dest_numberAlphanum 1024OUn ou plusieurs numéros de destinataires en fonction de s’il s’agit d’une campagne ou d’un appel sortant unitaire (sous le format E.164 sans +, séparés par des virgules). Ex: 33170200200,33634123452
priorityNum 3NNPriorité d’appel; par défaut 10; si la valeur est inférieure, alors cet appel sera prioritaire; si elle est supérieure, il sera non prioritaire
variablesAlphanum 255NVariables spécifiques à l’appel, présentées dans la popup et utulisables pour le suivi statistiques. Format de type structure JSON. Ex: {“nom_valeur1”:“valeur1”,“nom_valeur2”:“valeur2”}
ring_timeoutNum 430NTemps max de sonnerie, en seconde
retriesNum 43NNombre maximum de tentative de rappel en cas d’échec
retry_timeoutNum 4300NTemps (minimal) entre chaque nouvelle tentative, en secondes
auto_timeoutNum 40NTemps (minimal) avant le déclenchement automatique de l’appel, en secondes
unassign_timeoutNum 460NTemps maximum qu’a l’opérateur pour passer l’appel avant attribution à un autre opérateur, en secondes
start_from_dateDate/HeureMaintenantNDate de début pour passer un ou plusieurs appels, sous forme ISO8601. Ex: 2016-11-05T09:00
end_before_dateDate/HeureAucunNDate de fin pour passer un ou plusieurs appels, sous forme ISO8601
start_from_hourHeureNHeure (quotidienne) de début pour passer un ou plusieurs appels, sous forme ISO8601 ou HH:MM:SS
end_before_hourHeureNHeure (quotidienne) de fin pour passer un ou plusieurs appels, sous forme ISO8601 ou HH:MM:SS
Il est possible d’assigner des appels sortants à un agent d’un groupe si “id_agent” et “id_group” sont renseignés dans la même requête.

Retour

NomTypeDescription
id_out_callNumUn à plusieurs identifiants de numéros de destinataires en fonction de s’il s’agit d’une campagne ou d’un appel sortant unitaire, séparés par des virgules

3.2 Consulter l’état d’un appel sortant

URL/vm/outbound_call/<id_out_call>
Méthode(s)GET

Paramètres

Aucun

Retour

Les champs identiques à ceux passés lors de la création de l’appel sont retournés, avec en plus :

NomTypeDescription
date_submittedDate/HeureDate de création, sous forme ISO8601
alloc_to_id_agentNumIdentifiant de l’agent ayant passé l’appel
statusPENDING/ASSIGNED/DIALING/CONNECTED/SUCCESS/FAILUREStatut de l’appel
call_dateDate/HeureDate de l’appel passé (ou de la dernière tentative), sous forme ISO8601
answered_durationNumDurée de l’appel (en secondes)
failure_reasonAlphanum 16Raison de l’échec

3.3 Supprimer un ou des appels sortants

URL/vm/outbound_call
Méthode(s)DELETE
Seul les demandes dans l’état PENDING sont impactées par cette méthode

Format des requêtes

Les requêtes devront se faire sous la forme

curl -u <username>:<password> "https://api.axialys.com/vm/outbound_call" -X DELETE -d '{"dest_number":<numéro>,"id_agent":<id_agent>}'

Paramètres

NomTypeDéfautOblig.Description
id_campaignNumNIdentifiant de la campagne de laquelle l’appel fait partie
typeAUTO/MANUALMANUALNType pour passer l’appel sortant. AUTO : l’appel est automatiquement lancé dès qu’un agent est libre, MANUAL l’agent doit valider le lancement de l’appel
dest_numberAlphanum 1024OUn ou plusieurs numéros de destinataires en fonction de s’il s’agit d’une campagne ou d’un appel sortant unitaire (sous le format E.164 sans +, séparés par des virgules). Ex: 33170200200,33634123452
priorityNum 3NNPriorité d’appel; par défaut 10; si la valeur est inférieure, alors cet appel sera prioritaire; si elle est supérieure, il sera non prioritaire
variablesAlphanum 255NVariables spécifiques à l’appel, présentées dans la popup et utulisables pour le suivi statistiques. Format de type structure JSON. Ex: {“nom_valeur1”:“valeur1”,“nom_valeur2”:“valeur2”}
ring_timeoutNum 430NTemps max de sonnerie, en seconde
retriesNum 43NNombre maximum de tentative de rappel en cas d’échec
retry_timeoutNum 4300NTemps (minimal) entre chaque nouvelle tentative, en secondes
auto_timeoutNum 40NTemps (minimal) avant le déclenchement automatique de l’appel, en secondes
unassign_timeoutNum 460NTemps maximum qu’a l’opérateur pour passer l’appel avant attribution à un autre opérateur, en secondes
start_from_dateDate/HeureMaintenantNDate de début pour passer un ou plusieurs appels, sous forme ISO8601. Ex: 2016-11-05T09:00
end_before_dateDate/HeureAucunNDate de fin pour passer un ou plusieurs appels, sous forme ISO8601
start_from_hourHeureNHeure (quotidienne) de début pour passer un ou plusieurs appels, sous forme ISO8601 ou HH:MM:SS
end_before_hourHeureNHeure (quotidienne) de fin pour passer un ou plusieurs appels, sous forme ISO8601 ou HH:MM:SS
id_agentNum 10NL’agent qui va devoir faire l’appel (obligatoire si un groupe n’est pas choisi)
id_groupNum 10NLe groupe d’agents qui va devoir faire l’appel (obligatoire si un opérateur n’est pas choisi)

Retour

Nombre d’appels impactés.

Haut de page

API historique des appels

Cette API permet de récupérer l’historique des appels entrants et sortants, en deux méthodes.

L’API fonctionne suivante un paradigme de type REST, en acceptant des données sous forme de paramètres passés en GET ou en POST, et retourne des données au format JSON.

1.1 Paramètres

Toutes les fonctions d’API nécessitent l’usage des paramètres de connexion suivants :

NomTypeDéfautOblig.Description
loginAlphanum 32OIdentifiant utilisateur API
passwordAlphanum 32OMot de passe

Et des paramètres servant de filtre pour l’extraction des données :

NomTypeDéfautOblig.Description
dateYYYY-MM-DDODate de début ou date du jour demandé
date_endYYYY-MM-DDNDate de fin, max 1 mois par rapport à la date de début
service_numberNumériqueNNuméro de service, au format e164
caller_numberNumériqueNNuméro de l’appelant, au format e164

1.2 Historique des appels entrants

URL/vm/calls/in
Méthode(s)POST

Format de la requête

La requête devra se faire sous la forme :

curl "https://api.axialys.com/vm/calls/in" -u <login>:<password> -H "Content-Type: application/json" -d '{"date":"<YYYY-MM-DD>", "date_end":"<YYYY-MM-DD>",  "service_number":"<e164>", "caller_number":"<e164>"}' -X POST

Retour

NomTypeDescription
id_appelNumériqueidentifiant de l’appel
dateDateDate, au format ISO 8601
service_numberNumériqueNuméro du service, au format e164
caller_numberNumériqueNuméro de l’appelant, au format e164
cpNumériqueCode postal de l’appelant
post_appelNumériqueDurée pause, en seconde
duration_ringNumériqueDurée de sonnerie, en seconde
durationNumériqueDurée de l’appel, en seconde
statusAlphanumStatut de l’appel sortant
group_nameAlphanumNom du groupe ayant reçu l’appel
op_nameAlphanumNom de l’opérateur ayant reçu l’appel
rub_nameAlphanumNom de la rubrique ayant reçu l’appel

NB : “op_name”, et “rub_name” sont mises à jour 2h après, il faut appeler la méthode au moins 2 heures après l’heure de fermeture du service.

1.3 Historique des appels sortants

URL/vm/calls/out
Méthode(s)POST

Format de la requête

La requête devra se faire sous la forme :

curl "https://api.axialys.com/vm/calls/out" -u <login>:<pass> -H "Content-Type: application/json" -d '{"date":"<YYYY-MM-DD>, " date_end ":"<YYYY-MM-DD>", "service_number":"<e164>", "called_number":"<e164>" }' -X POST

Retour

NomTypeDescription
id_appelNumériqueidentifiant de l’appel
dateDateDate, au format ISO 8601
service_numberNumériqueNuméro du service, au format e164
caller_numberNumériqueNuméro de l’appelant, au format e164
cpNumériqueCode postal de l’appelant
post_appelNumériqueDurée pause, en seconde
duration_ringNumériqueDurée de sonnerie, en seconde
durationNumériqueDurée de l’appel, en seconde
statusAlphanumStatut de l’appel sortant
group_nameAlphanumNom du groupe ayant reçu l’appel
op_nameAlphanumNom de l’opérateur ayant reçu l’appel
rub_nameAlphanumNom de la rubrique ayant reçu l’appel
L’id_appel d’un appel sortant est précédé d’un “-”.

1.4 Inventaires des statuts des appels

Commun aux deux types :

NomDescription
ANSWERrépondu
BUSYoccupé
NOANSWERnon répondu
UNKNOWNinconnu
CANCELannulé
CONGESTIONcongestion
CHANUNAVAILchannel indisponible

Spécifique aux appels entrants :

NomDescription
NOpas d’aboutement
CALLBACKcallback
VOICEMAILboite vocale

Haut de page

Intégration du VM dans un CRM

Voici les méthodes pouvant être utiliser pour l’intégration du VM dans un CRM.

1.1 Connexion

  • A la connexion de l’utilisateur, il faut récupérer un token via la méthode :
curl -X POST -u "<login>:<pass>" -H "Content-Type: application/json" -d '{"ip":"<ip>","id_agent":<id_agent>}' https://api.axialys.com/vm/token

Vous avez la possibilité d’ajouter la variable keep pour tenter de garder tout le temps le même token :

curl -X POST -u "<login>:<pass>" -H "Content-Type: application/json" -d '{"ip":"<ip>","id_agent":<id_agent>, "keep":1}' https://api.axialys.com/vm/token
Seul le format json est supporté.
  • Puis il faut appeler le popin dans une iframe avec l’url :
https://voice-management.axialys.com/operateurs/index.htm?token_session=<token>

1.2 Déconnexion

A la déconnexion de l’utilisateur, il faut invalider le token via la méthode :

curl -X DELETE -u "<login>:<pass>" -H "Content-Type: application/json" -d '{"ip":"<ip>","id_agent":<id_agent>}' https://api.axialys.com/vm/token/<token>

Il vous suffit au clic du numéro de téléphone, d’appeler l’url de notre bandeau en ajoutant une variable fiche_num avec le numéro souhaité permettant ainsi un pré-enregistrement du numéro de téléphone dans le bandeau.

Exemple pour afficher le 33618220000, il faut appeler l’url :

https://voice-management.axialys.com/operateurs/index.htm?fiche_num=33618220000&token_session=<token>

Si votre CRM (basé sur le web) n’est pas nativement supporté par notre solution, néanmoins vous pouvez tout à fait le connecter à notre plate-forme et déclencher l’ouverture d’une fiche client en fonction de l’appel entrant.

3.1 Principe de fonctionnement

Le principe est le suivant :

  • vous mettez en place une URL dans votre système qui sera dédiée à l’ouverture des fiches client
  • cette URL est configurée dans notre système
  • lors d’un appel entrant, une nouvelle page est ouverte vers cette URL
  • à laquelle on passe en paramètre un certain nombre de variables, permettant à cette page d’afficher la fiche pertinente

3.2 Paramètres passées

La page appelée est susceptible de recevoir au moins les variables suivantes en paramètre (query string) :

ParamètreDescription
id_sessionToken identifiant la connexion de l’agent au Voice Management
e164_inNuméro appelé, format E164. Ex: 33170200200
id_callIdentifiant unique de l’appel sur la plate-forme
caller_id_numNuméro d’appelant, format E164. Ex: 33635438729
actionVaut in pour un appel entrant
id_opid de l’opérateur
id_groupid du groupe
waittemps d’attente

D’autres paramètres sont susceptibles d’être passés, suite à certaines actions éventuelles dans le SVI (numéro de commande par exemple).

Haut de page

  • Axialys S.A © 2020 Tous droits réservés