- 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
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 :
|
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 |