agent

Description:
  • Objet permettant de manipuler l'agent actuellement connecté et ses informations

Objet permettant de manipuler l'agent actuellement connecté et ses informations

Example

// écoute de l'évènement onLogin pour réagir lorsque l'agent est bien connecté
agentVoice.agent.onLogin(() => {
  console.log('L\'agent ' + agentVoice.agent.getName() + 'viens de se connecter avec succès');
});

agentVoice.agent.onStatesUpdate(() => {
  console.log('La liste des états possible pour l\'agent vient de changer, voici les nouveaux états possibles : ');
  console.log(agentVoice.agent.getStates());
});

agentVoice.agent.onStateChange(() => {
     console.log('L\'agent vient de changer d\'état pour : ' + agentVoice.agent.currentState.getLabel();
});

// Connexion de l'agent agent@example.com par mot de passe sur l'extension 0102030405
agentVoice.agent.login('agent@example.com', '0102030405', 'password', 'myPassword');

Members

currentState :module:agent/currentState

Type:

group :module:agent/group

Type:

team :module:agent/team

Type:

Methods

changeState(stateId)

Description:
  • Changement d'état de l'agent L'id de l'état est défini dans l'admin de Kiamo sous groupe/états des agents

Example
par exemple pour passer un agent en pause
changeState(20);

par exemple pour passer un agent en pret
changeState(1);
Parameters:
Name Type Description
stateId number

id de l'état choisi

getCallOutList() → {Array.<object>}

Description:
  • Retourne la liste des services d'appel manuel

Example
// appel :
let list = agentVoice.agent.getCallOutList();
// résultat :
[
  {
    "id": 5,
    "name": "appel manuel 1"
  },
  {
    "id": 9,
    "name": "appel manuel 12"
  },

  {
    "id": 15,
    "name": "appel manuel 21"
  },
  {
    "id": 20,
    "name": "appel manuel 31"
  },
  {
    "id": 30,
    "name": "appel manuel 51"
  }
]
Returns:

Un tableau de services sous la forme : {'id':number,'name':string}

Type
Array.<object>

getExtension() → {string}

Description:
  • Retourne le numéro de l'agent connecté

Returns:
Type
string

getID() → {number}

Description:
  • Retourne l'id de l'agent connecté

Returns:
Type
number

getLang() → {string}

Description:
  • Retourne la langue de l'agent

Returns:
Type
string

getLogin() → {string}

Description:
  • Retourne le login de l'agent connecté

Returns:
Type
string

getMedias() → {object}

Description:
  • Retourne la liste des medias de l'agent.

Example
const medias = agentVoice.agent.getMedias();

// Résultat
{ voice: true, smartMedia: false }
Returns:

Objet au format { voice: boolean, smartMedia: boolean } ou null si l'agent n'est pas connecté.

Type
object

getName() → {string}

Description:
  • Retourne le nom de l'agent

Returns:
Type
string

getSettings() → {object}

Description:
  • obtenir les paramètres

Returns:

les paramètres au format json exemple : {"always_on_top":false,"hide_main_menu":false,"keep_position":false,"shortcuts":[{"fct":4,"code":65,"key":17}]}

Type
object

getStates()

Description:
  • retourne tous les états possibles pour l'agent connecté

Example
// appel :
let list = agentVoice.agent.getStates();

// résultat :
[
  {
    "id": 0,
    "label": "Déconnecté",
    "type": "logged out",
    "selectable": false
  },
  {
    "id": 1,
    "label": "Prêt",
    "type": "ready",
    "selectable": true
  },

  {
    "id": 6,
    "label": "Traitement de tâche",
    "type": "work",
    "selectable": false
  },
  {
    "id": 20,
    "label": "En pause",
    "type": "pause",
    "selectable": true
  },
  {
    "id": 30,
    "label": "Anomalie",
    "type": "work",
    "selectable": false
  }
]

isLogged() → {boolean}

Description:
  • Permet de savoir si l'agent est loggué

Returns:
Type
boolean

login(login, extension, auth, passTokenopt, forceopt)

Description:
  • Demande de connexion de l'agent. Les méthodes de connexion sont les suivantes :

    • none : aucune
    • password : utilisation du mote de passe défini dans l'admin de Kiamo dans la page Agent
    • jwt : utilisation d'un jeton JWT à partir d'une clé d'API défini dans l'admin Kiamo

    Pour générer le jeton JWT, comme défini sur jwt.io, il faut lui fournir les valeurs suivantes :

    • Pour le header :
      • typ : Le type de jeton, toujours à "JWT"
      • alg : L'algorithme utilisé pour signer le jeton, actuellement, toujours "HS256"
    • Pour le payload :
      • exp : Le timestamp de la date d'expiration du jeton. Pour des raisons de sécurité, les jetons doivent avoir une durée de vie de maximum 60s.
      • sub : Le sujet doit correspondre au login de l'agent à logguer
      • jti : Ceci est l'identifiant de la clé d'API générée dans l'admin Kiamo
    Afin de signer les jetons JWT, il faut utiliser une clé d'API. Dans le menu Développeur > Clés d'API de l'admin Kiamo, créer une clé d'API qui possède les droits "Agent Authentication" en "POST" et utiliser le token associé pour signer la clé. L'id de la clé doit être fourni dans le champ "jti" du payload du jeton JWT afin de permettre à Kiamo de vérifier la signature du JWT.

    Un paramètre "force" est également disponible, il permet de forcer la connexion de l'agent si le login ou l'extension sont déjà en cours d'utilisation. Les deux valeurs possibles sont "login_already_used" pour forcer la connexion avec un login déjà utilisé et "number_already_used" dans le cas où l'on veut forcer la connexion alors que l'extension est déjà utilisée.

Examples

Cas du mode none :

  • login: 0002
  • auth: none
  • extension: 33

agentVoice.agent.login('0002', '33', 'none');

Cas du mode password :

  • login: 0002
  • auth: password
  • extension: 33
  • password: 45kop:m

agentVoice.agent.login('0002', '33', 'password', '45kop:m');

Cas du mode JWT :

  • login: 0002
  • auth: jwt
  • extension: 33
  • password: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIwMDAyIiwianRpIjoiNiIsImV4cCI6MTIzNDU2Nzg5MH0.hDst16zLFtaTonyfKExuvuNYYJwip5iwaYtQsgDxIRc

agentVoice.agent.login('0002', '33', 'jwt', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIwMDAyIiwianRpIjoiNiIsImV4cCI6MTIzNDU2Nzg5MH0.hDst16zLFtaTonyfKExuvuNYYJwip5iwaYtQsgDxIRc');

Cas d'une connexion forcée avec un login déjà utilisé:

  • login: 0002
  • auth: password
  • extension: 33
  • password: 45kop:m
  • force: login_already_used

agentVoice.agent.login('0002', '33', 'password', '45kop:m', 'login_already_used');

Cas d'une connexion forcée avec une extension déjà utilisée:

  • login: 0002
  • auth: password
  • extension: 33
  • password: 45kop:m
  • force: number_already_used

agentVoice.agent.login('0002', '33', 'password', '45kop:m', 'number_already_used');
Parameters:
Name Type Attributes Description
login string

Identifiant de l'agent

extension string

Numéro de poste de l'agent

auth string

Mode d'authentification à utiliser

passToken string <optional>

Le cas échéant, mot de passe de l'agent ou jeton JWT

force string <optional>

Le cas échéant, paramètre forçant la connexion

logout()

Description:
  • Déconnexion de l'agent en cas d'erreur sur la connexion

onCallOutListUpdate(callback)

Description:
  • Définition du code client à appeler lors de la réception des services d'appels manuels disponibles pour l'agent

Example
// le code suivant permet de mettre à jour une div, ayant pour classe js-agent-call-out-list-update-container,
// avec la liste des services de type appel manuel
agentVoice.agent.onCallOutListUpdate((data) => {
     const result = agentVoice.agent.getCallOutList();
     let list = '';
     if (result.length === 0) {
         list = 'pas chargé';
     } else {
         for (let elem in result) {
             list += 'id : ' + result[elem].id
                 + ', name : ' + result[elem].name
                 + '<br/>';
         }
     }
    document.querySelector('.js-agent-call-out-list-update-container').innerHTML = callOutList();
});
Parameters:
Name Type Description
callback function

le code à jouer

onError(callback)

Description:
  • Définition du code client à appeler en cas d'erreur Kiamo.

    Message peut contenir des informations supplémentaires pour certains codes.
    Params peut contenir un objet avec des valeurs utiles à l'erreur.
    Les code d'erreur possibles sur le onError :

    • license_problem_max_number_agents : le nombre de licences agents est atteint, impossible de connecter un agent
    • number_already_used : l'extension saisi par l'agent est déjà utilisé par un autre agent
    • incorrect_login : login ou mot de passe saisi par l'agent incorrect
    • login_already_used : l'agent est déjà connectée à l'aapli, cas d'un agent pas déloggé correctement
    • invalid_token : token saisi pour la connexion est non valide
    • locked_account : compte bloqué après 5 tentatives de login
    • incorrect_parameters : numéro saisi non valide pour un transfert d'appel
    • you_dont_have_call_license : pas la licence voix
    • cannot_call_your_own_number : Vous ne pouvez pas appeler votre propre numéro
    • impossible_dial_agent_cannot_receive_internal_call : Appel impossible, l'agent ne peut pas recevoir d'appel interne
    • impossible_dial : Appel impossible
    • this_agent_is_not_consultable : Cet agent n'est pas consultable
    • cannot_dial_during_wrapup : Vous ne pouvez pas passer un appel pendant le post-appel
    • cannot_dial_during_intercall_pause : Vous ne pouvez pas passer un appel pendant la pause obligatoire
    • the_dialed_number_is_an_agent_number : Le numéro composé est celui d'un agent. Vous devez le consulter avant de pouvoir lui transférer un appel
    • you_dont_have_file_license : Vous n'avez pas le média Personnalisé
    • media_call_saturated : Plus de licence Voix disponible
    • media_file_saturated : Plus de licence Personnalisé disponible
Example
// L'exemple ci-dessous met à jour une div, ayant pour classe, avec le message d'erreur retourné
agentVoice.agent.onError((code, message, params) => {
    document.querySelector('.js-agent-return-state-container').innerHTML = code;
});
Parameters:
Name Type Description
callback function

le code à jouer, la fonction prendra un paramètre au format suivant une chaîne de caractère, exemple "cannot_call_your_own_number"

onLogin(callback)

Description:
  • Définition du code client à appeler une fois l'agent réellement logué dans Kiamo

Example
// L'exemple ci-dessous met à jour une div ayant pour classe js-agent-name, avec le nom de l'agent et
// une div, ayant pour classe js-agent-group, avec le nom du groupe de l'agent
agentVoice.agent.onLogin(() => {
   document.querySelector('.js-agent-name').innerHTML = agentVoice.agent.getName();
   document.querySelector('.js-agent-group').innerHTML = agentVoice.agent.group.getName();
});
Parameters:
Name Type Description
callback function

la fonction client à exécuter

onLogout(callback)

Description:
  • Définition du code client à appeler quand la déconnexion de l'agent sera prise en compte dans Kiamo.

Example
// exemple en utilisant une fonction fléchée (https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Functions/Arrow_functions)
agentVoice.agent.onLogout(() => {
     console.log('Execution du code onLogout callback');
});
Parameters:
Name Type Description
callback function

le code client à jouer

onPopup(callback)

Description:
  • Définition du code client à appeler sur la réception des messages suivants dans le cadre des remontées de fiches :

    • command : remontée de fiche autre que les 3 types ci-dessous, format du message "data":{"task_ref":103014,"name":"Nouvelle remontee de fiche 2","program":"toto.exe","parameters":""}
    • url : remontée de fiche de type page web avec mode d'affichage à bandeau agent, format du message "data":{"url":"1","width":800,"height":600,"display_close_button":true}
    • udp : remonté de fiche de type message UDP, format du message "data":{"port":22,"message":"1"}
    • http : remontée de fiche de type Appel à un web service, format du message "data":{"host":"127.0.0.1","method":"GET","contents":"REMY0 1 "}
Example
// L'exemple ci-dessous parcours le retour en fonction du type et affiche les informations recu dans une div ayant la classe js-popup
agentVoice.agent.onPopup((type, data) => {
    let result;
    switch (type) {
        case 'command':
            result = 'taskRef : ' + data.task_ref + ' - Name : ' + data.name + ' - Programme : ' + data.program + ' - Parameters : ' + data.parameters;
            break;
        case 'url':
            result = 'Url : ' + data.url + ' - Width : ' + data.width + ' - Height : ' + data.height + ' - DisplayCloseButton : ' + data.display_close_button;
            break;
        case 'udp':
            result = 'Port: ' + data.port + ' - Message :' + data.message;
            break;
        case 'http':
            result = 'Host : ' + data.host + ' - Method : ' + data.method + ' - Content : ' + data.content;
            break;
    }
    const div = document.querySelector('.js-popup');
    div.innerHTML = div.innerHTML + '<br/>Type : ' + type + ' - params : ' + result;
});
Parameters:
Name Type Description
callback function

le code à jouer. La fonction prend en paramètre un type et les paramètres.

les types possibles sont :

  • command
  • url
  • udp
  • http

onReturnStateUpdate(callback)

Description:
  • Définition du code client à appeler sur l'état réservé lors d'une demande de changement d'état de l'agent par exemple. Le format du retour est le suivant : {'state_id':20}

Example
// l'exemple suivant affiche un message dans la console du navigateur
agentVoice.agent.onReturnStateUpdate((data) => {
    console.log(data.state_id);
});
Parameters:
Name Type Description
callback function

le code à jouer,

onSettingsUpdate(callback)

Description:
  • Définition du code client à appeler sur la réception des paramètres de l'agent.

Examples
//Exemple du format de message :

{
   "param1":"valeur params1",
   "param2":"valeur params2",
   "param3":"valeur params3"
}
// Exemple d'appel

// L'exemple ci-dessous permet de mettre à jour une div, ayant pour classe js-params, avec les paramètres retourné par Kiamo
// Parcours des paramètres, utilisation d'une fonction récursive pour les cas avec un objet dans les paramètres
// comme par exemple : {"keep_position":false,"shortcuts":[{"fct":4,"code":65,"key":17}]}
function recursionSettings(parameters){
    let displayedParams = '';
    for (let key in parameters) {
         if(typeof parameters[key] !== "object"){
             displayedParams += key + ': ' + parameters[key] + '<br/>';
         } else{
             displayedParams += recursionSettings(parameters[key]);
         }
     }
     return displayedParams
 }
 agentVoice.agent.onSettingsUpdate(() => {
     document.querySelector('.js-params-container').classList.remove("hidden");
     let parameters = agentVoice.agent.getSettings();
     let displayedParams = recursionSettings(parameters);
     document.querySelector('.js-params').innerHTML = '<b>Parameters :</b><br/>' + displayedParams;
});
Parameters:
Name Type Description
callback function

le code à jouer

onStateChange(callback)

Description:
  • Définition du code client à appeler sur le changement d'état de l'agent connecté. Le code sera joué lors de la prise en compte du nouvel état de l'agent par exemple pour mettre à jour l'état de l'agent dans l'application.

Example
// L'exemple ci-dessous permet de mettre à jour une div ayant pour classe js-current-state
agentVoice.agent.onStateChange(() => {
     document.querySelector('.js-current-state').innerHTML = agentVoice.agent.currentState.getLabel();
});
Parameters:
Name Type Description
callback function

le code à jouer

onStatesUpdate(callback)

Description:
  • Définition du code client à appeler sur la réception de tous les états disponibles pour le groupe de l'agent

Example
// Le code ci-dessous permet de mettre à jour un select, ayant la classe js-state-select, avec les états
// sélectionnables comme prêt et pause et met à jour une textarea, ayant la classe js-states-list,
// avec les autres états
agentVoice.agent.onStatesUpdate(() => {
    const result = agentVoice.agent.getStates();
    let states = '';
    for (let elem in result) {
        if (result[elem].selectable) {
            let newOption;
            if (agentVoice.agent.currentState.getID() === result[elem].id) {
            // sélectionne l'état actuel de l'agent
                newOption = new Option(result[elem].label, result[elem].id, true, true);
            } else {
                newOption = new Option(result[elem].label, result[elem].id);
            }
            document.querySelector('.js-state-select').append(newOption);
        } else {
            states += 'id : ' + result[elem].id
                + ', type : ' + result[elem].type
                + ', label : ' + result[elem].label
                + ', selectable : ' + result[elem].selectable + '\n';
        }
    }
    document.querySelector('.js-states-list').value = states;
});
Parameters:
Name Type Description
callback function

le code à jouer

onSupervisorMessage(callback)

Description:
  • Définition du code client à appeler sur la réception d'un message provenant d'un superviseur envoyé depuis la vue de supervision

Examples
// Exemple du format de message fourni au code client :
   'data':{
       'supervisor_firstname':'',
       'supervisor_name':'',
       'message':'ENVOI MESSAGE',
       'avatar':{'color':'','version':''}
   }
//Exemple d'utilisation dans le code client
agentVoice.agent.onSupervisorMessage((data) => {
    console.log(data.message);
});
// dans la console du navigateur, on verra :
ENVOI MESSAGE
Parameters:
Name Type Description
callback function

fonction du client, ayant un paramètre dont le format est le suivant :

{ 'supervisor_firstname':'', 'supervisor_name':'', 'message':'message envoyé par le superviseur depuis la vue de supervision', 'avatar':{'color':'','version':''} }

refreshCallOutList() → {boolean}

Description:
  • Méthode qui permet d'actualiser la liste les services d'appels sortants. Cela déclenchera un évènement "onCallOutListUpdate" et la liste sera disponible à l'appel de la méthode "getCallOutList".

Example
agentVoice.agent.refreshCallOutList();
Returns:
Type
boolean

refreshSettings() → {boolean}

Description:
  • Demande de récupération des paramètres agent depuis la base de connées (colonne AgentParams de la table cfg_agent)

Returns:
Type
boolean

setPauseState()

Description:
  • L'agent est passé en pause

setReadyState()

Description:
  • L'agent est passé en prêt

updateSettings(settings)

Description:
  • Met à jour les paramètres agents Exemple de format attendu en paramètre :

    {"always_on_top":false,"hide_main_menu":false,"keep_position":false,"shortcuts":[{"fct":4,"code":65,"key":17}]}

Example
// exemple d'appel
let params = {param1:"value1", param2:"value2", param3:"value3"};
agentVoice.agent.updateSettings(params);
Parameters:
Name Type Description
settings object

les paramètres sont au format json

Members

currentState :module:agent/currentState

Type:

group :module:agent/group

Type:

team :module:agent/team

Type:

Methods

changeState(stateId)

Description:
  • Changement d'état de l'agent L'id de l'état est défini dans l'admin de Kiamo sous groupe/états des agents

Example
par exemple pour passer un agent en pause
changeState(20);

par exemple pour passer un agent en pret
changeState(1);
Parameters:
Name Type Description
stateId number

id de l'état choisi

getCallOutList() → {Array.<object>}

Description:
  • Retourne la liste des services d'appel manuel

Example
// appel :
let list = agentVoice.agent.getCallOutList();
// résultat :
[
  {
    "id": 5,
    "name": "appel manuel 1"
  },
  {
    "id": 9,
    "name": "appel manuel 12"
  },

  {
    "id": 15,
    "name": "appel manuel 21"
  },
  {
    "id": 20,
    "name": "appel manuel 31"
  },
  {
    "id": 30,
    "name": "appel manuel 51"
  }
]
Returns:

Un tableau de services sous la forme : {'id':number,'name':string}

Type
Array.<object>

getExtension() → {string}

Description:
  • Retourne le numéro de l'agent connecté

Returns:
Type
string

getID() → {number}

Description:
  • Retourne l'id de l'agent connecté

Returns:
Type
number

getLang() → {string}

Description:
  • Retourne la langue de l'agent

Returns:
Type
string

getLogin() → {string}

Description:
  • Retourne le login de l'agent connecté

Returns:
Type
string

getMedias() → {object}

Description:
  • Retourne la liste des medias de l'agent.

Example
const medias = agentVoice.agent.getMedias();

// Résultat
{ voice: true, smartMedia: false }
Returns:

Objet au format { voice: boolean, smartMedia: boolean } ou null si l'agent n'est pas connecté.

Type
object

getName() → {string}

Description:
  • Retourne le nom de l'agent

Returns:
Type
string

getSettings() → {object}

Description:
  • obtenir les paramètres

Returns:

les paramètres au format json exemple : {"always_on_top":false,"hide_main_menu":false,"keep_position":false,"shortcuts":[{"fct":4,"code":65,"key":17}]}

Type
object

getStates()

Description:
  • retourne tous les états possibles pour l'agent connecté

Example
// appel :
let list = agentVoice.agent.getStates();

// résultat :
[
  {
    "id": 0,
    "label": "Déconnecté",
    "type": "logged out",
    "selectable": false
  },
  {
    "id": 1,
    "label": "Prêt",
    "type": "ready",
    "selectable": true
  },

  {
    "id": 6,
    "label": "Traitement de tâche",
    "type": "work",
    "selectable": false
  },
  {
    "id": 20,
    "label": "En pause",
    "type": "pause",
    "selectable": true
  },
  {
    "id": 30,
    "label": "Anomalie",
    "type": "work",
    "selectable": false
  }
]

isLogged() → {boolean}

Description:
  • Permet de savoir si l'agent est loggué

Returns:
Type
boolean

login(login, extension, auth, passTokenopt, forceopt)

Description:
  • Demande de connexion de l'agent. Les méthodes de connexion sont les suivantes :

    • none : aucune
    • password : utilisation du mote de passe défini dans l'admin de Kiamo dans la page Agent
    • jwt : utilisation d'un jeton JWT à partir d'une clé d'API défini dans l'admin Kiamo

    Pour générer le jeton JWT, comme défini sur jwt.io, il faut lui fournir les valeurs suivantes :

    • Pour le header :
      • typ : Le type de jeton, toujours à "JWT"
      • alg : L'algorithme utilisé pour signer le jeton, actuellement, toujours "HS256"
    • Pour le payload :
      • exp : Le timestamp de la date d'expiration du jeton. Pour des raisons de sécurité, les jetons doivent avoir une durée de vie de maximum 60s.
      • sub : Le sujet doit correspondre au login de l'agent à logguer
      • jti : Ceci est l'identifiant de la clé d'API générée dans l'admin Kiamo
    Afin de signer les jetons JWT, il faut utiliser une clé d'API. Dans le menu Développeur > Clés d'API de l'admin Kiamo, créer une clé d'API qui possède les droits "Agent Authentication" en "POST" et utiliser le token associé pour signer la clé. L'id de la clé doit être fourni dans le champ "jti" du payload du jeton JWT afin de permettre à Kiamo de vérifier la signature du JWT.

    Un paramètre "force" est également disponible, il permet de forcer la connexion de l'agent si le login ou l'extension sont déjà en cours d'utilisation. Les deux valeurs possibles sont "login_already_used" pour forcer la connexion avec un login déjà utilisé et "number_already_used" dans le cas où l'on veut forcer la connexion alors que l'extension est déjà utilisée.

Examples

Cas du mode none :

  • login: 0002
  • auth: none
  • extension: 33

agentVoice.agent.login('0002', '33', 'none');

Cas du mode password :

  • login: 0002
  • auth: password
  • extension: 33
  • password: 45kop:m

agentVoice.agent.login('0002', '33', 'password', '45kop:m');

Cas du mode JWT :

  • login: 0002
  • auth: jwt
  • extension: 33
  • password: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIwMDAyIiwianRpIjoiNiIsImV4cCI6MTIzNDU2Nzg5MH0.hDst16zLFtaTonyfKExuvuNYYJwip5iwaYtQsgDxIRc

agentVoice.agent.login('0002', '33', 'jwt', 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIwMDAyIiwianRpIjoiNiIsImV4cCI6MTIzNDU2Nzg5MH0.hDst16zLFtaTonyfKExuvuNYYJwip5iwaYtQsgDxIRc');

Cas d'une connexion forcée avec un login déjà utilisé:

  • login: 0002
  • auth: password
  • extension: 33
  • password: 45kop:m
  • force: login_already_used

agentVoice.agent.login('0002', '33', 'password', '45kop:m', 'login_already_used');

Cas d'une connexion forcée avec une extension déjà utilisée:

  • login: 0002
  • auth: password
  • extension: 33
  • password: 45kop:m
  • force: number_already_used

agentVoice.agent.login('0002', '33', 'password', '45kop:m', 'number_already_used');
Parameters:
Name Type Attributes Description
login string

Identifiant de l'agent

extension string

Numéro de poste de l'agent

auth string

Mode d'authentification à utiliser

passToken string <optional>

Le cas échéant, mot de passe de l'agent ou jeton JWT

force string <optional>

Le cas échéant, paramètre forçant la connexion

logout()

Description:
  • Déconnexion de l'agent en cas d'erreur sur la connexion

onCallOutListUpdate(callback)

Description:
  • Définition du code client à appeler lors de la réception des services d'appels manuels disponibles pour l'agent

Example
// le code suivant permet de mettre à jour une div, ayant pour classe js-agent-call-out-list-update-container,
// avec la liste des services de type appel manuel
agentVoice.agent.onCallOutListUpdate((data) => {
     const result = agentVoice.agent.getCallOutList();
     let list = '';
     if (result.length === 0) {
         list = 'pas chargé';
     } else {
         for (let elem in result) {
             list += 'id : ' + result[elem].id
                 + ', name : ' + result[elem].name
                 + '<br/>';
         }
     }
    document.querySelector('.js-agent-call-out-list-update-container').innerHTML = callOutList();
});
Parameters:
Name Type Description
callback function

le code à jouer

onError(callback)

Description:
  • Définition du code client à appeler en cas d'erreur Kiamo.

    Message peut contenir des informations supplémentaires pour certains codes.
    Params peut contenir un objet avec des valeurs utiles à l'erreur.
    Les code d'erreur possibles sur le onError :

    • license_problem_max_number_agents : le nombre de licences agents est atteint, impossible de connecter un agent
    • number_already_used : l'extension saisi par l'agent est déjà utilisé par un autre agent
    • incorrect_login : login ou mot de passe saisi par l'agent incorrect
    • login_already_used : l'agent est déjà connectée à l'aapli, cas d'un agent pas déloggé correctement
    • invalid_token : token saisi pour la connexion est non valide
    • locked_account : compte bloqué après 5 tentatives de login
    • incorrect_parameters : numéro saisi non valide pour un transfert d'appel
    • you_dont_have_call_license : pas la licence voix
    • cannot_call_your_own_number : Vous ne pouvez pas appeler votre propre numéro
    • impossible_dial_agent_cannot_receive_internal_call : Appel impossible, l'agent ne peut pas recevoir d'appel interne
    • impossible_dial : Appel impossible
    • this_agent_is_not_consultable : Cet agent n'est pas consultable
    • cannot_dial_during_wrapup : Vous ne pouvez pas passer un appel pendant le post-appel
    • cannot_dial_during_intercall_pause : Vous ne pouvez pas passer un appel pendant la pause obligatoire
    • the_dialed_number_is_an_agent_number : Le numéro composé est celui d'un agent. Vous devez le consulter avant de pouvoir lui transférer un appel
    • you_dont_have_file_license : Vous n'avez pas le média Personnalisé
    • media_call_saturated : Plus de licence Voix disponible
    • media_file_saturated : Plus de licence Personnalisé disponible
Example
// L'exemple ci-dessous met à jour une div, ayant pour classe, avec le message d'erreur retourné
agentVoice.agent.onError((code, message, params) => {
    document.querySelector('.js-agent-return-state-container').innerHTML = code;
});
Parameters:
Name Type Description
callback function

le code à jouer, la fonction prendra un paramètre au format suivant une chaîne de caractère, exemple "cannot_call_your_own_number"

onLogin(callback)

Description:
  • Définition du code client à appeler une fois l'agent réellement logué dans Kiamo

Example
// L'exemple ci-dessous met à jour une div ayant pour classe js-agent-name, avec le nom de l'agent et
// une div, ayant pour classe js-agent-group, avec le nom du groupe de l'agent
agentVoice.agent.onLogin(() => {
   document.querySelector('.js-agent-name').innerHTML = agentVoice.agent.getName();
   document.querySelector('.js-agent-group').innerHTML = agentVoice.agent.group.getName();
});
Parameters:
Name Type Description
callback function

la fonction client à exécuter

onLogout(callback)

Description:
  • Définition du code client à appeler quand la déconnexion de l'agent sera prise en compte dans Kiamo.

Example
// exemple en utilisant une fonction fléchée (https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Functions/Arrow_functions)
agentVoice.agent.onLogout(() => {
     console.log('Execution du code onLogout callback');
});
Parameters:
Name Type Description
callback function

le code client à jouer

onPopup(callback)

Description:
  • Définition du code client à appeler sur la réception des messages suivants dans le cadre des remontées de fiches :

    • command : remontée de fiche autre que les 3 types ci-dessous, format du message "data":{"task_ref":103014,"name":"Nouvelle remontee de fiche 2","program":"toto.exe","parameters":""}
    • url : remontée de fiche de type page web avec mode d'affichage à bandeau agent, format du message "data":{"url":"1","width":800,"height":600,"display_close_button":true}
    • udp : remonté de fiche de type message UDP, format du message "data":{"port":22,"message":"1"}
    • http : remontée de fiche de type Appel à un web service, format du message "data":{"host":"127.0.0.1","method":"GET","contents":"REMY0 1 "}
Example
// L'exemple ci-dessous parcours le retour en fonction du type et affiche les informations recu dans une div ayant la classe js-popup
agentVoice.agent.onPopup((type, data) => {
    let result;
    switch (type) {
        case 'command':
            result = 'taskRef : ' + data.task_ref + ' - Name : ' + data.name + ' - Programme : ' + data.program + ' - Parameters : ' + data.parameters;
            break;
        case 'url':
            result = 'Url : ' + data.url + ' - Width : ' + data.width + ' - Height : ' + data.height + ' - DisplayCloseButton : ' + data.display_close_button;
            break;
        case 'udp':
            result = 'Port: ' + data.port + ' - Message :' + data.message;
            break;
        case 'http':
            result = 'Host : ' + data.host + ' - Method : ' + data.method + ' - Content : ' + data.content;
            break;
    }
    const div = document.querySelector('.js-popup');
    div.innerHTML = div.innerHTML + '<br/>Type : ' + type + ' - params : ' + result;
});
Parameters:
Name Type Description
callback function

le code à jouer. La fonction prend en paramètre un type et les paramètres.

les types possibles sont :

  • command
  • url
  • udp
  • http

onReturnStateUpdate(callback)

Description:
  • Définition du code client à appeler sur l'état réservé lors d'une demande de changement d'état de l'agent par exemple. Le format du retour est le suivant : {'state_id':20}

Example
// l'exemple suivant affiche un message dans la console du navigateur
agentVoice.agent.onReturnStateUpdate((data) => {
    console.log(data.state_id);
});
Parameters:
Name Type Description
callback function

le code à jouer,

onSettingsUpdate(callback)

Description:
  • Définition du code client à appeler sur la réception des paramètres de l'agent.

Examples
//Exemple du format de message :

{
   "param1":"valeur params1",
   "param2":"valeur params2",
   "param3":"valeur params3"
}
// Exemple d'appel

// L'exemple ci-dessous permet de mettre à jour une div, ayant pour classe js-params, avec les paramètres retourné par Kiamo
// Parcours des paramètres, utilisation d'une fonction récursive pour les cas avec un objet dans les paramètres
// comme par exemple : {"keep_position":false,"shortcuts":[{"fct":4,"code":65,"key":17}]}
function recursionSettings(parameters){
    let displayedParams = '';
    for (let key in parameters) {
         if(typeof parameters[key] !== "object"){
             displayedParams += key + ': ' + parameters[key] + '<br/>';
         } else{
             displayedParams += recursionSettings(parameters[key]);
         }
     }
     return displayedParams
 }
 agentVoice.agent.onSettingsUpdate(() => {
     document.querySelector('.js-params-container').classList.remove("hidden");
     let parameters = agentVoice.agent.getSettings();
     let displayedParams = recursionSettings(parameters);
     document.querySelector('.js-params').innerHTML = '<b>Parameters :</b><br/>' + displayedParams;
});
Parameters:
Name Type Description
callback function

le code à jouer

onStateChange(callback)

Description:
  • Définition du code client à appeler sur le changement d'état de l'agent connecté. Le code sera joué lors de la prise en compte du nouvel état de l'agent par exemple pour mettre à jour l'état de l'agent dans l'application.

Example
// L'exemple ci-dessous permet de mettre à jour une div ayant pour classe js-current-state
agentVoice.agent.onStateChange(() => {
     document.querySelector('.js-current-state').innerHTML = agentVoice.agent.currentState.getLabel();
});
Parameters:
Name Type Description
callback function

le code à jouer

onStatesUpdate(callback)

Description:
  • Définition du code client à appeler sur la réception de tous les états disponibles pour le groupe de l'agent

Example
// Le code ci-dessous permet de mettre à jour un select, ayant la classe js-state-select, avec les états
// sélectionnables comme prêt et pause et met à jour une textarea, ayant la classe js-states-list,
// avec les autres états
agentVoice.agent.onStatesUpdate(() => {
    const result = agentVoice.agent.getStates();
    let states = '';
    for (let elem in result) {
        if (result[elem].selectable) {
            let newOption;
            if (agentVoice.agent.currentState.getID() === result[elem].id) {
            // sélectionne l'état actuel de l'agent
                newOption = new Option(result[elem].label, result[elem].id, true, true);
            } else {
                newOption = new Option(result[elem].label, result[elem].id);
            }
            document.querySelector('.js-state-select').append(newOption);
        } else {
            states += 'id : ' + result[elem].id
                + ', type : ' + result[elem].type
                + ', label : ' + result[elem].label
                + ', selectable : ' + result[elem].selectable + '\n';
        }
    }
    document.querySelector('.js-states-list').value = states;
});
Parameters:
Name Type Description
callback function

le code à jouer

onSupervisorMessage(callback)

Description:
  • Définition du code client à appeler sur la réception d'un message provenant d'un superviseur envoyé depuis la vue de supervision

Examples
// Exemple du format de message fourni au code client :
   'data':{
       'supervisor_firstname':'',
       'supervisor_name':'',
       'message':'ENVOI MESSAGE',
       'avatar':{'color':'','version':''}
   }
//Exemple d'utilisation dans le code client
agentVoice.agent.onSupervisorMessage((data) => {
    console.log(data.message);
});
// dans la console du navigateur, on verra :
ENVOI MESSAGE
Parameters:
Name Type Description
callback function

fonction du client, ayant un paramètre dont le format est le suivant :

{ 'supervisor_firstname':'', 'supervisor_name':'', 'message':'message envoyé par le superviseur depuis la vue de supervision', 'avatar':{'color':'','version':''} }

refreshCallOutList() → {boolean}

Description:
  • Méthode qui permet d'actualiser la liste les services d'appels sortants. Cela déclenchera un évènement "onCallOutListUpdate" et la liste sera disponible à l'appel de la méthode "getCallOutList".

Example
agentVoice.agent.refreshCallOutList();
Returns:
Type
boolean

refreshSettings() → {boolean}

Description:
  • Demande de récupération des paramètres agent depuis la base de connées (colonne AgentParams de la table cfg_agent)

Returns:
Type
boolean

setPauseState()

Description:
  • L'agent est passé en pause

setReadyState()

Description:
  • L'agent est passé en prêt

updateSettings(settings)

Description:
  • Met à jour les paramètres agents Exemple de format attendu en paramètre :

    {"always_on_top":false,"hide_main_menu":false,"keep_position":false,"shortcuts":[{"fct":4,"code":65,"key":17}]}

Example
// exemple d'appel
let params = {param1:"value1", param2:"value2", param3:"value3"};
agentVoice.agent.updateSettings(params);
Parameters:
Name Type Description
settings object

les paramètres sont au format json