gpt4 book ai didi

c# - 在 bot 中不提示启动对话框(对于 C#)

转载 作者:行者123 更新时间:2023-11-30 23:22:59 25 4
gpt4 key购买 nike

我正在使用 C# 中的 Microsoft Bot Framework V3 构建一个机器人,并尝试启动对话框并在用户输入任何输入之前使用说明“欢迎”用户。我还希望 Dialog 在用户每次完成表单时重复。

我正在尝试使用 FormFlow 选项:FormOptions.PromptInStart,但它仍然只有在输入一些输入后才会显示欢迎消息。不确定这是否已被 V1 弃用,或者我只是没有做对。有什么建议吗??

我的类(class)如下:

消息 Controller :

        internal static IDialog<MyClass> MakeRootDialog()
{
return Chain.From(() => FormDialog.FromForm(MyClass.BuildForm, options: FormOptions.PromptInStart))
.Do(async (context, order) =>
{//some actions here }
});
}

我的类.cs:

 [Serializable]
public class MyClassDialog : IDialog<object>
{
public async Task StartAsync(IDialogContext context)
{
context.Wait(MessageReceivedAsync);
}
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
{
var message = await argument;
await context.PostAsync("You said: " + message.Text);
context.Wait(MessageReceivedAsync);
}
}

MyClassDialog.cs:

public class MyClass
{
public static IForm<MyClass> BuildForm()
{
OnCompletionAsyncDelegate<MyClass> processOrder = async (context, state) =>
{
await context.PostAsync("We are currently filing your order.....");
};

return new FormBuilder<MyClass>()
.Message("Welcome to my bot!")
//some actions here
.Confirm(//more actions here)
.AddRemainingFields()
.Message("Thanks for providing your inputs")
.OnCompletion(processOrder)
.Build();
}

};

最佳答案

如何实现 Post 方法?我认为您在形式上没有问题,但在 Post 方法中。

这段代码对我有用。

public async Task<HttpResponseMessage> Post([FromBody] Activity activity)
{

if (activity.Type == ActivityTypes.Message || activity.Type == ActivityTypes.ConversationUpdate)
{
Conversation.SendAsync(activity, MakeRootDialog);
{
}

因为如果用户连接,ActivityType 是 ConversationUpdate,没有消息。您也必须在 activity.Type == ActivityTypes.ConversationUpdate 时调用 MakeRootDialog。

关于c# - 在 bot 中不提示启动对话框(对于 C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38578042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com