是否可以让 Lync 与 REST API 通信?
Is it possible to have Lync communicate with a REST API?
我创建了一个基本的 REST API,用户可以在其中询问首字母缩写词,网页将通过 POST 调用 return 首字母缩写词的含义。
我的大多数最终用户不像使用 Microsoft Lync 应用程序那样频繁地使用 Internet。
我是否可以创建一个 Lync 帐户,并让它向我 API 传递问题,并 return 向用户传递答案?这意味着用户只需要在 Lync 中打开一个新的聊天而不是一个新的网页。
我确定这是可能的,但我在 Google 或网络上找不到任何信息。如何实现?
非常感谢。
编辑:
希望有人创建一个简单的示例,因为我相信这对大量开发人员非常有用:)。
是的,绝对是。 UCMA(统一通信管理 API)将是我选择 API 在这里使用,并且是一个很好的起点 - UCMA 应用程序是 "normal" .net 应用程序,但也公开了一个应用程序端点,可以添加到用户的联系人列表中。当用户发送消息时,这会在您的应用程序中触发事件,这样您就可以获取传入的 IM、进行首字母缩写词翻译和 return 完整措辞。
我有很多关于 UCMA 的博文,但目前还没有明确的 "useful" 帖子集可以完成,但很快就会发布!与此同时,请随时 browse the list.
-汤姆
我从未使用过 Lync,但在查看开发文档时,我偶然发现了一个示例,它可能正是您要查找的内容。
Lync 2013: Filter room messages before they are posted
过滤消息后,您只需要捕捉首字母缩写词并调用调用您的 API.
的自定义代码
除非我遗漏了什么,否则我认为您也可以使用简单的 GET 请求来完成。只需这样称呼您的 API yoursite.com/api/acronym/[the_acronym_here]
。
你可以使用UCWA (Microsoft Unified Communications Web API),是REST的一个API.For细节,可以参考如下..
为了详细说明 Tom Morgan 的答案,为此创建一个 UCMA 应用程序很容易。
创建 UCMA 应用程序
现在这并不复杂。由于您只想接收即时消息并回复它,因此您不需要受信任应用程序的全部功能。我的选择是使用简单的 UserEndpoint
。幸运的是,汤姆在网上有一个很好的例子:Simplest example using UCMA UserEndpoint to send an 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' 中,或者稍后到达消息流(流)。
处理 Toast 消息
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);
}
}
以上就是 sending/receiving 消息的最基本示例。如果其中的任何部分需要更多说明,请告诉我,我可以在需要的地方添加答案。
我创建了一个包含完整解决方案的 Gist。遗憾的是它没有经过测试,因为我目前不在 Lync 开发环境附近。参见 UCMA UserEndpoint replying to IM Example.cs
。
我创建了一个基本的 REST API,用户可以在其中询问首字母缩写词,网页将通过 POST 调用 return 首字母缩写词的含义。
我的大多数最终用户不像使用 Microsoft Lync 应用程序那样频繁地使用 Internet。
我是否可以创建一个 Lync 帐户,并让它向我 API 传递问题,并 return 向用户传递答案?这意味着用户只需要在 Lync 中打开一个新的聊天而不是一个新的网页。
我确定这是可能的,但我在 Google 或网络上找不到任何信息。如何实现?
非常感谢。
编辑:
希望有人创建一个简单的示例,因为我相信这对大量开发人员非常有用:)。
是的,绝对是。 UCMA(统一通信管理 API)将是我选择 API 在这里使用,并且是一个很好的起点 - UCMA 应用程序是 "normal" .net 应用程序,但也公开了一个应用程序端点,可以添加到用户的联系人列表中。当用户发送消息时,这会在您的应用程序中触发事件,这样您就可以获取传入的 IM、进行首字母缩写词翻译和 return 完整措辞。
我有很多关于 UCMA 的博文,但目前还没有明确的 "useful" 帖子集可以完成,但很快就会发布!与此同时,请随时 browse the list.
-汤姆
我从未使用过 Lync,但在查看开发文档时,我偶然发现了一个示例,它可能正是您要查找的内容。
Lync 2013: Filter room messages before they are posted
过滤消息后,您只需要捕捉首字母缩写词并调用调用您的 API.
的自定义代码除非我遗漏了什么,否则我认为您也可以使用简单的 GET 请求来完成。只需这样称呼您的 API yoursite.com/api/acronym/[the_acronym_here]
。
你可以使用UCWA (Microsoft Unified Communications Web API),是REST的一个API.For细节,可以参考如下..
为了详细说明 Tom Morgan 的答案,为此创建一个 UCMA 应用程序很容易。
创建 UCMA 应用程序
现在这并不复杂。由于您只想接收即时消息并回复它,因此您不需要受信任应用程序的全部功能。我的选择是使用简单的 UserEndpoint
。幸运的是,汤姆在网上有一个很好的例子:Simplest example using UCMA UserEndpoint to send an 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' 中,或者稍后到达消息流(流)。
处理 Toast 消息
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);
}
}
以上就是 sending/receiving 消息的最基本示例。如果其中的任何部分需要更多说明,请告诉我,我可以在需要的地方添加答案。
我创建了一个包含完整解决方案的 Gist。遗憾的是它没有经过测试,因为我目前不在 Lync 开发环境附近。参见 UCMA UserEndpoint replying to IM Example.cs
。