Ah! Yo voy entendiendo mas…

 

Vi algo de lejos, algun caso asi, en un call center, tanto de llamadas
salientes (un sistema que elige nros. TE y campanias, y las deriva a los
operadores que estan libres y activos ( no se fueron al banio, etc…), como
de llamadas entrantes (donde el sistema, antes de derivar el llamado a una
PC de operador, donde estaria el “SoftPhone”, preparaba info adicional del
llamante).

 

Andres, con respecto a las dos opciones de abajo, hmmm… quitaria lo de
Windows Services. Por que? Primero, hay que instalarlo, levantarlo,
vigilarlo, etc… una pieza mas a vigilar. Por que no hacerlo directamente en
el SoftPhone? Ademas, si el windows service toma un nro. a llamar, deberia
“reservarlo” como “tomado por mi”, pero si luego se lo manda al SoftPhone, y
este esta caido? O el operador se fue al banio? O esta ocupado hablando en
la anterior llamada? De nuevo, todo eso se puede solucionar, pero a costa de
mayor Comunicacion entre el SoftPhone y el Windows Service local.

 

Me parece mas facil directamente lanzar un thread en el SoftPhone, y que
desde ahi se consulte numeros a llamar. Ese thread seguramente estara mejor
preparado para saber el estado del operador, etc…  En un caso que vi, hasta
el operador era el que indicaba: estoy listo, y ahi el sistema veia si habia
un numero. Ni siquiera habia sincronizacion de cuando pedir un nro: el
operador activamente lo requeria al software local. Como facturaban por
llamada/venta, estaban motivados ;-)

 

(justamente, mi “trabajo” en el sistema que describi al principio, hace ya
unos anios, fue proponer alternativas, y la de arriba es mas o menos la que
referi como la mas recommendable: los operadores se instalaban el
“softphone” y salia andando como pinia ;-)… creo que tambien tenian pensado
teletrabajo, cualquier operador se bajaba el “softphone” y comenzaba a
trabajar en llamadas…. Si habia un “chamuyo” de venta, cuestionario a
completar, etc. todo eso se veia por la web).

 

En cuanto donde guarder el pedido del ERP, y donde ir a buscar numeros,
pensaria en algun sistema de colas. Si no te seduce Azure en el cloud, se
puede instalar una maquina local con los emuladores de azure, y configurarlo
para que acepte llamadas desde la intranet. Esto implica que el web server
del ERP tenga llegada a esa maquina. Pero seria una sola maquina: problemas
(probables) de cuello de botella.

 

Pero seguramente debe haber parva de sistemas persistentes de cola a usar.

 

Otra alternativa:

 

La aplicacion web mantiene un servicio web (recomendaria algo simple, WCF
Web API, con REST). Los clientes consultan (poleando) ese servicio. El
problema de este approach es la escalabilidad: la aplicacion web puede
quedar saturada. Pero para eso, hace falta conocer mas contexto de tu
aplicacion, y ponerse a medir rendimiento con pruebas de carga concretas.
Por eso se prefiere un middleware como un sistema de colas probado, o aun un
servidor de base de datos. 

 

Nos leemos!



Angel “Java” Lopez

http://www.ajlopez.com

http://twitter.com/ajlopez

 

 

 

From: [email protected] [mailto:[email protected]] On Behalf Of Andres
Guzman
Sent: Thursday, October 27, 2011 11:55 AM
To: [email protected]
Subject: [puntonet] Coneccion WebForm a Windows Application via Web Service

 

csalvatore, de lo casos que me indicas es el primero, pero esto no lo puedo
resolver con un OCX ya que si me cierran el browser no podrian recivir
llamadas. Las formas que se me han ocurrido para solucionar esto son 2, se
las comento para que me den su opinion.

Primera:

ERP (Web Form)  Se quiere llamar al Nº x ==> Web Service (Informo que el
usuario conectado quiere realizar una llamada a Nª x) ==> Windows Service en
Cliente (Por cada usuario existira un windows service corriendo y
preguntando si existe llamada) ==> (Windows Form SoftPhone) Si existe alguna
llamada este windows service le informara a mi SoftPhone que llame al Nª

Segundo:

