¿Es posible que Lync se comunique con una API REST?
post web (4)
Nunca utilicé Lync, pero mientras miraba el documento de desarrollo, me topé con una muestra que podría ser lo que estás buscando.
Lync 2013: filtra los mensajes de la sala antes de publicarlos
Una vez que haya filtrado los mensajes, solo debe capturar el acrónimo y llamar a su código personalizado que llama a su API.
A menos que me esté perdiendo algo, creo que también podría hacerlo con una simple solicitud GET. Simplemente llame a su API como esta yoursite.com/api/acronym/[the_acronym_here]
.
He creado una API REST básica donde un usuario puede solicitar un acrónimo, y la página web devolverá el significado del acrónimo a través de una llamada POST.
La mayoría de mis usuarios finales no usan Internet tanto como usan la aplicación Microsoft Lync.
¿Es posible para mí crear una cuenta de Lync, hacer que pase las preguntas a mi API y devolver las respuestas al usuario? Lo que significa que el usuario solo necesita abrir un nuevo chat en Lync en lugar de una nueva página web.
Estoy seguro de que esto es posible, pero no puedo encontrar ninguna información en Google o en la web. ¿Cómo se puede lograr esto?
Muchas gracias.
Editar:
Agregar una recompensa con la esperanza de que alguien cree un ejemplo simple, ya que creo que sería muy útil para una gran cantidad de desarrolladores :).
Para elaborar la respuesta de Tom Morgan , sería fácil crear una aplicación UCMA para esto.
Crear una aplicación UCMA
Ahora esto no tiene por qué ser complicado. Ya que todo lo que desea es recibir un mensaje instantáneo y responderlo, no necesita el poder completo de una aplicación confiable. Mi elección sería usar un UserEndpoint
simple. Por suerte, Tom tiene un buen ejemplo de eso en línea: el ejemplo más simple que usa UCMA UserEndpoint para enviar un mensaje instantáneo .
Haz que escuche los mensajes entrantes
Mientras que la aplicación de muestra envía un mensaje cuando está conectada, debemos escuchar los mensajes. En UserEndpoint
, configure un controlador de mensajes para mensajes instantáneos:
endpoint.RegisterForIncomingCall<InstantMessagingCall>(HandleInstantMessagingCall);
private void HandleInstantMessagingCall(object sender, CallReceivedEventArgs<InstantMessagingCall> e)
{
// We need the flow to be able to send/receive messages.
e.Call.InstantMessagingFlowConfigurationRequested += HandleInstantMessagingFlowConfigurationRequested;
// And the message should be accepted.
e.Call.BeginAccept(ar => {
e.Call.EndAccept(ar);
// Grab and handle the toast message here.
}, null);
}
Procesar el mensaje
Aquí hay una pequeña complicación, su primer mensaje puede estar en la ''tostada'' del nuevo argumento del mensaje, o llegar más tarde al flujo de mensajes (el flujo).
Tratando con el mensaje de Toast
El mensaje de brindis es parte de la configuración de la conversación, pero puede ser nulo o no un mensaje de texto.
if (e.ToastMessage != null && e.ToastMessage.HasTextMessage)
{
var message = e.ToastMessage.Message;
// Here message is whatever initial text the
// other party send you.
// Send it to your Acronym webservice and
// respond on the message flow, see the flow
// handler below.
}
Tratar con el flujo
Su flujo de mensajes es donde se transmiten los datos reales. Controle el flujo y guárdelo, porque más tarde será necesario para enviar mensajes.
private void HandleHandleInstantMessagingFlowConfigurationRequested(object sender, InstantMessagingFlowConfigurationRequestedEventArgs e)
{
// Grab your flow here, and store it somewhere.
var flow = e.Flow;
// Handle incoming messages
flow.MessageReceived += HandleMessageReceived;
}
Y crea un manejador de mensajes para tratar con los mensajes entrantes:
private void HandleMessageReceived(object sender, InstantMessageReceivedEventArgs e)
{
if (e.HasTextBody)
{
var message = e.TextBody;
// Send it to your Acronym webservice and respond
// on the message flow.
flow.BeginSendInstantMessage(
"Your response",
ar => { flow.EndSendInstantMessage(ar); },
null);
}
}
Eso lo resumiría en el ejemplo más básico de enviar / recibir mensajes. Déjeme saber si alguna parte de esto necesita más aclaración, puedo agregar a la respuesta donde sea necesario.
He creado un Gist con una solución completa. Lamentablemente, no está probado porque actualmente no estoy cerca de un entorno de desarrollo de Lync. Ver UCMA UserEndpoint replying to IM Example.cs
.
Puede usar UCWA (API de Web de comunicaciones unificadas de Microsoft), es una API REST. Para más detalles, puede hacer referencia a la siguiente ...
Sí, absolutamente. UCMA (la API administrada de comunicaciones unificadas) sería la elección de la API para usar aquí, y un buen lugar para comenzar: las aplicaciones UCMA son aplicaciones .net "normales", pero también exponen un punto final de la aplicación, que se puede agregar al contacto de un usuario. lista. Cuando los usuarios envían mensajes, eso puede desencadenar eventos en su aplicación para que pueda tomar el MI entrante, hacer la traducción de las siglas y devolver el texto completo.
Tengo un montón de publicaciones en el blog sobre UCMA, pero aún no hay una colección definida de publicaciones "útiles" con las que trabajar, ¡pero próximamente! Mientras tanto, no dude en navegar por la lista .
-tom