Guide voice management
LE GUIDE UTILISATEUR DE VOTRE SOLUTION CALL CENTER
- Pour Démarrer
- Côté Opérateur / Agent
- Côté Superviseur
- Côté Administrateur
- Gestion des opérateurs
- Gestion des superviseurs
- Importer un annuaire de contacts
- Configuration des acheminements
- Configuration des sons
- Enquête de satisfaction
- Configuration du SVI
- Duplication d’un SVI
- Configuration d’un SVI
- Les étapes du SVI
- Ajouter une étape SMS au SVI
- Ajouter une étape Saisie au SVI
- Ajouter une étape Redirection au SVI
- Ajouter une étape répartition au SVI
- Ajouter une étape messagerie au SVI
- Ajouter une étape filtrage au SVI
- Ajouter une étape menu au SVI
- Ajouter une étape callback au SVI
- Ajouter une étape réglages perso. au SVI
- Ajouter une étape requête au SVI
- Ajouter une étape variable au SVI
- Ajouter une étape reconnaissance au SVI
- Ajouter une étape message au SVI
- Ajouter une étape horaires au SVI
- Ajouter une étape Groupe au SVI
- Campagnes sortantes
- Configuration du webcallback
- Service SMS
- Transfert interdit vers n° externes
- Statistiques
- Côté Tech.
- Nos APIs
- Authentification unique (SSO)
- Enregistrements des appels
- les intégrations
- Intégrer Axialys à une solution de relation client (CRM)
- Intégration Zendesk
- Intégration du VM dans un CRM fait maison
- Intégration Salesforce
- Intégration Magento
- Intégration Microsoft Dynamics
- Intégration easiware
- Intégration Hubspot
- Intégrer Axialys à une solution de paiement
- Voxpay
- Glossaire
- Documentation
API notifications Voice Management
1 - Introduction
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
2 - Principe de fonctionnement
L’utilisation de l’API nécessite deux étapes :
- une première étape d’authentification, sous forme de requête HTTP normale
- l’utilisation à proprement parler, via la librairie Socket.IO, en utilisant l’authentification créée au point précédent.
3 - Authentification
3.1 - 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 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)
- expire (date d’expiration au format yyyy-mm-ddthh-mm-ss.000000+GMT)
- 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.
3.2 - Renouvellement du token d’authentification
Au lieu d’attendre l’expiration du token pour le renouveler (au risque de perdre éventuellement des évènements), il vous ait possible de le faire via la méthode suivante :
curl -X POST -H ‘X-JSON: {\”requete\”:\”refresh_token\”,\”header\”:{\”id_session\”:\”XXXXXXXXXX\”},\”msg\”:{}}’ ‘https://voice-management.axialys.com/ws/’
Cette requête retourne dans un objet JSON id_session, ainsi que expire sous la forme “2021-01-28T14:25:55.914753+01:00”.
4 - Flux de notifications
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’, , );
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é
- catchup: durée catchup après appel (renseigné uniquement lors de la fin d’un appel)
- service: numéro du service lors de la sonnerie (définie uniquement lors de la sonnerie
- statut
- available: agent disponible
- ringing: agent en sonnerie
- calling: appel effectué
- connected: appel en cours
- unavailable: état inconnu
- transfert_start: début d’un transfert d’appel
- transfert_end: fin d’un transfert
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
- unpause: sortie de pause
- push: appel poussé vers l’interface de l’opérateur
- push_cancel: tentative annulation des différents événements poussés vers l’opérateur
- id_operator: identifiant de l’agent concerné
- supp: informations complémentaire, notamment identifiant du type de pause
Variables spécifiques contenues dans “msg” et concernant le fait de pousser des événements vers l’interface du client (push).
- retry_timeout: durée entre 2 essais
- auto_timeout: timeout au bout duquel sera lancé l’appel si l’opérateur ne l’a pas lancé avant et qu’on a une demande de type “AUTO”
- vars: variables
- ring_timeout: temps de sonnerie
- expire: expiration attribution
- unassign_timeout: timeout pour dés-attribution appel
- retries: nombre d’essais restants
- priority: priorité de l’appel (1 à 100)
- e164: numéro à mettre en relation avec l’opérateur
- type:
- AUTO: lancement de l’appel automatiquement au bout de *auto_timeout* secondes, si l’opérateur n’a pas lancé l’appel et qu’il est dans l’onglet campagne.
- MANUAL: lancement en manuel
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
Notification un peu spéciale (utilisée par les alertes): Valeurs disponibles pour les principales variables:
- duration_in_queue: depuis combien de temps
- event:
- alert_op: pas suffisamment d’opérateurs
- alert_file: seuil d’appel en attente dépassé
- id_call: identifiant de l’appel
- id_operator: id de l’agent concerné
- id_queue: id de la file associé à l’appel en cours
- validity: validité de l’alerte
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.2.5 Evénement «num»
Permet d’obtenir des informations sur les appels entrants (attention pour recevoir ce type d’évènements, vous devez en faire la demande).
Exemple d’appel entrant :
{"msg":{"type_dest":"GROUPE","id_call":3819,"id_num":31,"id_client":666,"service":"33820620620","caller_id_num":"33612345678"},"type_notification":"num","srv":8,"event":"start"}
Exemple de décroché (fourni uniquement si un son est joué) :
{"msg":{"type_dest":"GROUPE","id_call":3819,"id_num":31,"id_client":666,"service":"33820620620","caller_id_num":"33612345678"},"type_notification":"num","srv":8,"event":"answer"}
Exemple fin d’appel :
{"msg":{"type_dest":"GROUPE","id_call":3819,"id_num":31,"id_client":666,"service":"33820620620","caller_id_num":"33612345678"},"type_notification":"num","srv":8,"event":"end"}
Valeurs disponibles pour les principales variables :
- caller_id_num: numéro de l’appelant
- service: numéro du service
- id_call: identifiant de l’appel
- type_dest : correspond au dernier type de destination appelé (GROUPE, TRUNK, NO)
- event:
- start: arrivé d’un appel entrant
- answer: décroché (fourni uniquement si décroché avant appel sortant)
- end: fin d’un appel entrant
4.2.6 Evénement «input»
Permet d’obtenir des informations sur les évenments input (attention pour recevoir ce type d’évènements, vous devez en faire la demande, actuellement remonte uniquement les données de la reconnaissance vocale).
Exemple d’événement reconnaissance :
{“ts”:1590431889,”elapse”:0,”event”:{“msg”:{“id_call”:40090062,”score”:97,”id”:96897,”id_client”:173778,”input”:”92″},”type_notification”:”input”,”event”:”asr”}}
Valeurs disponibles pour les principales variables :
- id_call: identifiant de l’appel
- event :
- asr : reconnaisance vocale
- score : évalution de la pertinance de la reconnaisance 0→100
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”.
Demo socket.io
Mon test:
5- Utilisation de l’API pour avoir l’ensemble des événements
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.
Pour récupérer l’ensemble des données :
curl -X POST -u “:” -H “Content-Type: application/json” -d ‘{“user_type”:”api”}’ https://api.axialys.com/vm/token
Pour récupérer les données pour un seul opérateur :
curl -X POST -u “:” -H “Content-Type: application/json” -d ‘{“user_type”:”agent”,””}’ https://api.axialys.com/vm/token
Pour connaitre la date d'expiration du token, cette requête retourne “expire” (date d'expiration au format yyyy-mm-ddthh-mm-ss.000000+GMT).
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.
- Table des matières