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:
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:
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
Solved! Go to Solution.
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:
I hope that someone having similar issues might benefit from this. Shoot me a message if that is the case!
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:
I hope that someone having similar issues might benefit from this. Shoot me a message if that is the case!
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?
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:
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.
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 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
So you could do something along these lines if you don't want to use a flow:
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 😄
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?
Update I managed to avoid the bot from skipping the question..
I open the code on the Create tab and then changed the variable
Hope it helps for someone!!
Thanks