0

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

参考UCWA:集成高级聊天选项 ,我知道,在发送消息到使用之前,ucwa.Transport.clientRequest我们必须设置contentType当前text/htmltext/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
                    });
                }
            }

但是,输出仍然相同。关于communicationAPI 的第二个建议,我找不到它。

对此有什么建议吗?

4

2 回答 2

1

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

  • Charset:默认值为 ISO-8859-1,我必须使用 UTF-8 来接收任何消息。
  • 协商的消息格式:接收联系人仅支持纯消息格式,但消息以text/html内容类型发送。
于 2016-04-20T13:04:54.303 回答
0

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

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

  1. 在发出makeMeAvailable请求时,提供SupportedMessageFormats(数组)并包含 Html
  2. 发出 PUT通信请求并在 SupportedMessageFormats 中包含 Html

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

于 2015-07-09T13:45:29.833 回答