2

背景- 我正在开发一个 Lync 应用程序,该应用程序在与特定用户的对话中充当中间人。基本上,进入 UserA 的呼叫被转发给 UserB,但呼叫者没有得到 UserB 的详细信息。从她的角度来看,她直接与 UserA 交谈。基本上,应用程序为对 UserA 的每个传入呼叫管理两个呼叫:

  1. 从调用者到 UserA
  2. 从 UserA(通过冒充调用者)到 UserB

每条消息都被接收并按原样转发给 UserB。

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

现在,对于两方之间的常规通信,我只是将消息传递给原样 - 即,UserA 收到来自调用者的消息,并且系统e.TextBody按原样(eis InstantMessageReceivedEventArgs)将消息发送给 UserB。我只是调用:

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

4

1 回答 1

0

如果您尝试在 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 应该是:字体粗细:粗体;或字体粗细:正常;- 根据要求。agentFontSize 应该是: font-size: 11px - 根据要求。agentFontItalic 应该是:字体样式:斜体;或字体样式:正常;- 根据要求。agentFontUnderline 应该是 : text-decoration: underline; 或“” - 根据要求。

于 2015-03-21T07:13:27.090 回答