Lync 2013 即时消息字体和颜色



>背景 - 我正在开发一个 Lync 应用程序,该应用程序在与特定用户的对话中充当中间人。基本上,传入用户 A 的呼叫将转发给用户 B,但调用方不会获得用户 B 的详细信息。从她的角度来看,她直接与用户A交谈。基本上,应用程序管理对用户 A 的每个传入调用的两个调用:

  1. 从调用方到用户 A
  2. 从用户 A(通过模拟为调用方)到用户 B

接收每条消息并按原样转发给用户 B。

问题 在某些情况下,我希望从系统给出自动回复。到目前为止没问题,但我想为这些"系统"消息设置一种样式。在普通的 Lync 对话中聊天时,您可以选择字体、颜色和大小,以及更改文本的方向。

现在,对于双方之间的常规公报,我只需原封不动地传递消息 - 即用户 A 收到来自调用方的消息,系统按原样将e.TextBody发送给用户 B(e InstantMessageReceivedEventArgs)。我只是打电话:

instantMessagingFlow.BeginSendInstantMessage(Encoding.UTF8.GetBytes(e.TextBody),
    res =>
    {
        try
        {
            instantMessagingFlow.EndSendInstantMessage(res);
        }
        catch(Exception ex)
        {
            //handle exception
        }
    });

现在,在这种情况下,格式完全丢失。我没有发现任何证据表明InstantMessageReceivedEventArgs传递了任何类型的样式数据......

我知道可以使用HTML设置IM的样式,以便发送消息变成以下内容:

instantMessagingFlow.BeginSendInstantMessage(new ContentType("text/html"),
    Encoding.UTF8.GetBytes("<div style='color: blue;'>" + e.TextBody + "</div>"),
    res => 
    [...]

这为我提供了所选颜色的文本,但我在选择字体或设置文本对齐方式时遇到问题。无论我做什么,一些字体都显示在Times New Roman中(或者是Segoe UI?无论默认值是什么...我使用 font-family: Arial; 设置字体。在某些情况下,它会被简单地忽略,但即使它起作用,设置direction: rtl;(大部分文本应该是从右到左的),或者text-align: right;没有任何效果......

我是否输入了不正确的命令?是否有我需要用于未text-align的文本对齐的特定命令?

如果您尝试在OCS Web或Window客户端上发送消息,则需要使用X-MMS-IM-Format以不同的方式格式化它。对于 Lync 2010 客户端,您可以使用下面的代码段:

string fontColor = "color: " + String.Format("{0:X2}{1:X2}{2:X2}", agentFontColor.R, agentFontColor.G, agentFontColor.B) + "; ";
            htmlMessage = "<html><body ><div style=" font-family: " + agentFontName + "; " + agentFontBold + agentFontSize + fontColor + agentFontItalic + agentFontUnderline + " ">" + imText + "</div></body></html>";

agentFontBold 应为 : font-weight: bold; 或 font-weight: Normal; -根据要求。 agentFontSize 应为 : font-size: 11px - 根据要求。 代理字体斜体应为:字体样式:斜体;或字体样式:正常;-根据要求。 代理字体下划线应为:文本修饰:下划线;或" - 根据要求。

最新更新