【发布时间】:2018-06-06 00:52:42
【问题描述】:
我正在尝试在我的机器人中创建一个表单,用户必须在其中上传一个文件以及其他文本输入。为此,我制作了一个 ReceiveAttachmentDialog,它会在其中验证用户是否上传了文件,问题是我不知道如何检测用户何时上传文件,从而午餐 ReceiveAttachmentDialo。
forDialog 是这样的:
[Serializable]
public class FraisDialog : IDialog<object>
{
public async Task StartAsync(IDialogContext context)
{
// Root dialog initiates and waits for the next message from the user.
// When a message arrives, call MessageReceivedAsync.
var replyMessage = context.MakeMessage();
replyMessage.Attachments = new List<Connector.Attachment> { CreateAdaptiveCardwithEntry() };
await context.PostAsync("Veuillez compléter le formulaire ci-dessous");
await context.PostAsync(replyMessage, CancellationToken.None);
context.Wait(this.MessageReceivedAsync);
}
public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> result)
{
context.Wait(MessageReceivedAsync);
var message = await result;
if (message.Value != null)
{
// Got an Action Submit
dynamic value = message.Value;
string submitType = value.Type.ToString();
switch (submitType)
{
case "SaveFunction":
if (value.titre == "")
{
await context.PostAsync("Veuillez compléter tous les paramètres du formulaire \n");
}
else
{
await context.PostAsync($"Vous avez saisie les paramètres suivants : \n titre : {value.titre} \n date : {value.date} \n montant : {value.montant}");
context.Done<string>(null);
}
return;
}
}
}
public Connector.Attachment CreateAdaptiveCardwithEntry()
{
var submitActionData = JObject.Parse("{ \"Type\": \"SaveFunction\" }");
var card = new AdaptiveCard()
{
Body = new List<CardElement>()
{
// Hotels Search form
new TextBlock() { Text = "Titre de la note des frais" },
new TextInput()
{
Id = "titre",
Speak = "<s>Veuillez saisir le titre</s>",
Placeholder = "Veuillez saisir le titre",
Style = TextInputStyle.Text
},
new TextBlock() { Text = "Date de la note des frais" },
new DateInput()
{
Id = "date",
Placeholder ="Veuillez saisir la Date de la note des frais"
},
new TextBlock() { Text = "Montant en euros de la note de frais" },
new NumberInput()
{
Id = "montant",
Speak = "<s>Veuillez saisir le Montant en euros de la note de frais</s>",
Placeholder = "Veuillez saisir le Montant de la note de frais",
},
},
Actions = new List<ActionBase>()
{
new SubmitAction()
{
Title = "Envoyer",
Speak = "<s>Envoyer</s>",
DataJson = submitActionData.ToString()
}
}
};
Connector.Attachment attachment = new Connector.Attachment()
{
ContentType = AdaptiveCard.ContentType,
Content = card
};
return attachment;
}
}
我的问题是我如何检测用户何时上传了文件?我应该把await context.Forward(new ReceiveAttachmentDialog(), this.ResumeAfterRecieveDialog, context.Activity, CancellationToken.None);放在哪里
【问题讨论】:
标签: c# .net file-upload botframework