You are on page 1of 18

Contenido

1.
2.
3.

CONTEXTO..............................................................................................................2
PUNTOS DE INTEGRACION.................................................................................2
ANEXOS...................................................................................................................4
A.
Funciones de BarAgentControl.tlb.....................................................................4
1.
Obtencin del ID de la llamada (GetIdCall)...................................................4
2.
Obtener Estado (CurrentIntStateByID)...........................................................5
3.
Colgar la llamada (HangUpByID)..................................................................5
4.
Terminar Interaccin (WrapUpByID :After Call Work):................................6
5.
Generar Grabaciones (RecordAst)..................................................................7
6.
Creacin de llamadas (MakeCallDir)..............................................................7
B.
Funciones de InConcertSDK e InconcertSDKnet..............................................8
1.
Login (Login y LoginFromToken)..................................................................8
2.
Establecer resultado de Gestin (SetDispositionCode).................................10
3.
Reagendar contactos (ReScheduleContact)..................................................11
4.
Reagendar contactos (ReScheduleContactToPhone)....................................12
C.
Funciones de LBATCHVIEW..........................................................................14
1.
Recuperacin de grabaciones (PlayAudio)...................................................14
D.
Ejemplo completo para el procedimiento Guardar...........................................15
E.
Ejemplo completo del procedimiento de Importacin de Contactos a travs de
la API de Inconcert......................................................................................................16

Especificacin para Integracin InConcert-Aplicacin Gestin


1. CONTEXTO
El presente documento describe los puntos de integracin entre InConcert y la aplicacin de
gestin propietaria del cliente.
A continuacin se describen los puntos de contacto entre Inconcert y dicha aplicacin de
gestin, utilizando el caso de una campaa de discador.

2. PUNTOS DE INTEGRACION
Para el caso de una campaa de discador, se identifican las siguientes etapas:

Imagen 1

1. El cliente genera la lista de contactos que quiere cargar al discador. Esta lista se define
segn sus propios criterios de negocio y la informacin obtenida de los reportes de
clientes contactados y no contactados en fechas previas (obtenidos en el punto 6).
2. Para el caso de carga directa va API, el cliente deber dejar la lista de contactos
disponible en formato CSV en un Path determinado e invocar el mtodo de la API

correspondiente. (Ver Importacin de Contactos va API)


El formato del archivo de carga se define en conjunto con InConcert y debe tener como
mnimo las siguientes columnas:
- IDCliente. En la aplicacin de gestin se maneja un identificador interno y nico?
- Telefono_1, Telefono_2, Telefono_3, Telefono_4, Telefono_5 (Tantos telfonos
como se deseen manejar en el discador)
- NombreCliente
- Prioridad de ser requerida
- FechaDeCita de ser requerida (formato DateTime)
- Si se desean campos adicionales, se deben especificar.
3. El otro mtodo para la carga de contactos, es a travs de un archivo CSV importado
desde el Administrador Web.
El archivo a cargar deber contar con las columnas definidas en el formato de Carga.
4. El discador va a entregar a los agentes, las llamadas a los contactos cargados en los
pasos previos.
5. En el momento en que la llamada se conecta con el cliente, la aplicacin Inconcert
Agent deber realizar el screen pop-up de la aplicacin de gestin.
Dicha aplicacin deber recibir estos parmetros como mnimo para poder luego enviar
el feedback de la gestin a InConcert (necesario para manejo de Callbacks, por
ejemplo):
a. ID Lote (Identificador del lote para el cual se carg el contacto)
b. ID Llamada inConcert.
c. ID Cliente.
ID Proceso inConcert
d. UserAuthToken. (Solo si la aplicacin cliente realizar el Login mediante el
mtodo LoginFromToken (Ver Anexo 3.B.1)
e. IDAgente (Solo si la aplicacin va a reagendar llamadas para el mismo agente
que atendi la llamada)
f. Se requiere algn parmetro ms?
El cliente deber especificar como se hace la invocacin a la aplicacin de gestin. Es
decir, como se hace para invocar a la aplicacin desde una aplicacin externa (por
ejemplo desarrollada en VB) pasndole parmetros y dejndola posicionada en la
ventana correcta? Qu tipo de aplicacin es? (Web, COM)
6. La aplicacin de gestin, deber devolverle a Inconcert feedback sobre el resultado de
la gestin.
Desde la app se ejecutaran mtodos de la API provistos por inConcert en 3
situaciones:
a) Cuando reagenden una llamada (para el Agente o la Campaa)
Metodo a utilizar: ReScheduleContact (Ver Anexo 3.B.3)
b) Para pasar a inConcert resultados de gestin desde la aplicacin.
Metodo a utilizar: SetDispositionCode (Ver Anexo 3.B.2)
c) Para escuchar una grabacin
Metodo a utilizar: PlayAudio (Ver Anexo 3.B.2)

Para poder invocar estos procedimientos almacenados es que se necesita que la


aplicacin reciba los parmetros ID Lote y ID Cliente.
7. Reportes de Resultados: Inconcert puede generar reportes indicando cuales contactos
fueron contactados y cuales no.
Tener en cuenta que por contactados se entiende que la llamada haya sido atendida
Los reportes de resultados de gestin debern generarse por la aplicacin de gestin
del cliente.

