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:无法发送/接收格式化文本的主要内容,如果未能解决你的问题,请参考以下文章