Cómo agregar agentes al programa a la base de datos de CommunityWFM. CommunityWFM admite tanto un procedimiento almacenado como una API. Para usar la interfaz de la base de datos, este documento asume que el lector tiene cierta familiaridad con T-SQL y clientes de SQL Server. Además, el uso de las funciones de la API RESTful requiere comprender cómo crear solicitudes HTTP y cómo consumir datos en formato JSON.
Integración de agentes en Community
Community admite dos métodos para agregar agentes al programa a la base de datos: un método de procedimiento almacenado y una función de API expuesta por el servicio RESTful de CommunityWeb API.
Método de procedimiento almacenado de Community
Con acceso a la base de datos Community3, los usuarios pueden acceder al procedimiento almacenado spAgentsInsert para agregar filas de usuario a la t_agent_table. La firma del procedimiento se incluye a continuación. En este procedimiento se implementan restricciones de clave externa que necesitará conocer. Cada clave externa se describe en la tabla a continuación.
Claves externas
| Supervisor_id | FK a la tabla t_agent que identifica al supervisor de este agente, o NULL si no tiene |
| Sa_activity_id | FK a t_activity que identifica el sitio al que está asignado el agente. No puede ser NULL |
| Work_type | FK a la tabla t_exception_types que identifica el tipo de evento de trabajo predeterminado para este agente. No puede ser NULL |
| Sa_role_id | FK a la tabla t_roles que identifica el rol del sistema que tiene este agente. 100=Agente, 200=Supervisor, 300=Programador y 400=Administrador. No puede ser NULL |
| Sa_timezone_id | FK a la tabla t_timezones que permite una zona horaria personalizada. Si es NULL, se hereda de la definición del sitio. |
| EmpClassificationId | FK a t_employee_classifications. Puede ser NULL |
| ResponsibleAgentId | Identifica al usuario responsable de realizar este cambio. Se utiliza para fines de auditoría y debe ser una entrada en t_agent |
Procedimiento almacenado
El procedimiento spAgentsInsert tiene la siguiente firma:
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étodo de API
Community también admite una función de API expuesta por el servicio RESTful de CommunityWebAPI. La información a continuación debería permitirle agregar agentes exitosamente a través del servicio RESTful de manera programática.
Interfaz de API
El verbo es POST y el punto de entrada es http://<servername>/CommunityWebApi/api/agent*
La ejecución de la llamada devuelve un objeto WebApiResult estándar de WFMSG (en formato JSON), que incluye los siguientes miembros:
Success – booleano que indica que la operación fue exitosa.
Data – si es exitoso, contiene el objeto Agente recién creado. Si no es exitoso, este miembro es NULL.
Message – si no es exitoso, contiene la excepción lanzada; de lo contrario, este miembro está vacío.
ExceptionResult – si se lanza una excepción, este es el cuerpo completo de la excepción; de lo contrario, este miembro es NULL.
*Nota: Community admite el uso de implementaciones concurrentes de CommunityWeb API para la integración dentro de una arquitectura segura, así como la implementación en DMZ o en un dispositivo dedicado para interfaces externas.
Pares de nombre/valor
La siguiente tabla contiene los pares de nombre/valor que deben incluirse en el envío del formulario para la llamada RESTful. Tenga en cuenta que para insertar nuevos agentes en la base de datos, el valor de transactionFlagId debe establecerse en 1.
| Miembro de la clase | Tipo | Req? | Descripción |
| transactionFlagId | int | Sí |
Indica el tipo de transacción POST a realizar. Los valores válidos son: 1: Insertar una nueva fila de Agente (t_agent) 2: Actualizar una fila de Agente existente 3: Eliminar una fila de Agente existente 4: Actualizar el tipo de trabajo predeterminado para una fila de Agente existente 5: Actualizar ID de inicio de sesión 6: Actualizar contraseña 7: Importar desde un sistema de terceros (por ejemplo, base de datos de preparación) |
| id | Int? | No | Proporciona el sa_agent_id único (de t_agent)
|
| defaultWorkTypeId | Int? | No | Proporciona el tipo de trabajo predeterminado para los horarios de este agente (usuario). Este es un valor de clave externa para la tabla t_exception_types, y NO ES NULO en la tabla t_agent.
|
| supervisorId | Int? | No | Proporciona el id del supervisor del agente. Esta es una columna que puede ser NULA en la tabla t_agent. Además, es una clave externa de la misma tabla t_agent.
|
| timeZoneId | Int | No | Indica la zona horaria del agente. Si es NULO, se usará la zona horaria predeterminada (según lo definido por el sitio del agente). |
| employeeClassificationId | Int | No | Indica la clasificación del empleado asignada a este agente. Si es NULO, no se asignará ninguna clasificación. |
| siteId | Int | No | Indica el sitio al que pertenece este agente. Clave externa para la tabla t_activity. |
| firstName | String | Sí | Nombre |
| lastName | String | Sí | Apellido |
| middleInitial | String | Sí | Inicial del segundo nombre |
| hireDate | String | Sí | Fecha de contratación; debe estar en formato AAAA/MM/DD |
| employeeId | String | Sí | ID del empleado |
| title | String | Sí | Título |
| emailAddress | String | Sí | Dirección de correo electrónico |
| roleId | Int | No | Rol del agente dentro de la aplicación. Clave externa para la tabla t_roles. |
| tiebreakValue | Int | No | Valor de desempate |
| loginId | String | Sí | ID de inicio de sesión de la aplicación (nota: este no es el ID de inicio de sesión ACD). |
| Password | String | Sí | Contraseña para el inicio de sesión |
| externalLoginId | String | Sí | Para entornos que utilizan Autenticación Integrada / Dominio Activo, este es el ID de inicio de sesión utilizado para conectar clientes externos a la aplicación. Principalmente utilizado para las aplicaciones móviles de Community Everywhere. |
| userTags | String | Sí | Colección de hashtags asociados con el agente. |
| userID | Int | No | ID de usuario responsable de realizar los cambios a este agente. Utilizado para propósitos de seguridad y auditoría. |
Declaración de clase de ejemplo para los pares de nombre/valor descritos en la tabla anterior
public class AgentPostParams
{
/// <summary>
/// transactionFlagId decide cómo modificar el agente.
/// </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>
/// título
/// </summary>
public string title { get; set; }
/// <summary>
/// dirección de correo electrónico
/// </summary>
public string emailAddress { get; set; }
/// <summary>
/// roleId
/// </summary>
public int? roleId { get; set; }
/// <summary>
/// valor de desempate
/// </summary>
public int? tiebreakValue { get; set; }
/// <summary>
/// id de inicio de sesión
/// </summary>
public string loginId { get; set; }
/// <summary>
/// contraseña
/// </summary>
public string password { get; set; }
/// <summary>
/// id de inicio de sesión externo
/// </summary>
public string externalLoginId { get; set; }
/// <summary>
/// etiquetas de usuario
/// </summary>
public string userTags { get; set; }
/// <summary>
/// Para propósitos de seguridad.
/// </summary>
public int? userId { get; set; }
}