3. ANEXOS
Se utilizan el API InconcertSDK, BarAgentControl y LBatchView para la ejecucin de cada
accin requerida.
A continuacin se detalla las funciones provistas por aplicacin para ser consumidas por un
cliente:
En caso de requerir la especificacin de mtodos de InconcertSDK que no se encuentran
en este documento debe dirigirse a esta pgina pblica:
http://kbase.inconcerthelpdesk.com/index.php/InConcertSDK
NOTA: En el caso particular de integrarse desde una Pgina Web donde se utilice
JavaScript para el desarrollo de la integracin. Se debe tener en cuenta que los
navegadores Firefox y Chrome cuentan con restricciones de seguridad que imposibilitan la
ejecucin de ste lenguaje.
Si se identifica el uso de alguno de los dos mencionado se revisar previamente la correcta
ejecucin de cdigo JavaScript como el detallado en los ejemplos.
Por lo antes expuesto se recomienda utilizar el navegador Internet Explorer.

a. Funciones de BarAgentControl.tlb
Forma de invocacin: Creando un objeto a partir del COM.
Ej Genrico VB 6.0
Dim objBarAgent As Object
Dim IdLlamada As String
Set objBarAgent = CreateObject("BarAgentControl.BAControl")
IdLlamada = objBarAgent.GetIdCall()
MsgBox (IdLlamada)
Esto se puede ejecutar tanto desde en .CSV como dentro de un proyecto vb 6.0
Ej Genrico C# NET 2.0
Type objBAType;
Object objBA;
objBAType = Type.GetTypeFromProgID("BarAgentControl.BAControl");
objBA = Activator.CreateInstance(objBAType);
object idcallxx = objBAType.InvokeMember("GetIDCall", System.Reflection.BindingFlags.InvokeMethod,
null, objBA, null);
MessageBox.Show(idcallxx.ToString());
Javascript
MyObject = new ActiveXObject( "BarAgentControl.BAControl" );
INTERACTIONID = MyObject.GetIdCall();

i. Obtencin del ID de la llamada (GetIdCall).


Para obtener el identificador de la llamada que un agente tiene actualmente en curso
en su aplicacin de agente, se deber invocar una interface COM provista por
inConcert en el desktop del agente.
Definicin:
Function GetIDCall() As String
Parmetros:
No
VB 6.0

Dim objBarAgent As Object


Dim IdLlamada As String
Set objBarAgent = CreateObject("BarAgentControl.BAControl")
IdLlamada = objBarAgent.GetIdCall()
MsgBox (IdLlamada)
Esto se puede ejecutar tanto desde en .CSV como dentro de un proyecto vb 6.0
C# NET 2.0
Type objBAType;
Object objBA;
objBAType = Type.GetTypeFromProgID("BarAgentControl.BAControl");
objBA = Activator.CreateInstance(objBAType);
object idcallxx = objBAType.InvokeMember("GetIDCall", System.Reflection.BindingFlags.InvokeMethod,
null, objBA, null);
MessageBox.Show(idcallxx.ToString());
Javascript
MyObject = new ActiveXObject( "BarAgentControl.BAControl" );
INTERACTIONID = MyObject.GetIdCall();

ii. Obtener Estado (CurrentIntStateByID).


Obtiene el estado actual del BarAgent.
Definicin:
Function GetIDCall() As String
Parmetros
Id de la llamada de InConcert. Se puede obtener ejecutando el mtodo GetIdCall.
VB 6.0
Dim objBarAgent
Dim Resp
Set objBarAgent = CreateObject("BarAgentControl.BAControl")
Resp = objBarAgent. CurrentIntStateByID ("IDdellamada de inConcert")
C# NET 2.0
object[] parametros = new object[] { "IDdellamada de inConcert" };
Type t = Type.GetTypeFromProgID("BarAgentControl.BAControl");
Object obj = Activator.CreateInstance(t);
object retVal = t.InvokeMember("CurrentIntStateByID ", System.Reflection.BindingFlags.InvokeMethod,
null, obj, parametros);

iii. Colgar la llamada (HangUpByID)


Este mtodo se utiliza para colgar la llamada en curso.
Nota: la interaccin del cliente sigue activa en WrapUp luego de terminada la llamada.
Definicin:
Function HangUpByID(IDdeLaLlamada) as String
Parmetros:
Id de la llamada de InConcert. Se puede obtener ejecutando el mtodo GetIdCall.
VB 6.0

Dim objBarAgent As Object


Set objBarAgent = CreateObject("BarAgentControl.BAControl")
objBarAgent.HangUpByID(IDdellamada de inConcert)
Esto se puede ejecutar tanto desde en .CSV como dentro de un proyecto vb 6.0
C# NET 2.0
Type objBAType;
Object objBA;
object[] parametros = new object[] { "IDdellamada de inConcert" };
objBAType = Type.GetTypeFromProgID("BarAgentControl.BAControl");
objBA = Activator.CreateInstance(objBAType);
objBAType.InvokeMember("HangUpByID ", System.Reflection.BindingFlags.InvokeMethod,
null, objBA, parametros);
Javascript
MyObject = new ActiveXObject( "BarAgentControl.BAControl" );
MyObject.HangUpByID (IDdellamada de inConcert);

iv. Terminar Interaccin (WrapUpByID :After Call Work):


