背景 - 我正在开发一个Lync应用程序,该应用程序在与特定用户进行对话时充当中间人。基本上,进入UserA的呼叫被转发到UserB,但呼叫者没有获得UserB的详细信息。从她的角度来看,她直接与UserA交谈。基本上,应用程序为UserA的每个来电管理两个呼叫:
接收每条消息并按原样转发给UserB。
问题在某些情况下,我希望系统自动回复。到目前为止没问题,但我想为这些“系统”消息设置样式。在普通的Lync会话中聊天时,您可以选择字体,颜色和大小,以及更改文本的方向。
现在,对于双方之间的定期公报,我只是简单地传递消息 - 即,UserA从呼叫者接收消息,系统将e.TextBody
按原样发送给UserB({{1}是e
)。我只是打电话:
InstantMessageReceivedEventArgs
现在,在这种情况下,格式化完全丢失。我没有发现instantMessagingFlow.BeginSendInstantMessage(Encoding.UTF8.GetBytes(e.TextBody),
res =>
{
try
{
instantMessagingFlow.EndSendInstantMessage(res);
}
catch(Exception ex)
{
//handle exception
}
});
中传递任何样式数据的证据......
我知道可以使用HTML设置IM的样式,以便发送消息成为:
InstantMessageReceivedEventArgs
这为我提供了所选颜色的文字,但是我在选择字体或设置文字对齐方面遇到了麻烦。无论我做什么,一些字体都显示在Times New Roman中(或者是Segoe UI?无论默认是什么......)。我使用instantMessagingFlow.BeginSendInstantMessage(new ContentType("text/html"),
Encoding.UTF8.GetBytes("<div style='color: blue;'>" + e.TextBody + "</div>"),
res =>
[...]
设置字体。在某些情况下,它会被忽略,但即使它有效,设置font-family: Arial;
(大多数文本应该从右到左),或direction: rtl;
无效 ...
我输错了命令吗?是否需要使用特定命令进行文本对齐,而不是text-align: right;
?
答案 0 :(得分:0)
如果您尝试在OCS Web或Window客户端上发送消息,则需要使用X-MMS-IM-Format以不同方式对其进行格式化。对于Lync 2010 Client,您可以使用以下代码段:
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:正常; - 按要求。 agentFontSize应该是:font-size:11px - 根据要求。 agentFontItalic应该是:font-style:italic;或font-style:正常; - 按要求。 agentFontUnderline应该是:text-decoration:underline;或&#34;&#34; - 按要求。