ERP (Web Form) Se quiere llamar al Nº x ==> BD Sql Server (Ingreso registro
a Base de Datos) ==> Windows Service en Cliente (Por cada usuario existira
un windows service corriendo y preguntando en la bd si existe nº nuevo) ==>
(Windows Form SoftPhone) Si existe alguna llamada este windows service le
informara a mi SoftPhone que llame al Nº

Saludos y gracias.

El 27 de octubre de 2011 11:28, <[email protected]> escribió:

Me parece que están hablando de escenarios distintos sin especificarlo.

 

Un caso sería en el softphone (la aplicación WF) a la que se quiere
transmitir el mensaje para que realice la acción, está en la misma máquina
en la que el usuario está browseando. En ese caso es el browser el que
debería comunicarse de algún modo con el SP. OK, esto es lo mismo que hacer
click en un número de teléfono y que skype intente conectarse.

 

Otra caso distinto es si el SP se ejecuta en el Web Server y es el web
server el que tiene que actuar derivando la acción ante un request
determinado. Ponele que estás tan contento de que al fin alguien completa el
proceso de suscripción a tu servicio y querés que el servidor te llame por
teléfono para avisarte (reutilizando un SP que en algún momento programaste
y se te ocurrió instalar en un servidor web).

 

En el primer caso hay muchas maneras de resolverlo, desde las viejas OCX
hasta Silverlight. No importa que estés en el contexto del navegador, eso no
te va a limitar de ningún modo el acceso a ningún recurso del SO. Lo que sí
va a requerir es que el usuario ejecute distintas acciones como instalar
componentes o asignar privilegios. Ir al webserver para que de vuelta se
mande un mensaje a la PC que le indique al SP que realice la acción me
parece un despropósito. Si lo que querés es verificar créditos disponible o
algo por el estilo tenés que buscar otra estrategia más sencilla.

 

En el segundo caso, sí, parecería que lo recomendable sería ir por el
encapsulamiento de la funcionalidad.

 

From: Angel "Java" Lopez 

Sent: Thursday, October 27, 2011 11:02 AM

To: [email protected] 

Subject: [puntonet] Coneccion WebForm a Windows Application via Web Service

Perdon, me meto rapido en este thread….

Pero tener una libreria comun no parece que sea lo que se necesita.

Digamos WA == aplicacion Web

Digamos WF == aplicacion WinForm

Lo que entendi que se pide es:

WA ----> envia mensaje a -----> X

WF ß--- recibe mensaje de ß---- X

No se resuelve esto haciendo X == libreria comun. Lo que entiendo que se
pregunta es, que podemos poner en X (una instancia real de algo, un
artefacto corriendo algo) para que el escenario propuesto funcione.

Como comentaron, puede ser:

- Una cola (en el caso de Microsoft, una cola en Azure)

- Dos servicios: uno que recibe un mensaje, y otro que es “polleado” por WF
par aver si hay un mensaje

- Un table en una base de datos, donde WF va “polleando” que registros
nuevos hay

Me atrevo a sugerir uno:

- Dos cuentas de Twitter, una para WF, y otra para WA. Con mensajes
protegidos si quieren. WA envia mensaje a la cuenta de twitter de WF. WF lee
los mensajes que le llegan de WA. Pueden usar un cliente de Twitter para
.NET

Es este escenario el que se pedia al comienzo del thread?

Nos leemos!

Angel “Java” Lopez

http://www.ajlopez.com

http://twitter.com/ajlopez

From: [email protected] [mailto:[email protected]] On Behalf Of Gustavo
Azcona
Sent: Wednesday, October 26, 2011 7:07 PM
To: [email protected]
Subject: [puntonet] Coneccion WebForm a Windows Application via Web Service

Como muchos te lo han dicho, lo ideal es que la funcionalidad de tu
Softphone la encapsules en un componente reutilizable (líbrería y/o web
services) de forma tal que la puedas consumir en ambas aplicaciones (web y
desktop), mediante una referencia local si creaste una librería o una
referencia web si creaste un web service.

Este enfoque puede serte fácil o difícil según como tengas desarrollado tu
Softphone.

