Microsoft BotBuilder Node.js:如何向安卓Skype for Business发送格式化文本(粗体、斜体、换行)
解决Skype for Business安卓端格式化消息显示问题
根据你遇到的情况,Skype for Business不同客户端对消息格式的支持差异确实很大,尤其是安卓端对HTML和转义字符的兼容度较低。下面是几个针对性的解决方案,你可以逐一尝试:
1. 正确配置HTML格式的消息类型
你之前尝试的HTML标签被转义成原始代码,很大概率是因为没有明确指定消息的文本格式为HTML。试试直接使用未转义的HTML标签,并设置textFormat为html:
var msgToSend = new builder.Message(session) .text("<b>粗体文本</b><br/><br/><i>斜体文本</i>") .textFormat(builder.TextFormat.html) // 关键:指定为HTML格式 .textLocale('en-us'); bot.loadSession(addr1, function (err, session) { bot.send(msgToSend); });
注意:安卓端Skype for Business对HTML的支持有限,不是所有标签都能生效,<b>、<i>、<br>这类基础标签通常是可以识别的,但复杂样式可能还是无法渲染。
2. 使用自适应卡片(Adaptive Cards)实现跨端兼容
微软的自适应卡片是统一的富文本格式,不同客户端会自动适配渲染,安卓端的支持度比原生HTML更好。你可以用它来构建包含粗体、斜体、换行的消息:
// 定义自适应卡片内容 var adaptiveCard = { "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "type": "AdaptiveCard", "version": "1.0", "body": [ { "type": "TextBlock", "text": "**Hello**", // 用Markdown语法表示粗体 "weight": "Bolder", "size": "Medium" }, { "type": "TextBlock", "text": "*World!*", // 用Markdown语法表示斜体 "italic": true, "spacing": "Medium" // 实现换行/间距效果 } ] }; // 构建消息并添加卡片 var msgToSend = new builder.Message(session) .addAttachment(adaptiveCard); bot.loadSession(addr1, function (err, session) { bot.send(msgToSend); });
自适应卡片的优势在于,它会根据客户端能力自动调整显示效果,安卓端能正确解析其中的粗体、斜体和间距设置,不会出现原始代码的问题。
3. 针对安卓端的特殊换行处理
如果只是需要换行效果,安卓端可能无法识别\n或<br>,你可以尝试使用安卓系统原生支持的换行符\r\n,同时配合HTML格式:
var msgToSend = new builder.Message(session) .text("Hello\r\n\r\nWorld!") .textFormat(builder.TextFormat.html);
不过这种方法的稳定性不如自适应卡片,建议优先尝试前两种方案。
额外提示
Skype for Business安卓端的格式支持确实存在局限性,部分复杂样式可能无法完美呈现。如果上述方法都达不到预期,你可以考虑对安卓端用户做降级处理:发送纯文本消息时用特殊符号(比如---)分隔内容,保证可读性。
内容的提问来源于stack exchange,提问作者Planet-Zoom
相关产品推荐
相关产品推荐

