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

Posted

技术标签:

【中文标题】UCWA:无法发送/接收格式化文本【英文标题】:UCWA: Unable to send/Receive formatted text 【发布时间】:2015-07-09 11:17:25 【问题描述】:

我有一个简单的聊天应用程序,可以在 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 的第二个建议,我找不到它。

对此有何建议?

【问题讨论】:

提供给 makeMeAvailable 的数据看起来不正确。该参数应为 SupportedMessageFormats,您可以在发出 makeMeAvailable 请求后,通过对通信资源发出 GET 请求来查看结果。 【参考方案1】:

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

字符集:默认值为 ISO-8859-1,我必须使用 UTF-8 来接收任何消息。 协商的消息格式:接收联系人仅支持纯消息格式,但消息以 text/html 内容类型发送。

【讨论】:

【参考方案2】:

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

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

    向makeMeAvailable 发出请求时,提供SupportedMessageFormats(数组)并包含Html 向communication 发出 PUT 请求并在 SupportedMessageFormats 中包含 Html

在 1 或 2 成功执行之前,将无法接收 HTML 格式的消息。

【讨论】:

感谢您的回答。我已经完成了更改并相应地编辑了我的问题。请查看相同的内容。

以上是关于UCWA:无法发送/接收格式化文本的主要内容,如果未能解决你的问题,请参考以下文章

Skype for Business Online - 使用 UCWA 发送和接收消息

UCWA:发送多条消息时出错

使用 UCWA 聊天

收到的电邮附件为Winmail.dat?

什么是“HTML格式发送邮件”?

Lync Ucwa 绕过 Lync 客户端