Botframework V4 提示中的额外新行

Extra new line in Botframework V4 prompt

我用 Microsoft Botframework 编写了一个机器人。在最新版本中,我在文本提示上多了一个新行时遇到了问题。

我想显示这样的文字:

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?" 

我从资源文件加载此文本并通过 context.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"]);
    }
}

HelpDialog.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 的用户。所描述的行为存在于两个客户端中。

所以我的一个 co-workers 完成了任务并找到了问题的解决方案。

这些是消除额外换行的代码:

BaseDialog.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?”

HelpDialog.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"));
    }
}