Básicamente tu Aplicación Web NO puede enviarle comandos a tu aplicación
Windows, ya que, por cuestiones de seguridad, las aplicaciones web corren en
un sandbox dentro del browser. Es decir, tu aplicación web no puede acceder
(o tiene acceso muy limitado) a recursos locales (disco, memoria,
procesador, periféricos, aplicaciones, servicios, etc.).

La única forma que tu aplicación web pueda interactuar con otras
aplicaciones o recursos locales, es mediante add-ins (Complementos o
extensiones del browser), con lo cual ya te estarías metiendo en otro gran
lío interesante.

Insisto que lo mejor sería que aísles la funcionalidad de tu softphone en
una librería o componente reutilizable.

Saludos, Gus

De: [email protected] [mailto:[email protected]] En nombre de Andres
Guzman
Enviado el: miércoles, 26 de octubre de 2011 01:16 p.m.
Para: [email protected]
Asunto: [puntonet] Coneccion WebForm a Windows Application via Web Service

Mira mejor te cuento lo que necesito, necesito que al presionar un boton en
mi web form, le envie un numero telefonico a mi softphone (windows form este
softphone fue codificado por mi asi que tengo el codigo y lo puedo
modificar) y el softphone realize la llamada

El 26 de octubre de 2011 13:03, Carlos Peix <[email protected]>
escribió:

Hola Andres,

Olvidate del asincronismo, de WCF y todo lo demas.

Construi un componente (una clase o conjunto de clases) en un proyecto de
tipo "class library" y usalo desde las dos aplicaciones (referenciandola
como haces con otros assemblies).

Para darte mas detalles, supongo que tendrias que decirnos cual es esa tarea
que queres compartir.

----------------------------------
Carlos Peix

2011/10/26 Andres Guzman <[email protected]>

Carlos pero como construyo un componente con la funcionalidad para
compartirla (sincronicamente), a través de WCF (Hosting Services) como me
indica Sebastian

El 26 de octubre de 2011 12:00, Carlos Peix <[email protected]>
escribió:

Entonces te recomiendo que no lo hagas de esa manera y te evitaras dolores
de cabeza.



Sugiero que construyas un componente con la funcionalidad que deseas
comartir entre las dos aplicaciones y los uses en ambas.

Si crees que esto no es posible, explicanos un poco mas sobre los motivos


Por otro lado, deberias analizar si deseas ejecutar esa accion
"sincronicamente" o "asincronicamente". El primer caso es el mas sencillo
suponiendo que necesites el valor retornado por la accion para la ejecucion
de tu pagina web y que la accion se ejecute rapidamente (medio segundo o
algo asi).

Estos consejos asumen una aplicacion de baja carga, es decir, no estoy
hablando de twitter o facebook o amazon.com

 

----------------------------------
Carlos Peix

2011/10/26 Andres Guzman <[email protected]>

Si tengo oportunidad de modificar, ambas las estoy desarrollando yo.

El 26 de octubre de 2011 11:06, Carlos Peix <[email protected]>
escribió:

Tenes oportunidad de modificar la aplicacion WinForms?

----------------------------------
Carlos Peix


2011/10/26 Andres Guzman <[email protected]>

Estimados.

Junto con saludarlos y esperando que se encuentren bien, les escribo para
ver si alguien me pude ayudar con esto, lo que necesito es poder conectar mi
aplicación WEB Form con mi Windows Application a través de un Webservice.

Lo que necesito hacer es que al presionar un botón dentro de mi Web Form, le
envié un parámetro a mi Windows Application y esta ejecute una acción con el
parámetro enviado. Alguien a realizado esto antes, como puedo empezar?-

Desde y muchas gracias.

-- 
Andrés Guzmán

[email protected]




-- 
Andrés Guzmán
09-9319111
[email protected]




-- 
Andrés Guzmán
09-9319111
[email protected]




-- 
Andrés Guzmán
09-9319111
[email protected]

  _____  

Se certificó que el correo no contiene virus.
Comprobada por AVG - www.avg.es
Versión: 2012.0.1834 / Base de datos de virus: 2092/4575 - Fecha de la
versión: 26/10/2011




-- 
Andrés Guzmán
09-9319111
[email protected]

Responder a