Si se desea que el wrapup de la llamada lo realice la aplicacin en el momento en que se
guarda la gestin por ejemplo; se deber invocar una interface COM provista por inConcert
en el desktop del agente.
Definicin:
Function WrapUpByID(p_sIdInter As String) As String
Parmetros
Id de la llamada de InConcert. Se puede obtener ejecutando el mtodo GetIdCall.
VB 6.0
Dim objBarAgent
Set objBarAgent = CreateObject("BarAgentControl.BAControl")
Call objBarAgent.WrapUpByID("IDdellamada de inConcert")
C# NET 2.0
//Para obtener el estado de la llamada se llama a la funcin CurrentIntStateByID()
//En este ejemplo se carga en la variable State.
if (State == "ENDED")
{
object[] parametros = new object[] { "IDdellamada de inConcert" };
Type t = Type.GetTypeFromProgID("BarAgentControl.BAControl");
Object obj = Activator.CreateInstance(t);
object retVal = t.InvokeMember("WrapUpByID", System.Reflection.BindingFlags.InvokeMethod, null, obj,
parametros);
}
else .

Para poder hacer el Wrap-Up es necesario asegurarse que el agente este en estado de
Wrap-Up (con la llamada cortada).
Para obtener dicho estado se utiliza la siguiente invocacin a la interfaz COM del BarAgent:
objBarAgent.CurrentIntStateByID ("IDdellamada de inConcert")
la cual devolver devolver ENDED para que pueda realizarse la invocacin al Wrap-Up.
Si el resutlado es , es que el agente esta libre para obtener una llamada, y si es Taked
es que la llamada esta activa entre el agente y el cliente (para lo cual se debe ejecutar el
HangUpById para pasar al estado WrapUp)

v. Generar Grabaciones (RecordAst)


Grabacin a demanda:
Si se desea grabar a demanda desde la aplicacin VB se debe invocar un cdigo
similar al siguiente:
Definicin:
Sub RecordAst(p_sIdInter As String, p_TipoAcc As Long)
Parmetros
Id de la llamada de InConcert. Se puede obtener ejecutando el mtodo GetIdCall.
Tipo de Accin: Donde tipo de accin puede contener los valores:
0 (detener grabacin) ,
1 (iniciar grabacin),
2 (detener e iniciar en la misma accin).
VB 6.0
Dim objBarAgent
Set objBarAgent = CreateObject("BarAgentControl.BAControl")
Call objBarAgent.RecordAst ("IDdellamada de inConcert", Tipo de accin)
C# NET 2.0
object[] parametros = new object[] { "IDdellamada de inConcert", Tipo de Accin };
Type t = Type.GetTypeFromProgID("BarAgentControl.BAControl");
Object obj = Activator.CreateInstance(t);
t.InvokeMember("RecordAst ", System.Reflection.BindingFlags.InvokeMethod,
null, obj, parametros);

vi. Creacin de llamadas (MakeCallDir)


