I have already sent the card with capturing the details and with buttons.After clicking on submit from task module which will save details through http API here the activity type is Invoke.
Now i have to update the existing adaptive Card.
I have the code to update the message, but how to update the card or resend the card again.
connector = new ConnectorClient(new Uri(activity.ServiceUrl));
reply = activity.CreateReply($"You sent {activity.Text} which was {activity.Text.Length} characters");
var msgToUpdate = await connector.Conversations.ReplyToActivityAsync(reply);
Activity updatedReply = activity.CreateReply($"This is an updated message");
await connector.Conversations.UpdateActivityAsync(reply.Conversation.Id, msgToUpdate.Id, updatedReply);
This involves few steps.
Create an Adaptive card and add unique id (GUID) in adaptive card action.
var Card = new AdaptiveCard()
{
Body = new List<AdaptiveElement>()
{
new AdaptiveTextBlock(){Text="This is a test adaptive card"}
},
Actions = new List<AdaptiveAction>()
{
new AdaptiveSubmitAction()
{
Title="UpdateMe",
DataJson= @"{'id':'uniqueId'}"
}
}
};
After sending message keep mapping of adaptive card uniqueId and message id.
connector = new ConnectorClient(new Uri(activity.ServiceUrl));
reply = activity.CreateReply();
reply.Attachments.Add(Card.ToAttachment());
var msgToUpdate = await connector.Conversations.ReplyToActivityAsync(reply);
// Keep mapping of uniqueId and messageToUpdate.Id
// UniqueId1 => messageId1
// UniqueId2 => messageId2
When user clicks on UpdateMe action button, check the mapping for uniqueId
(This will be in activity.Value
).
- Create new card and call
connector.Conversations.UpdateActivityAsync
with updated code.
Let us knwo if you need more details.