微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Botframework V4提示中的额外新行

如何解决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?" 

我从资源文件中加载此文本,然后通过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。在两个客户端中都存在所描述的行为。

解决方法

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

这些是消除多余新行的代码:

BaseDialog.resx Wenn Sie Ihre Eingabe因此,想与您联系,请与Kann ich Sie互惠生并通过安特卫普发现。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。