Botframework V4提示中的额外新行



我用Microsoft Botframework编写了一个Bot。在最新版本中,我遇到了一个问题,在文本提示上增加了一行。

我想显示这样的文本:

Wenn Sie Ihre Eingabe so präzise wie möglich formulieren, kann ich Sie am besten verstehen und eine passende Antwort finden.
Diese Eingabe ist nicht sehr präzise:
"Kompetenzen Sollzinsänderung"
Schreiben Sie stattdessen doch lieber:
"Welche Kompetenzen benötige ich für die Änderung eines individuell vereinbarten Sollzinses?" 

我从资源文件加载此文本,并通过上下文发送它。PromptAsync到客户端。客户端将其渲染为:

Wenn Sie Ihre Eingabe so präzise wie möglich formulieren, kann ich Sie am besten verstehen und eine passende Antwort finden.
Diese Eingabe ist nicht sehr präzise:

"Kompetenzen Sollzinsänderung"
Schreiben Sie stattdessen doch lieber:
"Welche Kompetenzen benötige ich für die Änderung eines individuell vereinbarten Sollzinses?"

我知道markdown解释器是用来呈现文本的。有人知道如何格式化资源字符串以获得第一个输出吗?

编辑:我的资源文本如第一个代码部分所示。

获取资源文本的代码如下:BaseDialog.cs

public class BaseDialog : ComponentDialog{
private readonly IStringLocalizer<BaseDialog> _stringLocalizer;
public BaseDialog(string dialogId, IStringLocalizer<BAseDialog> stringLocalizer) : base(dialogId)
{
_stringLocalizer = stringLocalizer ?? throw new ArgumentNullException(nameof(stringLocalizer));
AddDialog(new TextPrompt(PROMPTDIALOGID));
}
protected override async Task<DialogTurnResult> OnBeginDialogAsync(DialogContext innerDc, object options, CancellationToken cancellationToken = default)
{
var activity = GetActivity().AsMessageActivity();
return await innerDc.PromptAsync(PROMPTDIALOGID, new PromptOptions
{
Prompt = (Activity)activity
}, cancellationToken);
}
public virtual IActivity GetActivity()
{
return MessageFactory.Text(Localizer["Default_Response"]);
}
}

帮助对话框.cs

public class HelpDialog : BaseDialog
{
public HelpHandlingDialog(IStringLocalizer<BaseDialog> localizer)
: base(nameof(HelpDialog), localizer)
{
}
public override IActivity GetActivity()
{
return MessageFactory.Text(Localizer["Help_Response"]);
}
}

我们正在使用Directline,并使用BotFramework Emulator进行测试,对于用户,我们正在使用ReactWebchat。所描述的行为在两个客户端中都存在。

所以我的一位同事完成了这项任务,并找到了问题的解决方案。

这是消除额外新行的代码:

基本对话框.resx在我看来,这是一个很好的例子,因为我发现了蚂蚁。

Diese Eingabe ist nicht sehr präzise: \n "Kompetenzen Sollzinsänderung"
Schreiben Sie stattdessen doch lieber:\n “Welche Kompetenzen benötige ich für die Änderung eines individuell vereinbarten Sollzinses?”

帮助对话框.cs

public class HelpgDialog : BaseDialog
{
public HelpDialog(IStringLocalizer<BaseDialog> localizer)
: base(nameof(HelpDialog), localizer)
{
}
public override IActivity GetActivity()
{
return MessageFactory.Text(Localizer["Help_Response"].Value.Replace("\n","n"));
}
}

最新更新