Я пытаюсь создать форму в своем боте, в которой пользователь должен загрузить файл вместе с другими текстовыми вводами.Для этого я сделал 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);