Comment ajouter des agents de manière programmatique à la base de données CommunityWFM. CommunityWFM prend en charge à la fois une procédure stockée et une API. Pour utiliser l'interface de la base de données, ce document suppose que le lecteur a une certaine familiarité avec T-SQL et les clients SQL Server. De plus, l'utilisation des fonctions de l'API RESTful nécessite une compréhension de la création de requêtes HTTP et de la consommation de données au format JSON.
Intégration des agents Community
Community prend en charge deux méthodes pour ajouter des agents de manière programmatique à la base de données : une méthode de procédure stockée et une fonction API exposée par le service RESTful CommunityWeb API.
Méthode de procédure stockée Community
Avec l'accès à la base de données Community3, les utilisateurs peuvent accéder à la procédure stockée spAgentsInsert pour ajouter des lignes d'utilisateur à la t_agent_table. La signature de la procédure est incluse ci-dessous. Des contraintes de clé étrangère sont implémentées dans cette procédure, dont vous devrez être conscient. Chaque clé étrangère est décrite dans le tableau ci-dessous.
Clés étrangères
| Supervisor_id | Clé étrangère vers la table t_agent identifiant le superviseur de cet agent, ou NULL si aucun |
| Sa_activity_id | Clé étrangère vers t_activity identifiant le site auquel l'agent est assigné. Ne peut pas être NULL |
| Work_type | Clé étrangère vers la table t_exception_types identifiant le type d'événement de travail par défaut pour cet agent. Ne peut pas être NULL |
| Sa_role_id | Clé étrangère vers la table t_roles identifiant le rôle système de cet agent. 100=Agent, 200=Superviseur, 300=Planificateur et 400=Administrateur. Ne peut pas être NULL |
| Sa_timezone_id | Clé étrangère vers la table t_timezones permettant un fuseau horaire personnalisé. Si NULL, cela est hérité de la définition du site. |
| EmpClassificationId | Clé étrangère vers t_employee_classifications. Peut être NULL |
| ResponsibleAgentId | Identifie l'utilisateur responsable de cette modification. Utilisé à des fins d'audit et doit être une entrée dans t_agent |
Procédure stockée
La procédure spAgentsInsert a la signature suivante :
ALTER PROCEDURE [dbo].[spAgentsInsert]
(@first_name name
,@last_name name
,@middle_initial name
,@title name
,@email_address description
,@employee_id name
,@supervisor_id int
,@sa_activity_id int
,@hire_date datetime = NULL
,@work_type int
,@login_id name
,@tiebreaker int
,@sa_role_id int
,@sa_timezone_id int
,@EmpClassificationId int
,@ResponsibleAgentId int = NULL
,@ExternalUserId nvarchar(255) = NULL
,@UserTags nvarchar(max)
,@sa_agent_id int OUTPUT)
Méthode API
Community prend également en charge une fonction API exposée par le service RESTful CommunityWebAPI. Les informations ci-dessous devraient vous permettre d'ajouter des agents avec succès via le service RESTful de manière programmatique.
Interface API
Le verbe est POST et le point d'entrée est http://<servername>/CommunityWebApi/api/agent*
L'exécution de l'appel renvoie un objet WebApiResult standard de WFMSG (au format JSON), qui inclut les membres suivants :
Success – booléen indiquant que l'opération a réussi.
Data – si réussi, contient l'objet Agent nouvellement créé. Si non réussi, ce membre est NULL.
Message – si non réussi, contient l'exception levée ; sinon, ce membre est vide.
ExceptionResult – si une exception est levée, c'est le corps complet de l'exception ; sinon, ce membre est NULL.
*Remarque : Community prend en charge l'utilisation de déploiements API CommunityWeb simultanés pour l'intégration dans une architecture sécurisée ainsi que le déploiement DMZ ou d'appareil dédié pour les interfaces externes.
Paires nom/valeur
Le tableau suivant contient les paires nom/valeur qui doivent être incluses dans la soumission de formulaire pour l'appel RESTful. Notez que pour insérer de nouveaux agents dans la base de données, la valeur transactionFlagId doit être définie sur 1.
| Membre de la classe | Type | Req? | Description |
| transactionFlagId | int | Oui |
Indique le type de transaction POST à effectuer. Les valeurs valides sont : 1 : Insérer une nouvelle ligne Agent (t_agent) 2 : Mettre à jour une ligne Agent existante 3 : Supprimer une ligne Agent existante 4 : Mettre à jour le type de travail par défaut pour une ligne Agent existante 5 : Mettre à jour l'ID de connexion 6 : Mettre à jour le mot de passe 7 : Importer depuis un système tiers (par exemple, base de données de staging) |
| id | Int? | Non | Fournit le sa_agent_id unique (de t_agent)
|
| defaultWorkTypeId | Int? | Non | Fournit le type de travail par défaut pour les horaires de cet agent (utilisateur). C'est une valeur de clé étrangère vers la table t_exception_types, et n'est PAS NULL sur la table t_agent.
|
| supervisorId | Int? | Non | Fournit l'ID du superviseur de l'agent. C'est une colonne nullable dans la table t_agent. De plus, c'est une clé étrangère de même table vers la table t_agent.
|
| timeZoneId | Int | Non | Indique le fuseau horaire de l'agent. Si NULL, alors le fuseau horaire par défaut sera utilisé (tel que défini par le site de l'agent). |
| employeeClassificationId | Int | Non | Indique la classification de l'employé assignée à cet agent. Si NULL, alors aucune classification ne sera assignée. |
| siteId | Int | Non | Indique le site auquel cet agent appartient. Clé étrangère vers la table t_activity. |
| firstName | String | Oui | Prénom |
| lastName | String | Oui | Nom de famille |
| middleInitial | String | Oui | Initiale du deuxième prénom |
| hireDate | String | Oui | Date d'embauche ; doit être au format AAAA/MM/JJ |
| employeeId | String | Oui | ID de l'employé |
| title | String | Oui | Titre |
| emailAddress | String | Oui | Adresse courriel |
| roleId | Int | Non | Rôle de l'agent dans l'application. Clé étrangère vers la table t_roles. |
| tiebreakValue | Int | Non | Valeur de départage |
| loginId | String | Oui | ID de connexion à l'application (notez que ce n'est pas l'ID de connexion ACD). |
| Mot de passe | String | Oui | Mot de passe pour la connexion |
| externalLoginId | String | Oui | Pour les environnements qui utilisent l'authentification Active Domain / Intégrée, c'est l'ID de connexion utilisé pour connecter les clients externes à l'application. Principalement utilisé pour les applications mobiles Community Everywhere. |
| userTags | String | Oui | Collection de hashtags associés à l'agent. |
| userID | Int | Non | ID de l'utilisateur responsable des modifications apportées à cet agent. Utilisé à des fins de sécurité et d'audit. |
Déclaration de classe d'exemple pour les paires nom/valeur décrites dans le tableau ci-dessus
public class AgentPostParams
{
/// <summary>
/// transactionFlagId décide comment modifier l'agent.
/// </summary>
public int transactionFlagId { get; set; }
/// <summary>
/// id
/// </summary>
public int? id { get; set; }
/// <summary>
/// defaultWorkTypeId
/// </summary>
public int? defaultWorkTypeId { get; set; }
/// <summary>
/// supervisorId
/// </summary>
public int? supervisorId { get; set; }
/// <summary>
/// timeZoneId
/// </summary>
public int? timeZoneId { get; set; }
/// <summary>
/// employeeClassificationId
/// </summary>
public int? employeeClassificationId { get; set; }
/// <summary>
/// siteId
/// </summary>
public int? siteId { get; set; }
/// <summary>
/// firstName
/// </summary>
public string firstName { get; set; }
/// <summary>
/// lastName
/// </summary>
public string lastName { get; set; }
/// <summary>
/// middleInitial
/// </summary>
public string middleInitial { get; set; }
/// <summary>
/// hireDate
/// </summary>
public string hireDate { get; set; }
/// <summary>
/// employeeId
/// </summary>
public string employeeId { get; set; }
/// <summary>
/// titre
/// </summary>
public string title { get; set; }
/// <summary>
/// adresse courriel
/// </summary>
public string emailAddress { get; set; }
/// <summary>
/// rôleId
/// </summary>
public int? roleId { get; set; }
/// <summary>
/// valeur de départage
/// </summary>
public int? tiebreakValue { get; set; }
/// <summary>
/// identifiant de connexion
/// </summary>
public string loginId { get; set; }
/// <summary>
/// mot de passe
/// </summary>
public string password { get; set; }
/// <summary>
/// identifiant de connexion externe
/// </summary>
public string externalLoginId { get; set; }
/// <summary>
/// étiquettes utilisateur
/// </summary>
public string userTags { get; set; }
/// <summary>
/// Pour des raisons de sécurité.
/// </summary>
public int? userId { get; set; }
}