Возможно ли связать Lync с REST API?

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

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

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

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

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

Изменить:

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

Ответы

Ответ 1

Чтобы подробнее обсудить Tom Morgan, было бы легко создать приложение UCMA для этого.

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

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

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

В то время как пример приложения отправляет сообщение, когда он подключен, нам нужно прослушивать сообщения. На 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);
}

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

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

Работа с сообщением Toast

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

 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.

Ответ 2

Да, абсолютно. UCMA (API управляемых унифицированных коммуникаций) будет моим выбором API для использования здесь, а также хорошим местом для запуска - приложения UCMA являются "нормальными".net-приложениями, но также выставляют конечную точку приложения, которую можно добавить к контакту пользователя список. Когда пользователи отправляют сообщения, которые могут инициировать события в вашем приложении, чтобы вы могли принимать входящие IM, выполнять перевод аббревиатуры и возвращать полную формулировку.

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

-Tom

Ответ 3

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

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

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

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

Ответ 4

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

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