UCWA:无法发送/接收格式化文本

时间:2015-07-09 11:17:25

标签: chat lync instant-messaging ucwa

我有一个简单的聊天应用程序,可以在ASP.Net MVC Web应用程序中使用UCWA api实现纯文本。我必须接下来实现格式化文本。

参考UCWA: integrating advanced chat options ,我发现,在使用ucwa.Transport.clientRequest发送邮件之前,我们必须将contentType设置为text/html,目前为text/plain

所以我有发送消息的功能,如下所示:

function sendMessage(displayName, msg, timestamp) {

            var encodedMsg = encodeURIComponent(msg);

            ucwa.Transport.clientRequest({
                url: messagingLinks.SendMessage + "?SessionContext=" + ucwa.GeneralHelper.generateUUID(),
                type: "post",
                contentType: "text/html",
                data: encodedMsg,
                callback: function () {
                    addMessageToChat(displayName, encodedMsg, timestamp);
                }
            });
        }

handleMessage()的实施如下所示:

function handleMessage(data, parts) {

            alert("Inside Handle message");

            if (!data._embedded.message._links.plainMessage) return false;

            var message = decodeMessage(data._embedded.message._links.plainMessage.href);

            var decodedMsg = decodeURIComponent(message);
            addMessageToChat(data._embedded.message._links.participant.title, decodedMsg, formatTime(new Date(Date.now())));

        }

上述实现中的问题是,在接收端,没有输入handleMessage()方法,这意味着我没有收到传入消息。

任何人都可以指出我出错的地方以及我需要做的任何其他更改以及上述更改,以便我可以发送格式化的文本。对于相同的样本,样本将非常有用。

任何建议也都足够好。提前谢谢。

编辑:

如我所知,我修改了makeMeAvailable方法。以下是Authentication.js中的相同定义:

function makeMeAvailable() {
                if (!_authenticated) {
                    cache.read({
                        id: "main"
                    }).done(function (cacheData) {
                        if (cacheData) {
                            var data = {
                                SupportedModalities: ["Messaging"],
                                supportedMessageFormats: ["Plain","Html"]
                            };

                            transport.clientRequest({
                                url: cacheData._embedded.me._links.makeMeAvailable.href,
                                type: "post",
                                data: data,
                                callback: handleState
                            });
                        }
                    });
                } else {
                    handleState({
                        status: 204
                    });
                }
            }

但是,输出仍然相同。 关于communication API的第二个建议,我无法找到它。

对此有何建议?

2 个答案:

答案 0 :(得分:1)

以下是我没有收到通过UCWA API发送的消息的两个原因:

  • Charset :默认值为ISO-8859-1,我必须使用UTF-8接收任何讯息。
  • 协商的邮件格式:接收联系人仅支持纯文本邮件格式,但邮件是使用 text / html 内容类型发送的。

答案 1 :(得分:0)

当谈到UCWA中的消息传递格式时,应该知道默认情况下,默认情况下支持消息传递模式的所有端点都支持纯消息。有趣的是,这个限制不会阻止发送HTML格式的消息,如您在示例中所见。

有两种方法可以启用HTML格式的消息,如下所示:

  1. makeMeAvailable发出请求时提供SupportedMessageFormats(数组)并包含Html
  2. communication发出PUT请求,并在SupportedMessageFormats中包含Html
  3. 在成功执行1或2之前,将无法接收HTML格式的消息。