Si desde la aplicacin de gestin se desean realizar llamadas se deber invocar un
cdigo similar al siguiente:
Definicin:
Function MakeCallDir(camp As String, tel As String, [imlContext As String]) As String
Parmetros
Campaa: por la cual se desea discar
Telfono: Nro completo de telfono a discar
IMLContext: un IML con datos extras.
(El formato del IML es @#Campo1#Valor1@Campo2#Valor2). Por defecto este parmetro debe ir vaco.
VB 6.0
Dim objBarAgent
Set objBarAgent = CreateObject("BarAgentControl.BAControl")
Call objBarAgent.MakeCallDir("Campaign", "NroTel", "")
C# NET 2.0
object[] parametros = new object[] { "Campaa", NroTel, IML };
Type t = Type.GetTypeFromProgID("BarAgentControl.BAControl");
Object obj = Activator.CreateInstance(t);
Object retVal = t.InvokeMember("MakeCallDir ", System.Reflection.BindingFlags.InvokeMethod,
null, obj, parametros);
Javascript
MyObject = new ActiveXObject( "BarAgentControl.BAControl" );
MyObject.MakeCallDir("NombreCampana",NroTel,"");

Un IML es una cadena de texto donde se especifica un grupo de variables y su valor


separados por un carcter.
En el formato se define el Separador de campos (1er Carcter de la tira), y Separador
de SubCampos (2do Carcter de la tira).
Teniendo en cuenta lo anterior y dada la tira de ejemplo
@#IDCliente#1234@Nombre#Diego@Apellido#Perez
Sabemos que: el saparador de campos es el carcter @, y que el separador de
SubCampos es el carcter #.
Utilizando los caracteres anteriores se puede obtener los datos de la tira de texto
obteniendo el resultado:
IDCliente = 1234
Nombre = Diego
Apellido = Perez
Estos valores enviados en el IML estarn presentes en el flujo (proceso) que se
ejecuta. Sern requeridos siempre que el cliente detalle que se debe hacer con los
datos (ej, guardar los datos en la BD de negocio relacionados a la llamada saliente
realizada)

b. Funciones de InConcertSDK e InconcertSDKnet


Existen dos APIs para la integracin.
InConcertSDK desarrollada en Visual Basic 6.0, con una interfaz COM, y se accede agregando
la referencia desde el IDE de desarrollo utilizado o se llama a CreateObject, o similar
dependiendo del lenguaje.
InConcertSDKnet desarrollada en C# basada en .Net Framework 2.0, tambin tiene una
interfaz COM. Al igual que en anterior se puede referenciar el componente o va CreateObject
(o similar). Pero esta desarrollada especficamente para ser implementado en proyectos de
integracin que se desarrollen en .NET.
1. Login (Login y LoginFromToken)
Estos mtodos se utilizan para realizar el login de la aplicacin cliente que se integra
con InConcert. Son requeridos para ejecutar el resto de las acciones existentes.
Login
En este caso la aplicacin cliente realiza un Login Particular, por lo que no depende de
otra aplicacin con login previo.
InConcertSDK
Definicin:
Vb 6.0
Modulo inConcertSDK.Session
Function Login(ip As String, port As String, userName As String, password As String, vcc As String,
applicationName As String) As Boolean
Parmetros
IP: ip del server donde se va a loguear la app. Sitio donde se ubica el Servicio Web Handler de InConcert.
Port: puerto en el que se realiza la invocacin.
UserName: Usuario que se loguea a la aplicacin.
Password: password a vlida para el username.
Vcc: vcc en el que se va a loguear
ApplicationName: Aplicacin que se va a loguear.
VB 6.0 (referenciando InConcertSDK)
La librera inConcertSDK esta referenciada en el proyecto, de otra manera se requiere un CreateObject()
Dim m_session As inConcertSDK.Session
m_session.Login( Ip, Port, User, Pwd, Vcc, Application)

InConcertSDKnet
Definicin:
.Net
Modulo inConcertSDKnet.Session
public APIResult Login(string password, string appName, string server, int port);
Parmetros
Password: password a vlida para el username.
appName: Aplicacin que se va a loguear.
Server: ip del server donde se va a loguear la app. Sitio donde se ubica el Servicio Web Handler de
InConcert.
Port: puerto en el que se realiza la invocacin.
Nota, para crear el objeto Session se requieren los parmetros:
UserName: Usuario que se loguea a la aplicacin.
UserName:
VCC: id del vcc en el que se va a loguear
La definicin del constructor es:
public CSession(string userName, string vcc);
C# NET 2.0 (referenciando InConcertSDKnet)
inConcertSDKnet.CSession session = new inConcertSDKnet.CSession ("admin", "system");
inConcertSDKnet.APIResult lResult = session.Login("xxxx", "administration", "192.168.1.1", 8082);

LoginFromToken
En este caso la aplicacin cliente realiza un Login sobre el Token generado por otra
aplicacin, para este caso la aplicacin cliente que se integra debe recibir los datos
para realizar el login.
InConcertSDK
Definicin:
VB6
Modulo inConcertSDK.Session
Function LoginFromToken(ip As String, port As String, applicationName As String, userAuthToken
As String, userAuthTokenApplication As String) As Boolean
Parmetros
IP: ip del server donde se va a loguear la app. Sitio donde se ubica el Servicio Web Handler de Inconcert.
Port: puerto en el que se realiza la invocacin.
ApplicationName: Aplicacin que se va a loguear.
userAuthToken: guid identificatorio de la aplicacin que ya esta logueada (ej, baragent)
userAuthTokenApplication: Aplicacin que se loguea con el Token (ej: BarAgent)
VB 6.0
La librera inConcertSDKnet esta referenciada en el proyecto
Dim m_session As inConcertSDK.Session
m_session.LoginFromToken(Ip, Port, Application, IndentiyToken,
ApplicationToken)

InConcertSDKnet
Definicin:
.Net
Modulo inConcertSDKnet.Session
public APIResult LoginFromToken(string server, int port, string appName, string authToken);
Parmetros

IP: ip del server donde se va a loguear la app. Sitio donde se ubica el Servicio Web Handler de Inconcert.
Port: puerto en el que se realiza la invocacin.
ApplicationName: Aplicacin que se va a loguear.
userAuthToken: guid identificatorio de la aplicacin que ya esta logueada (ej, baragent)
userAuthTokenApplication: Aplicacin que se loguea con el Token (ej: BarAgent)
C# NET 2.0
inConcertSDKnet.CSession session = new Session("admin", "system");
inConcertSDKnet.APIResult lResult = session.LoginFromToken( "192.168.1.1", 8082, "appname",
"TOKEN");

2. Establecer resultado de Gestin (SetDispositionCode)


Permite evaluar resultados de reglas de gestin, determinando si tiene que reagendar
automticamente o no segn las reglas de gestin definidas para el proceso.
Se requiere Login previo, ese objeto se debe utilizar para realizar el INIT del objeto
OutboundEngine u OutboundEngineCOMClient dependiendo de la API que se utilice.
InConcertSDK
Definicin:
VB6
Modulo inConcertSDK.OutboundEngine
SetDispositionCode(processId As String, batchId As String, contactId As String, interactionId As String,
ContactCode As Integer, BusinessCode As String) as Boolean
Parmetros
processeid: id del proceso de Outbound Engine que procesa la llamada en curso.
batchId: Id del Lote en el que se encuentra el contacto que se llama.
contactId: Id nico del contacto que se llama.
interactionId: Id de la llamada para la cual se establece el resultado.
contactCode: del tipo DispositionCode, es el cdigo de respuesta de telefona (por defecto 0)
businessCode: Cdigo de negocio que se desea establecer para la llamada.
VB 6.0
La librera inConcertSDK esta referenciada en el proyecto
Dim m_outboundEngine = New inConcertSDK.OutboundEngine
Call m_outboundEngine.Init(m_session) requerido para ejecutar el mtodo siguiente.
Dim res as Boolean = m_outboundEngine.SetDispositionCode("processId ",
" batchId ", " contactId ", interactionId ", ContactCode, " BusinessCode ")

InConcertSDKnet
Definicin:
OutboundEngineCOMClient
Modulo inConcertSDKnet. OutboundEngineCOMClient Este caso se utilice para instanciar un objeto
del tipo y se ejecuta el mtodo SetDispositionCode de esa instancia. Requiere initClient previo del login.
OEManager
Modulo inConcertSDKnet.OEManager Este caso se utiliza para invocar los mtodos directamente al
ser una clase con mtodos estticos. Se requiere Login, pero no InitClient, ya que se le enva el objeto
login como parmetro.
OutboundEngineCOMClient
Se requiere la ejecucin del mtodo INITClient donde se inicializa el objeto con la sesin creada
anteriormente.
public APIResult SetDispositionCode(string processId, string batchId, string contactId, string interactionId,
int contactCode, string businessCode);
OEManager
public static APIResult SetDispositionCode(CSession session, string processId, string batchId,
string contactId, string interactionId, int contactCode, string businessCode);
Parmetros

10

CSession: es el objeto sesin que se cre en el login. Requerido nicamente si se invoca el mtodo
de la clase OEManager.
processeid: Identificador del proceso de InConcert. Este valor se recibe como parmetro en el CTI POPUP.
batchId: Identificador del Lote al que pertenece el contacto. Este valor se recibe como parmetro en el
CTI POPUP.
contactId: Id nico del contacto que se llama.
interactionId: Id de la llamada para la cual se establece el resultado.
contactCode: Resultado de contactacin. Los valores posibles son:
0-->CONTACTED.
14 --> ANSWERING_MACHINE.
15 --> FAX
16 --> DEAD_CONTACT
17 --> INDIRECT_CONTACT
businessCode: Cdigo de negocio que se desea establecer como resultado de la llamada.
C# NET 2.0
OutboundEngineCOMClient
inConcertSDKnet.OutboundEngineCOMClient m_OutboundEngine = new
inConcertSDKnet.OutboundEngineCOMClient();
inConcertSDKnet.APIResult Resp = m_OutboundEngine.InitClient(m_session);
inConcertSDKnet.APIResult Resp2 = SetDispositionCode(processId, batched, contacted,
interactionId, contactCode, businessCode);
OEManager
inConcertSDKnet.APIResult Resp = inConcertSDKnet.OEManager.SetDispositionCode( m_session,
processed, batched, contacted, interactionId, contactCode, businessCode)

3. Reagendar contactos (ReScheduleContact)


Para reagendar un contacto manualmente desde el aplicativo de gestin para una
fecha determinada, se deber invocar al siguiente mtodo.
InConcertSDK
Definicin:
VB6
Modulo inConcertSDK.OutboundEngine
public virtual bool ReScheduleContact(ref string processId, ref string batchId, ref string contactId,
ref string agent, ref object rescheduleDate, ref bool outOfBatchAllowed);
Parmetros
processeid: Identificador del proceso de InConcert. Este valor se recibe como parmetro en el CTI POPUP.
batchId: Identificador del Lote al que pertenece el contacto. Este valor se recibe como parmetro en el
CTI POPUP.
contactId: Id nico del contacto que se llama.
ReschedAgente: Id del agente si se requiere entregar la llamada a un agente particular.
DateByReschContact: Fecha/hora en que se deber realizar la llamada.
IMPORTANTE: La fecha debe estar en UTC
outOfBatchAllowed: Flag para indicar si se debe tener en cuenta la fecha de fin del lote.
VB 6.0
La librera inConcertSDK esta referenciada en el proyecto
Dim response As Boolean
response = m_outboundEngine.ReScheduleContact( ProcessId, BatchId, ContactId, ReschedAgente,
DateByReschContact, FlagoutOfBatchAllowed)

InConcertSDKnet
Definicin:
OutboundEngineCOMClient
Modulo inConcertSDKnet. OutboundEngineCOMClient Este caso se utilice para instanciar un objeto
del tipo y se ejecuta el mtodo ReScheduleContact de esa instancia. Requiere initClient previo del login.

11

OEManager
Modulo inConcertSDKnet.OEManager Este caso se utiliza para invocar los mtodos directamente al
ser una clase con mtodos estticos. Se requiere Login, pero no InitClient, ya que se le enva el objeto
login como parmetro.
OutboundEngineCOMClient
Se requiere la ejecucin del mtodo INIT donde se inicializa el objeto con la sesin creada anteriormente.
public APIResult ReScheduleContact(string processId, string batchId, string contactId, string agentId,
DateTime reScheduleDate, bool allowOutOfBatch);
OEManager
public static APIResult ReScheduleContact(CSession session, string processId, string batchId,
string contactId, string agentId, DateTime reScheduleDate, bool allowOutOfBatch);
Parmetros
CSession: es el objeto sesin que se cre en el login. Requerido nicamente si se invoca el mtodo
de la clase OEManager.
processeid: Identificador del proceso de InConcert. Este valor se recibe como parmetro en el CTI POPUP.
batchId: Identificador del Lote al que pertenece el contacto. Este valor se recibe como parmetro en el
CTI POPUP.
contactId: Id nico del contacto que se llama.
ReschedAgente: Id del agente si se requiere entregar la llamada a un agente particular.
DateByReschContact: Fecha/hora en que se deber realizar la llamada.
IMPORTANTE: La fecha debe estar en UTC
outOfBatchAllowed: Flag para indicar si se debe tener en cuenta la fecha de fin del lote.
C# NET 2.0
OutboundEngineCOMClient
inConcertSDKnet.OutboundEngineCOMClient m_OutboundEngine = new
inConcertSDKnet.OutboundEngineCOMClient();
inConcertSDKnet.APIResult Resp = m_OutboundEngine.InitClient(m_session);
inConcertSDKnet.APIResult Resp2 = = m_OutboundEngine.ReScheduleContact (processed, batched,
contactid, agent, DateResk, allowoutofbatch);
OEManager
inConcertSDKnet.APIResult Resp = inConcertSDKnet.OEManager. ReScheduleContact ( m_session,
(processed, batched, contactid, agent, DateResk, allowoutofbatch);

4. Reagendar contactos (ReScheduleContactToPhone)


Este caso de reagendado se utiliza para asignar un telfono alternativo para el
contacto.
Cabe destacar que el formato del telfono debe ser validado previamente a travs de la
ejecucin del mtodo RecognizePhone, donde se le envan los datos del telfono
obteniendo un objeto con los datos correctamente parseados para utilizarlos en la
ejecucin del Reagendado.
InConcertSDK
Definicin:
VB6
Modulo inConcertSDK.OutboundEngine
Modulo inConcertSDK.Phone
Function ReScheduleContactToPhone(processId As String, batchId As String, contactId As String,
agent As String, rescheduleDate, Country As String, Area As String, Number As String,
Extension As String, PhoneType As String) As Boolean
Esta function se utilize para realizar la validacin del nmero telefnico que sera utilizado para reagendar
la llamada
Function RecognizePhone(Country As String, Area As String, Number As String, Extension As String)
Parmetros
processeid: Identificador del proceso de InConcert. Este valor se recibe como parmetro en el CTI POPUP.
batchId: Identificador del Lote al que pertenece el contacto. Este valor se recibe como parmetro en el
CTI POPUP.
contactId: Id nico del contacto que se llama.

12

ReschedAgente: Id del agente si se requiere entregar la llamada a un agente particular.


DateByReschContact: Fecha/hora en que se deber realizar la llamada.
IMPORTANTE: La fecha debe estar en UTC
CountryId: Cdigo de pas del nmero telefnico
AreaId: Codigo de rea del nmero telefnico
Number: Nmero telefnico
Extension: Extensin del nmero telefnico
PhoneType: Tipo de nmero telefnico que identifica al nmero telefnico (HOME, OFFICE, etc)
VB 6.0
La librera inConcertSDK esta referenciada en el proyecto
Dim vCountry As String, vArea As String, vNumber As String, vExtensions As String
vCountry = ""
vArea = ""
vNumber = "+59829081111"
vExtensions = ""
'Reconoce el nmero ingresado y retorna el objeto oPhone.
Dim oPhone As New inConcertSDK.Phone
Set oPhone = m_outboundEngine.RecognizePhone(vCountry, vArea, vNumber, vExtensions)
'Si el telefono es correcto se obtiene el objeto telfono cargado
If (Not oPhone Is Nothing) Then
Dim vOutboundProcessId As String
Dim vBatchID As String
Dim vContactID As String
Dim vDateResk As String
Dim vAgent As String
Dim vPhoneType As String
vOutboundProcessId = "Out_FINANCIERAS"
vBatchID = "Prueba030310_3"
vContactID = "6F74795B40944923B472111868B3C382"
vDateResk = "2010-11-05 23:23" 'en el formato espefidicado yyyy-mm-dd HH:MM
vAgent = ""
vPhoneType = "OFFICE" 'Uno de los tipos de telefonos existentes para los telefonos
(HOME,OFFICE,CELLULAR,FAX)
Dim lResult2 As String
lResult2 = m_outboundEngine.ReScheduleContactToPhone(vOutboundProcessId, vBatchID,
vContactID, vAgent, vDateResk, oPhone.CountryId, oPhone.AreaId,
oPhone.Number, oPhone.Extension, vPhoneType)
If lResult2 = True Then
'OK
Else
'Error al ejecutar el metodo
End If
Else
'Error en el formato del telfono
End If

InConcertSDKnet
Definicin:
OutboundEngineCOMClient
Modulo inConcertSDKnet. OutboundEngineCOMClient Este caso se utiliza para instanciar un objeto
del tipo y se ejecuta el mtodo ReScheduleContact de esa instancia. Requiere initClient previo del login.
OEManager
Modulo inConcertSDKnet.OEManager Este caso se utiliza para invocar los mtodos directamente al
ser una clase con mtodos estticos. Se requiere Login, pero no InitClient, ya que se le enva el objeto
login como parmetro.
OutboundEngineCOMClient
Se requiere la ejecucin del mtodo INIT donde se inicializa el objeto con la sesin creada anteriormente.
public APIResult ReScheduleContactToPhone(string processId, string batchId, string contactId,
string agent, string rescheduleDate, string phoneType, string phoneCountry, string phoneArea,
string phoneNumber, string phoneExtension)
OEManager
public static APIResult ReScheduleContactToPhone(CSession session, string processId, string batchId,
string contactId, string agent, DateTime rescheduleDate, PhoneType phoneType, string phoneCountry,

13

string phoneArea, string phoneNumber, string phoneExtension)


Parmetros
CSession: es el objeto sesin que se cre en el login. Requerido nicamente si se invoca el mtodo
de la clase OEManager.
processeid: Identificador del proceso de InConcert. Este valor se recibe como parmetro en el CTI POPUP.
batchId: Identificador del Lote al que pertenece el contacto. Este valor se recibe como parmetro en el
CTI POPUP.
contactId: Id nico del contacto que se llama.
ReschedAgente: Id del agente si se requiere entregar la llamada a un agente particular.
DateByReschContact: Fecha/hora en que se deber realizar la llamada.
IMPORTANTE: La fecha debe estar en UTC
CountryId: Cdigo de pas del nmero telefnico
AreaId: Codigo de rea del nmero telefnico
Number: Nmero telefnico
Extension: Extensin del nmero telefnico
PhoneType: Tipo de nmero telefnico que identifica al nmero telefnico (HOME, OFFICE, etc)
C# NET 2.0
string vCountry = ""; //Country Code del nro de telfono
string vArea = ""; //Area Code del nro de telfono
string vNumber = "+59829081111"; //Nmero de Montevideo completo
string vExtension = ""; //Extensin del nmero del cliente (normalmente en oficinas).
//Reconoce el nmero ingresado y retorna el objeto oPhone.
inConcertSDKnet.CPhone oPhone;// = new inConcertSDKnet.CPhone();
m_outboundEngine.RecognizePhone( vCountry, vArea, vNumber, vExtension, out oPhone);
if (oPhone != null) {
string vOutboundProcessId = OutboundProcessId; //"Out_FINANCIERAS";
string vBatchID = BATCHID; //"Prueba030310_3";
string vContactID = CONTACTID; //"79A2219D767C49CD83DA7765EBBF231D";
string vDateResk = "2010-11-05 23:23"; // en el formato espefidicado yyyy-mm-dd HH:MM
string vAgent = "";
string vPhoneType = "OFFICE"; //Uno de los tipos de telefonos existentes para los telfonos
(HOME,OFFICE,CELLULAR,FAX)
inConcertSDKnet.APIResult lResult2 = m_outboundEngine.ReScheduleContactToPhone(
vOutboundProcessId, vBatchID, vContactID, vAgent, vDateResk, vPhoneType,
oPhone.CountryId, oPhone.AreaId, oPhone.Number, oPhone.Extension);

c. Funciones de LBATCHVIEW
1. Recuperacin de grabaciones (PlayAudio)
Si en la aplicacin de gestin se almacena el id de llamada de inConcert, se podrn
escuchar las grabaciones correspondientes.
Definicin:
Function Initialize(StremServer As String, RepositoryServer As String) As Boolean
Function PlayAudio(IdPaquete As String, IdSection As String, IdParte As String) As Boolean
Parmetros
Para Initialize:
StremServer: Ip del server de Asterisk
RepositoryServer: Ip del server del repositorio.
Para PlayAudio:
Id de la llamada de InConcert.
Seccion: Id creado de existir transferencia de llamada.
Parte: Parte de la grabacin que se desea escuchar.
VB 6.0
Dim obj

14

Set obj = CreateObject("LBATCHVIEW.BatchCmd")


Call obj.initialize(IP_PBX, IP_BaseDatos)
Call obj.PlayAudio( ID_Llamada,"0","1")
C# NET 2.0
object[] parametros_Init = new object[] { IP_PBX, IP_BaseDatos };
object[] parametros_PlayAudio = new object[] { ID_Llamada,"0","1" };
Type t = Type.GetTypeFromProgID("LBATCHVIEW.BatchCmd ");
Object obj = Activator.CreateInstance(t);
object retVal = t.InvokeMember("initialize ", System.Reflection.BindingFlags.InvokeMethod,
null, obj, parametros_Init );
object retVal = t.InvokeMember("PlayAudio ", System.Reflection.BindingFlags.InvokeMethod,
null, obj, parametros_PlayAudio );

d. Ejemplo completo para el procedimiento Guardar


GUARDAR VB6
Private m_session As inConcertSDK.Session
Private m_outboundEngine As inConcertSDK.OutboundEngine
Private m_controlagent As Object
Private vInteractionID As String
Private Sub cmbGuardar_Click()
Private m_session As inConcertSDK.Session
Private m_outboundEngine As inConcertSDK.OutboundEngine
Private m_controlagent As Object
Private vInteractionID As String
Private Sub cmbGuardar_Click()
Set m_session = New inConcertSDK.Session
Set m_outboundEngine = New inConcertSDK.OutboundEngine
Set m_controlagent = CreateObject("BarAgentControl.BAControl")
'Ejemplo: vInteractionID = "112886227D5F4DCDB1572C1A6E9311C0"
Dim vEstado As String
vEstado = m_controlagent.CurrentIntStateByID(vInteractionID)
If vEstado = "ENDED" Then
'LoginFromToken InconcertSDK
'Ejemplos de datos utilizados
'vIpServer = "10.0.2.143", vPortServer = "8082", vApplication = "Outboundengine"
'vIndentiyToken = "ec711d9e-0fdd-11de-bf4d-0008a185f73c", vApplicationToken = "Supervisor"
If (m_session.LoginFromToken(vIpServer, vPortServer, vApplication, vIndentiyToken, vApplicationToken)) Then
'Inicia la session creada con el TOKEN recibido
If (m_outboundEngine.Init(m_session)) Then
'Esta ejecucin es opcional segun el resultado de gestion en el que el cliente entiende es necesario Reagendar
'Ejemplos de datos utilizados:
'vProcesId = "ProcessEngine", vBatchId = "Batch1", vContactID = "8974948F42204FF2A709CDD8D9E70E9C"
'vAgent = "Agent1", vSchedDate = "2010-03-30 10:35", vOutOfBatchAllowed = false
If (m_outboundEngine.ReScheduleContact(vProcesId, vBatchId, vContactID, vAgent, _
vSchedDate, vOutOfBatchAllowed)) Then
Else
'Error al Reagendar el Contacto
End
'Establecer resultado de Gestin
'Ejemplos de datos utilizados:
'vProcesId = "ProcessEngine", vBatchId = "Batch1", vContactID = "8974948F42204FF2A709CDD8D9E70E9C"
'vInteractionID = "112886227D5F4DCDB1572C1A6E9311C0", vContactCode = 0,
'vBusinessCode = "17" (o puede ser texto EJ:"VENTA")
If (m_outboundEngine.SetDispositionCode(vProcesId, vBatchId, vContactID, vInteractionID, _

15

vContactCode, vBusinessCode)) Then


'Ejecuta el WrapUp en el Agente
m_controlagent.WrapUpByID (vInteractionID)
Else
'Error al enviar el resultado de gestin
End
Else
'Error al iniciar la session
'No se puede ejecutar acciones sobre Inconcert (SetDispositionCode o ReSchedule)
End
'Destruye la session
m_session.Logout
Else
'Error al crear la session
'Se deben revisar los parametros utilizados en el LoginFromToken
End If
Else
'No hay llamada en el agente o est en TAKED.
End
Set m_session = Nothing
Set m_outboundEngine = Nothing
Set m_controlagent = Nothing
End Sub
Private Sub cmdCortarLlamada_Click()
Set m_controlagent = CreateObject("BarAgentControl.BAControl")
'Obtiene el ID de llamada, puede recibirse por parametro y no se necesario obtenerlo aqui
'Ejemplo: vInteractionID = "112886227D5F4DCDB1572C1A6E9311C0"
vInteractionID = m_controlagent.GetIdCall()
'Obtiene el estado del Agente
vEstado = m_controlagent.CurrentIntStateByID(vInteractionID)
If (vEstado = "TAKED") Then
'Corta la llamada
m_controlagent.HangUpByID (vInteractionID)
Else
'Error la llamada est en estado vEstado (ENDED: que ya se Corto, "": que no tiene interaccin en curso)
End If
End Sub

e. Ejemplo completo del procedimiento de Importacin


de Contactos a travs de la API de Inconcert.
El cdigo presentado a continuacin es un ejemplo completo de una carga realizada
desde una aplicacin desarrollada en Visual Basic 6.0 utilizando la Api InconcertSDK.
La finalidad es importar todos los registros procedentes de un archivo .CSV a la base de
Contactos y posterior creacin de un Lote (batch) donde se incluyan todos los contactos
importados.
Importacin de contactos va API en VB 6.0

16

Set m_session = New inConcertSDK.Session


Set m_outboundEngine = New inConcertSDK.OutboundEngine
'Variables del entorno de InconcertSDK
Dim vIpServer As String, vPortServer As String, vUsername As String, vPassw As String, vApplication As String, vVCC As
String
vIpServer = "10.0.2.143"
vPortServer = "8082"
vUsername = "administrator"
vPassw = "1234"
vVCC = "vcc1"
vApplication = "outboundengine"
If (m_session.LogIn(vIpServer, vPortServer, vUsername, vPassw, vVCC, vApplication)) Then
'Inicia la session creada en el login
If (m_outboundEngine.Init(m_session)) Then
'path al formato, id de importacion, proveedor de la base, formato de import(tiene que existir),
'mecanismo de deteccion de duplicados
'mecanismo de merge de duplicados, isvip, is client
Dim response As Boolean
Dim vPathFile As String, vImportationId As String, vProvider As String, vFormat As String, vVIPImport As Boolean,
vClientImport As Boolean
Dim vChekDuplicado As String, vResolucionDuplicados As String
vPathFile = "c:\ArchivoImport.csv" 'Ubicacin de la base de carga
vImportationId = "PruebaImport3" 'ID con el que se genera la importacin
vProvider = "TarjetaVisa" 'Nombre del proveedor de la carga
vFormat = "FTOCargaMOPC" 'Formato que se debe utilizar para la carga de los contactos
vChekDuplicado = "Key" 'Mecanismo de deteccin de duplicados en el proceso de cada registro de la carga
vResolucionDuplicados = "KeepNew" 'Mecanismo de merge de duplicados
vVIPImport = False 'isVip
vClientImport = False 'IsClient
Dim vv As Integer
'Inicia la importacin
Dim resss As Boolean
resss = m_outboundEngine.StartContactImport(vPathFile, vImportationId, vProvider, vFormat, vChekDuplicado,
vResolucionDuplicados, vVIPImport, vClientImport)
If (resss) Then
Dim vTermino As String
'Estado inicial de la carga
vTermino = m_outboundEngine.GetImportStatus(vImportationId)
'Bucle que revisa cuando termina la carga
Do While vTermino <> "COMPLETE" And vTermino <> "unknow" ' si es unknow puede que se perdiera la session
vTermino = m_outboundEngine.GetImportStatus(vImportationId)
Sleep 1000 'Espera 1 segundo
Loop
'Inicializa los valores para crear el Lote
Dim vOutboundProcessId As String
Dim vBatchID As String
Dim vDateINI As Date
Dim vDateFIN As Date
Dim vAceptaDuplicados As Boolean
vOutboundProcessId = "Out_FINANCIERAS"
vBatchID = "Prueba030310_3x3"
vDateINI = Now()
vDateFIN = "2010-10-10 00:00"
vAceptaDuplicados = False
'Ejecuta la creacin del lote
If (m_outboundEngine.CreateBatchFromImport(vImportationId, vOutboundProcessId, vBatchID,
vDateINI, vDateFIN, vAceptaDuplicados)) Then
'*****************
'Termino OK la creacin del lote con los contactos de la importacin
'*****************

17

MsgBox ("termina ok")


Else
'Error en la creacin del lote
MsgBox ("termina error")
End If
'm_outboundEngine
'Termino de importar todos los contactos
'Mensaje Informativo de carga completa
Else
'Error al iniciar la importacin.
'verificar que el nombre del formato de carga sea correcto
End If
Else
'No se pudo iniciar la session
End If
Else
'No se pudo crear el objeto session
End If
End Sub

18