cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
deceparis
Advocate I
Advocate I

Using Adaptive Card date-picker to pass back input to PVA and showing adaptive card multiple times

Hey everyone, 

 

I am currently working on an implementation of a date-picker in PVA, I've managed to get to the point that I can get the adaptive card to show up in PVA just fine but I have run into multiple issues which I think are just due to my lack of understanding when it comes to adaptive cards. (https://adaptivecards.io/explorer/Input.Date.html

 

What I want to do is let customers put in holiday requests through PVA by:

- Showing a date-picker to let a user pick a holiday start date

- Passing this value back to PVA and confirming the date with the user

- Repeating the above two steps for an end-date. 

 

Then pass the start-, and end-date (ideally formated as DD-MM-YY) to a flow that checks the difference between these dates (using ticks) against a user's available holidays, and then tells a user whether or not they can actually make the request. I've gotten all these flows to work just fine, and can show the date-picker in PVA. 

 

I have two major issues: 

1. I don't know how to pass the value back to PVA, I've tried to use global variables but this has not worked, see: 

deceparis_0-1658125694572.png

Does anyone know what I am doing wrong here? I thought it may not loop correctly, or may not actually set the value right using turn.activity, I was mostly following the microsoft documentation (https://docs.microsoft.com/en-us/power-virtual-agents/advanced-bot-framework-composer-example1) and the other examples. Can someone tell me what I am doing wrong here, and maybe show an example of how to do it right? 

 

The second issue I have is that I cannot seem to call the same adaptive card twice, even if I have made a new dialog in Bot Framework Composer that is a copy of the one showing the adaptive card: 

deceparis_1-1658126284668.png

Please ignore the hard-coded dates. 🙂 Here DateCard and DateCardEnd are separate dialogs in Bot Framework Composer (and therefore topics in PVA) but the second one is skipped as you can see. 

 

I hope someone can help me understand this better, and everyone else that might want to do this (though I hope that PVABuild22 might make all of this easier). 

 

Sincerely, 

N

 

1 ACCEPTED SOLUTION

Accepted Solutions
deceparis
Advocate I
Advocate I

Right, so it took a little while (and a good amount of banging my head against the wall), but I did actually figure this out: 

deceparis_0-1660636137987.png

deceparis_1-1660636162595.png

deceparis_2-1660636202200.png

I hope that someone having similar issues might benefit from this. Shoot me a message if that is the case! 

View solution in original post

11 REPLIES 11
deceparis
Advocate I
Advocate I

Right, so it took a little while (and a good amount of banging my head against the wall), but I did actually figure this out: 

deceparis_0-1660636137987.png

deceparis_1-1660636162595.png

deceparis_2-1660636202200.png

I hope that someone having similar issues might benefit from this. Shoot me a message if that is the case! 

rubengzz7
Frequent Visitor

hello, i have not been able to make this date picker on the bot framework composer. having the next error.

 

Do anyone know what I am doing wrong?

rubengzz7_0-1661191880622.png

 

Hey @rubengzz7 , 

 

Have you added the adaptive card under 'Bot Responses'? My code there looks like: 

# adaptivecardjson_datecard()
- ```
{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.0",
  "body": [
    {
      "type": "TextBlock",
      "text": "Date Input"
    },
    {
      "type": "Input.Date",
      "id": "date",
      "placeholder": "Enter a date",
      "value": "2022-01-01"
    }
  ],
  "actions": [
    {
      "type": "Action.Submit",
      "title": "OK"
    }
  ]
}
```

# AdaptiveCardDateCard()
[Activity
    Attachments = ${json(adaptivecardjson_datecard())}
]

# DateTimeInput_Prompt_f5dxDn()
- ${AdaptiveCardDateCard()}

 I think that is what you're missing, if you look at what my Bot Dialog then references where you get the error: 

deceparis_0-1661236866935.png

It is that same DateTimeInput prompt that is all the way at the end of my code snippet. If I recall correctly this was created automatically for me the first time I actually called the date card. I basically followed the Microsoft guidelines: https://docs.microsoft.com/en-us/power-virtual-agents/advanced-bot-framework-composer-example1 (1-4). I don't think you can copy my entire code-snippet, but most of it (everything except the last block starting with #DateTimeInput" as that is created by the dialog calling the card itself. 

jdee111
Advocate II
Advocate II

This is great - how did you get to pass the value back to PVA?  I see you used virtualagent.TryDate... did you use a bot variable?

Thank you for the response. I copied the code except from the line you told me not but im having another error after selecting the date on PVA 😞

 

We ran into a problem executing your composer dialog. The variable 'TryDate' cannot be set because it was not defined and doesn't exist in this bot
Sent at August 23 at 3:24 PM
Bot true said: Sorry, the bot can't talk for a while. It's something the bot's owner needs to address. Error code: 2023. Conversation ID: 2u4icdGcnrD1AXceuQcXWI-us. Time (UTC): 8/23/2022 9:24:34 PM. The variable 'TryDate' cannot be set because it was not defined and doesn't exist in this bot
Bot true said:
Sorry, the bot can't talk for a while. It's something the bot's owner needs to address. Error code: 2023. Conversation ID: 2u4icdGcnrD1AXceuQcXWI-us. Time (UTC): 8/23/2022 9:24:34 PM. The variable 'TryDate' cannot be set because it was not defined and doesn't exist in this bot

 

I think the problem may be in one of this boxes

rubengzz7_6-1661290222101.pngrubengzz7_7-1661290234038.pngrubengzz7_8-1661290262779.png

 

deceparis
Advocate I
Advocate I

@rubengzz7 Ah, but there's progress! I have a flow running in the start that fetches user information based on their name etc.. You need some way of initializing the variable, you can do this by adding a 'ask a question' and just using the variable there, or get a flow running. Then you need to change the variable in there to be a global variable 

deceparis_0-1661327940712.png

So you could do something along these lines if you don't want to use a flow: 

deceparis_1-1661328088633.png

Note that I have turned this into a global variable by allowing external sources to set the values (just click on the variable and change the settings for it)

 

@jdee111 so that is what I used, a global variable initialized by a flow (Power Automate), but if you can't use power automate (or it gets too expensive) just make a question topic I think. Not even sure if you could make a topic like that, and keep it empty otherwise with triggerphrases no one will ever get to, just to have the variable initialized. 

Thanks!! I tried it this way round too 😄 

 

jdee111_0-1661339479010.png

 

Seemed to be happy enough!

thank you very much! with your help I finally made it :D.

 

Im experiencing another issue now because of the logic of my flow. I need to put a date range... for example from 01/01/2022 to 05/08/2022 and my plan was to send two times the adaptive card but the bot is skipping the second one and later on the log it says Traced in a previous run 😕 Maybe there is an adaptive card that ask you for the range to avoid this problem... or what else could I do?

rubengzz7
Frequent Visitor

Update I managed to avoid the bot from skipping the question.. 

 

I open the code on the Create tab and then changed the variable 

alwaysPrompt to true. It was in false.
 
rubengzz7_0-1661374453799.png

Hope it helps for someone!!

 

Thanks

Helpful resources

Announcements
Microsoft 365 Conference – December 6-8, 2022

Microsoft 365 Conference – December 6-8, 2022

Join us in Las Vegas to experience community, incredible learning opportunities, and connections that will help grow skills, know-how, and more.

Top Solution Authors
Users online (1,233)