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"));
}
}
我用 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"));
}
}