Возможно ли, чтобы Lync взаимодействовал с REST API?

Я создал базовый REST API, где пользователь может запросить аббревиатуру, и веб-страница вернет значение аббревиатуры через вызов POST.

Большинство моих конечных пользователей используют Интернет не так часто, как приложение Microsoft Lync.

Могу ли я создать учетную запись Lync, чтобы она передавала вопросы моему API и возвращала ответы пользователю? Это означает, что пользователю просто нужно открыть новый чат в Lync, а не новую веб-страницу.

Я уверен, что это возможно, но я не могу найти никакой информации в Google или в Интернете. Как это можно сделать?

Большое спасибо.

Редактировать :

Добавление вознаграждения в надежде, что кто-то создаст простой пример, поскольку я считаю, что это было бы очень полезно для большого количества разработчиков :).


person Simon Kiely    schedule 24.03.2015    source источник


Ответы (4)


Чтобы уточнить ответ Тома Моргана, было бы легко создать для этого приложение UCMA.

Создайте приложение UCMA

Теперь это не должно быть сложным. Поскольку все, что вам нужно, это получить InstantMessage и ответить на него, вам не нужны все возможности надежного приложения. Мой выбор состоял бы в том, чтобы использовать простой UserEndpoint. Как назло, у Тома есть хороший пример в Интернете: Простейший пример использования UCMA UserEndpoint для отправки мгновенного сообщения. .

Заставьте его слушать входящие сообщения

В то время как пример приложения отправляет сообщение при подключении, нам нужно прослушивать сообщения. На UserEndpoint установите обработчик сообщений для мгновенных сообщений:

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);
}

Обработать сообщение

Здесь есть небольшая сложность: ваше первое сообщение может быть в «уведомлении» аргумента нового сообщения или появиться позже в потоке сообщений (потоке).

Работа с всплывающим сообщением

Всплывающее сообщение является частью настройки беседы, но оно может быть нулевым или не являться текстовым сообщением.

 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.
 }

Работа с потоком

Ваш поток сообщений — это место, где передаются фактические данные. Получите дескриптор потока и сохраните его, потому что он понадобится позже для отправки сообщений.

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;
}

И создайте обработчик сообщений для обработки входящих сообщений:

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);
    }
}

Это примерно подытожило бы самый простой пример отправки/получения сообщений. Дайте мне знать, если какие-либо части этого нуждаются в дополнительных разъяснениях, я могу добавить к ответу, где это необходимо.

Я создал Gist с полным решением. К сожалению, это не проверено, потому что я в настоящее время не рядом со средой разработки Lync. См. UCMA UserEndpoint replying to IM Example.cs.

person Willem    schedule 21.04.2015
comment
@Willen Duncan большое спасибо за этот ответ, я воспользуюсь им, чтобы попытаться создать решение на выходных - ценю это! :) - person Simon Kiely; 24.04.2015

Да, абсолютно. UCMA (Unified Communications Managed API) был бы моим выбором API для использования здесь и хорошим местом для начала — приложения UCMA являются «обычными» приложениями .net, но также предоставляют конечную точку приложения, которую можно добавить к контакту пользователя. список. Когда пользователи отправляют сообщения, это может инициировать события в вашем приложении, чтобы вы могли принять входящее мгновенное сообщение, выполнить перевод аббревиатуры и вернуть полную формулировку.

У меня есть куча сообщений в блоге об UCMA, но пока еще нет определенной коллекции «полезных» сообщений для работы, но скоро! А пока не стесняйтесь просматривать список.

-Том

person Tom Morgan    schedule 25.03.2015

Я никогда не пользовался Lync, но когда я просматривал документацию по разработке, я наткнулся на образец, который может быть тем, что вы ищете.

Lync 2013: фильтрация сообщений комнаты до того, как они будут опубликовано

После того, как вы отфильтровали сообщения, вам просто нужно поймать аббревиатуру и вызвать свой собственный код, который вызывает ваш API.

Если я что-то не упустил, я думаю, вы могли бы сделать это и с помощью простого запроса GET. Просто вызовите свой API следующим образом: yoursite.com/api/acronym/[the_acronym_here].

person Emile Bergeron    schedule 31.03.2015

Вы можете использовать UCWA (Microsoft Unified Communications Web API), это REST API. Для получения подробной информации можно ссылаться на следующее.

https://ucwa.lync.com/documentation/what-is-lync-ucwa-api

person ammoe    schedule 14.04.2015