Le script d'agent s’exécute en arrière-plan dans l’Agent de chaque poste de travail. Il réagit à des événements — une conversation sonne, est connectée ou se termine, l’agent passe en post-traitement ou se connecte — et déclenche alors lui-même une action. Tâches typiques :
- ouvrir la fiche client de votre CRM dans le module Navigateur dès qu’un appel est connecté, avec le numéro de téléphone ou un numéro de client issu des données jointes ;
- démarrer un autre programme sur le poste de travail ou appeler un service web ;
- afficher une fenêtre personnalisée ;
- déclencher un post-traitement, une activité ou une déconnexion, ou piloter un voyant d’état.
Il existe un seul script pour tout le système. Il s’exécute dans l’Agent avec les droits de l’utilisateur Windows connecté et peut faire tout ce qu’un programme .NET peut faire sur le poste de travail.
Prérequis
- Le profil d’agent effectif autorise Scripts d’agent — onglet Caractéristiques, activé par défaut ; voir Les paramètres d’un profil.
- L’agent reçoit à la connexion une licence Agent: Exécutez les scripts agent. Celle-ci est incluse dans les packages Professional, Premium et Premium+ et dans chaque profil de licence, voir Fonctionnalités. Sans licence, aucun script ne s’exécute pour cet agent.
- Pour modifier le script, vous avez besoin du droit Configuration du script.
Configurer le script
- Ouvrez la configuration du serveur et passez à l’onglet Script.
- Écrivez le script dans l’éditeur de code. L’éditeur signale les erreurs dès la saisie.
- Cliquez sur Sauvegarder.
Après l’enregistrement, tous les agents connectés reçoivent immédiatement le nouveau script, tous les autres à leur prochaine connexion. Chaque Agent le compile lui-même et le démarre. Un script comportant des erreurs est lui aussi enregistré — mais il ne s’exécute alors pas dans l’Agent.
Structure
Un script d’agent est exactement une classe :
- Elle s’appelle
AgentScriptet hérite deMyCCAgentScript. - Elle se trouve dans l’espace de noms
ilogixx.Agentou dans aucun. - Elle a un constructeur public sans paramètres — ou aucun constructeur. Dans
le constructeur,
Agent,Conversationset les commandes ne sont pas encore utilisables. - Elle redéfinit les événements auxquels elle doit réagir,
avec
public override void …. - Elle apporte elle-même ses lignes
using, y comprisusing System;.
L’Administration installe un gabarit avec tous les événements sous
%ProgramData%\ilogixx GmbH\myContactCenter\Script Templates\AgentScript.cs.
N’en reprenez que les événements dont vous avez besoin.
Comment le script s’exécute
- L'un après l'autre : l’Agent appelle les événements les uns après les autres, en arrière-plan. Si une action dure longtemps — par exemple l’appel d’un service web —, tous les événements suivants arrivent d’autant plus tard.
- L'état au moment de l'événement : le temps que le script soit appelé,
une conversation peut déjà avoir évolué. Évaluez donc les paramètres de
l’événement, par exemple
statedansMy_ConversationStateChanged, et nonconversation.State. - Fenêtres : vous affichez vos propres fenêtres avec
Show(form); l’Agent les ouvre au-dessus de sa fenêtre principale. - Durée de vie : le script s’exécute jusqu’à ce que l’Agent soit fermé ou qu’un script modifié arrive.
Trouver les erreurs
L’Agent n’affiche pas les erreurs du script. Interceptez donc toutes les exceptions dans chaque événement et écrivez-les dans le journal :
try
{
// …
}
catch (Exception ex)
{
Trace.Error(ex);
}
Vous activez le journal du script dans la configuration du serveur, dans l’onglet Paramètres de traçage, sous-onglet Agent :
- Cochez à droite les agents dont vous avez besoin du journal.
- Réglez le domaine Script sur Information ou détaillés.
- Cliquez sur Sauvegarder.
Les lignes du script commencent par Script: suivi du nom de l’agent. Si la
compilation échoue dans l’Agent, les erreurs y figurent également.
Exemple : ouvrir les données client dans le module Navigateur
Le script ouvre la fiche client d’un CRM dans le module Navigateur dès qu’un appel entrant est connecté. Un flux a auparavant enregistré le numéro de client avec Attacher des données sous la clé « NumeroClient ».
using System;
using ilogixx.SharedFiles.GeneralDefinitions;
using ilogixx.SharedFiles.GeneralEnums;
namespace ilogixx.Agent;
public class AgentScript : MyCCAgentScript
{
private string lastOpenedConversationId = string.Empty;
public override void My_ConversationStateChanged(Struct_Conversation conversation, ConversationState previousState, ConversationState state)
{
try
{
if (state != ConversationState.Connected || !conversation.IsInboundCall) return;
if (conversation.Id == lastOpenedConversationId) return;
lastOpenedConversationId = conversation.Id;
string customerNumber = conversation.AttachedData.StringValue("NumeroClient");
BrowseTo("https://crm.example.com/client?num=" + Uri.EscapeDataString(customerNumber), true);
}
catch (Exception ex)
{
Trace.Error(ex);
}
}
}
La comparaison avec la dernière conversation ouverte empêche la fiche de
s’ouvrir une seconde fois lorsque l’agent met la communication en attente puis
la reprend. Pour que la page s’ouvre dans le navigateur par défaut plutôt que
dans l’Agent, remplacez la ligne contenant BrowseTo par :
string url = "https://crm.example.com/client?num=" + Uri.EscapeDataString(customerNumber);
System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo { FileName = url, UseShellExecute = true });