cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
LindaP
Regular Visitor

Is it possible to reconnect the user to a conversation with a Power Virtual Agent and retain the context and previous chat history?

Hi There!

Using Power Virtual Agents, is possible to reconnect the user to a conversation, retaining both the context and previous chat history?

For example,

  • If the user leaves the website by accidentally closing their browser. Is it possible for the user to continue their session when they revisit the site?
  • If the user opens a new tab within the same domain, is it possible for the chatbot conversation to follow them?

The Azure bot service supports reconnecting to a conversation. Is this available for Power Virtual Agents?

https://docs.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-direct-line-3-0-recon...

Is the Conversation ID available as a property to the hosting website to store for the user?

https://docs.microsoft.com/en-us/azure/bot-service/bot-service-resources-identifiers-guide?view=azur...

 

1 ACCEPTED SOLUTION

Accepted Solutions
renatoromao
Most Valuable Professional
Most Valuable Professional

Hi @LindaP ,

 

I created a workflow to solve your problem. (if you are using a Custom canvas)

Please, follow the steps below:

 

Power Automate steps

1. Download the template here: https://bit.ly/PVA-GetConversationTranscript

2. Open flow.microsoft.com

3. Open Solutions (left menu)

4. Import my solution in your environment

5. Open the solution and click on the workflow

6. Turn on the workflow

7. Edit the workflow

8. Find the action called "Compose - Filter days in the past", I inserted "-7" to search seven days in the past because if you are filtering more than 7, maybe your workflow will be loaded up to 2 minutes and Power Virtual Agents will be shown the error. If you want to search for conversations for more than 7 days, test before implementing this feature and remember to insert subtract value before your day like "-10" (ten days in the past).

9.  Find the action called "List records - Conversation Transcript entity" and select your credentials (is not need to change the environment or entity)

10. Done.

 

Custom Canvas

Important: This solution will be work if you are using inside Custom Canvas, like Custom website, Power Apps Portals, SharePoint, or something like that.

1. Add this code inside your custom canvas: https://powervirtualagents.microsoft.com/en-us/blog/change-your-power-virtual-agents-default-canvas-...

2. Change the fetch method to my code below (only fetch code)

 

New fetch code

fetch(theURL)
            .then(response => response.json())
            .then(conversationInfo => {
                window.WebChat.renderWebChat(
                    {
                        directLine: window.WebChat.createDirectLine({
                            token: conversationInfo.token,
                        }),
                        store: store,
                        styleOptions: styleOptions,
                        overrideLocalizedStrings: {
                            TEXT_INPUT_PLACEHOLDER: 'Type your message'
                        }
                    },
                    document.getElementById('webchat')
                );
                $("#webchat input").parent().parent().parent().append("<div id='conversationId'><span>"+conversationInfo.conversationId+"</span></div>")

            })
            .catch(err => console.error("An error occurred: " + err));

 

3. The idea is the user saves the current Conversation Id if he wants to restore this conversation in the future (like a code number). He can save in your notes and personal documents and in the future, if he wants to see the last conversation, he just sends this code.


conversationid-codesample.png

 

4. Insert this CSS code to improve the layout

 

div#conversationId {
    padding: 0 10px;
    color: #888787;
    font-size: 13px;
    text-align: center;
}

 

5. Done.

 

Power Virtual Agents steps

Important: This solution will be work if you are using inside Custom Canvas, like Custom website, Power Apps Portals, SharePoint, or something like that.

1. Open Greeting topic or your Starter topic

2. Create a question with two options
Question: "Do you want to restore a conversation?"
Options: Yes/No
3. If Yes, create a question with identity type "User's entire response" and change the name of variable like "ConversationId". The idea is the user saves the current Conversation Id if he wants to restore this conversation in the future (like a code number).
5. Create an action calling my workflow (Power Automate) using the ConversationId variable like the input parameter.
6. Create a show message and select the variable ConversationHistory (Power Automate output)

7. Done.

 

I hope this solution helps you to do your scenario.


Did I answer your question? Mark my post as a solution!
Thanks!

Renato Romão,

Connect with me here 😉

Power Virtual Agents course (+3.250 students) : English | Português

View solution in original post

10 REPLIES 10
renatoromao
Most Valuable Professional
Most Valuable Professional

Hi @LindaP ,

 

Unfortunately, we can't do it yet.

You can maintain the history in some channels like Microsoft Teams and Facebook because the chat maintains the historical inside the channel. But if you are using the browser, demo website, or something like that, you will lose the conversation.

 

I created the idea here: https://powerusers.microsoft.com/t5/Power-Virtual-Agents-Ideas/Reconnect-the-conversation-with-user-...

Please, vote and make this answer as the solution to many users' votes.

---

Thanks!
Renato Romão
https://www.linkedin.com/in/renatoromao/


Did I answer your question? Mark my post as a solution!
Thanks!

Renato Romão,

Connect with me here 😉

Power Virtual Agents course (+3.250 students) : English | Português

Thanks @renatoromao . You have confirmed what I thought was not possible yet. Thank you.

 

Have already cast my vote for the idea.

renatoromao
Most Valuable Professional
Most Valuable Professional

You're welcome! @LindaP 

Please, Accept this answer as the solution.

 

---

Thanks!
Renato Romão
https://www.linkedin.com/in/renatoromao/


Did I answer your question? Mark my post as a solution!
Thanks!

Renato Romão,

Connect with me here 😉

Power Virtual Agents course (+3.250 students) : English | Português
RezaDorrani
Community Champion
Community Champion

Hi @LindaP and @renatoromao 

 

There is a ConversationHistory entity in CDS that stores information of the user interaction with the bot in json format.

Not sure about anonymous conversations but if user does authenticate I believe that token info is available and one could leverage flow to query the CDS entity to check the last conversation the bot had with the user.

 

@renatoromao thoughts?

 

--------------------------------------------------------------------------------
If this post helps answer your question, please click on “Accept as Solution” to help other members find it more quickly. If you thought this post was helpful, please give it a Thumbs Up.

Thanks,
Reza Dorrani, MVP
YouTube
Twitter

renatoromao
Most Valuable Professional
Most Valuable Professional

Great idea @RezaDorrani , but we have a limitation to restore the history to the user 😞

 

But if @LindaP  follow your idea, she can use the authentication to get the user token during the conversation and if the connection has been lost, she can create automation using Power Automate when the record is created on Common Data Service entity called ConversationTranscript, she can read the JSON inside the "Content" field and get the token and identify which user has this token and send the email to him.

It's complex, but works (I think) 🙂 

 

- Create Authentication inside your topic

- Create a workflow inside Power Automate with the trigger "When an item created" (something like that) inside Common Data Service, your bot environment, entity called "ConversationTranscript"

- Create Parse JSON action to get the user token inside the conversation


Did I answer your question? Mark my post as a solution!
Thanks!

Renato Romão,

Connect with me here 😉

Power Virtual Agents course (+3.250 students) : English | Português

@renatoromao 

 

No doubt complicated but should provide the required results.

 

Key here is user authentication because without that it will not be possible to read the users last conversation data.

Also, I beleive conversation history stores data upto a Month only, so the user has to have made their last interaction with the bot within that timespan.

 

--------------------------------------------------------------------------------
If this post helps answer your question, please click on “Accept as Solution” to help other members find it more quickly. If you thought this post was helpful, please give it a Thumbs Up.

Thanks,
Reza Dorrani, MVP
YouTube
Twitter

Thanks for the idea @RezaDorrani. This could work for the scenario where the user is authenticated to the bot.

 

The scenario that I am trying to resolve is for a non-authenticated user.

 

It would be helpful to have the ConversationId exposed during the chat session so the website could store it in the user's cookies. For example, when the user revisits the website then the bot could try and retrieve the conversation using the stored ConversationId via a Flow and CDS lookup (if within the retention period). Otherwise, start a new conversation if a ConversationId is not stored. I am no website expert, but it was just my idea of how it could potentially work.

renatoromao
Most Valuable Professional
Most Valuable Professional

Hi @LindaP ,

 

I created a workflow to solve your problem. (if you are using a Custom canvas)

Please, follow the steps below:

 

Power Automate steps

1. Download the template here: https://bit.ly/PVA-GetConversationTranscript

2. Open flow.microsoft.com

3. Open Solutions (left menu)

4. Import my solution in your environment

5. Open the solution and click on the workflow

6. Turn on the workflow

7. Edit the workflow

8. Find the action called "Compose - Filter days in the past", I inserted "-7" to search seven days in the past because if you are filtering more than 7, maybe your workflow will be loaded up to 2 minutes and Power Virtual Agents will be shown the error. If you want to search for conversations for more than 7 days, test before implementing this feature and remember to insert subtract value before your day like "-10" (ten days in the past).

9.  Find the action called "List records - Conversation Transcript entity" and select your credentials (is not need to change the environment or entity)

10. Done.

 

Custom Canvas

Important: This solution will be work if you are using inside Custom Canvas, like Custom website, Power Apps Portals, SharePoint, or something like that.

1. Add this code inside your custom canvas: https://powervirtualagents.microsoft.com/en-us/blog/change-your-power-virtual-agents-default-canvas-...

2. Change the fetch method to my code below (only fetch code)

 

New fetch code

fetch(theURL)
            .then(response => response.json())
            .then(conversationInfo => {
                window.WebChat.renderWebChat(
                    {
                        directLine: window.WebChat.createDirectLine({
                            token: conversationInfo.token,
                        }),
                        store: store,
                        styleOptions: styleOptions,
                        overrideLocalizedStrings: {
                            TEXT_INPUT_PLACEHOLDER: 'Type your message'
                        }
                    },
                    document.getElementById('webchat')
                );
                $("#webchat input").parent().parent().parent().append("<div id='conversationId'><span>"+conversationInfo.conversationId+"</span></div>")

            })
            .catch(err => console.error("An error occurred: " + err));

 

3. The idea is the user saves the current Conversation Id if he wants to restore this conversation in the future (like a code number). He can save in your notes and personal documents and in the future, if he wants to see the last conversation, he just sends this code.


conversationid-codesample.png

 

4. Insert this CSS code to improve the layout

 

div#conversationId {
    padding: 0 10px;
    color: #888787;
    font-size: 13px;
    text-align: center;
}

 

5. Done.

 

Power Virtual Agents steps

Important: This solution will be work if you are using inside Custom Canvas, like Custom website, Power Apps Portals, SharePoint, or something like that.

1. Open Greeting topic or your Starter topic

2. Create a question with two options
Question: "Do you want to restore a conversation?"
Options: Yes/No
3. If Yes, create a question with identity type "User's entire response" and change the name of variable like "ConversationId". The idea is the user saves the current Conversation Id if he wants to restore this conversation in the future (like a code number).
5. Create an action calling my workflow (Power Automate) using the ConversationId variable like the input parameter.
6. Create a show message and select the variable ConversationHistory (Power Automate output)

7. Done.

 

I hope this solution helps you to do your scenario.


Did I answer your question? Mark my post as a solution!
Thanks!

Renato Romão,

Connect with me here 😉

Power Virtual Agents course (+3.250 students) : English | Português

Hi! Do you have a still active link for this, please? 

Helpful resources

Announcements

Celebrating the May Super User of the Month: Laurens Martens

  @LaurensM  is an exceptional contributor to the Power Platform Community. Super Users like Laurens inspire others through their example, encouragement, and active participation. We are excited to celebrated Laurens as our Super User of the Month for May 2024.   Consistent Engagement:  He consistently engages with the community by answering forum questions, sharing insights, and providing solutions. Laurens dedication helps other users find answers and overcome challenges.   Community Expertise: As a Super User, Laurens plays a crucial role in maintaining a knowledge sharing environment. Always ensuring a positive experience for everyone.   Leadership: He shares valuable insights on community growth, engagement, and future trends. Their contributions help shape the Power Platform Community.   Congratulations, Laurens Martens, for your outstanding work! Keep inspiring others and making a difference in the community!   Keep up the fantastic work!        

Check out the Copilot Studio Cookbook today!

We are excited to announce our new Copilot Cookbook Gallery in the Copilot Studio Community. We can't wait for you to share your expertise and your experience!    Join us for an amazing opportunity where you'll be one of the first to contribute to the Copilot Cookbook—your ultimate guide to mastering Microsoft Copilot. Whether you're seeking inspiration or grappling with a challenge while crafting apps, you probably already know that Copilot Cookbook is your reliable assistant, offering a wealth of tips and tricks at your fingertips--and we want you to add your expertise. What can you "cook" up?   Click this link to get started: https://aka.ms/CS_Copilot_Cookbook_Gallery   Don't miss out on this exclusive opportunity to be one of the first in the Community to share your app creation journey with Copilot. We'll be announcing a Cookbook Challenge very soon and want to make sure you one of the first "cooks" in the kitchen.   😊Don't miss your moment--start submitting in the Copilot Cookbook Gallery today!     Thank you,  Engagement Team

Announcing Power Apps Copilot Cookbook Gallery

We are excited to share that the all-new Copilot Cookbook Gallery for Power Apps is now available in the Power Apps Community, full of tips and tricks on how to best use Microsoft Copilot as you develop and create in Power Apps. The new Copilot Cookbook is your go-to resource when you need inspiration--or when you're stuck--and aren't sure how to best partner with Copilot while creating apps.   Whether you're looking for the best prompts or just want to know about responsible AI use, visit Copilot Cookbook for regular updates you can rely on--while also serving up some of your greatest tips and tricks for the Community. Check Out the new Copilot Cookbook for Power Apps today: Copilot Cookbook - Power Platform Community.  We can't wait to see what you "cook" up!      

Welcome to the Copilot Studio Community!

You are now a part of a vibrant growing group of peers and industry experts who are here to network, share knowledge, and even have a little fun!   If you have not yet registered, please visit here to learn how to register!   Now that you are a member, you can enjoy the following resources:   The Microsoft Copilot Studio Community Forums If you are looking for support with any part of Microsoft Copilot Studio, our forums are the place to go. They are titled "Forums" and there you will find technical professionals with years of experience who are ready and eager to answer your questions. You now have the ability to post, reply and give "kudos" on the Copilot Studio Community forums! Make sure you conduct a quick search before creating a new post because your question may have already been asked and answered!   Microsoft Copilot Studio Ideas Do you have an idea to improve the Microsoft Copilot Studio experience, or a feature request for future product updates? Then the "Copilot Studio Ideas" section is where you can contribute your suggestions and vote for ideas posted by other Community members. We constantly look to the most voted Ideas when planning updates, so your suggestions and votes will always make a difference.   News & Announcements The Copilot Studio Community News & Announcements is your stop to get all the latest news around Community events and announcements. This is where we share with the Community what is going on and how to participate!   Copilot Studio Samples, Learning and Video Galleries We have galleries that can assist you with information on creating a bot in our Webinars and Video Gallery,  and the ability to share the bots you have created in our Bot Sharing Gallery.  Check out the awesome content being shared there today!   Again, we are excited to welcome you to the Microsoft Copilot Studio Community family! Whether you are brand new to the world of bot creation or you are a seasoned Copilot Studio veteran, our goal is to shape the Community to be your ‘go to’ for support, networking, education, inspiration and encouragement as we enjoy this adventure together!   Let us know in the Community Feedback if you have any questions or comments about your Community experience. To learn more about the Community and your account be sure to visit our Community Support Area boards to learn more!   We look forward to seeing you in the Copilot Studio Community!The Copilot Studio Community Team

Tuesday Tip | How to Report Spam in Our Community

It's time for another TUESDAY TIPS, your weekly connection with the most insightful tips and tricks that empower both newcomers and veterans in the Power Platform Community! Every Tuesday, we bring you a curated selection of the finest advice, distilled from the resources and tools in the Community. Whether you’re a seasoned member or just getting started, Tuesday Tips are the perfect compass guiding you across the dynamic landscape of the Power Platform Community.   As our community family expands each week, we revisit our essential tools, tips, and tricks to ensure you’re well-versed in the community’s pulse. Keep an eye on the News & Announcements for your weekly Tuesday Tips—you never know what you may learn!   Today's Tip: How to Report Spam in Our Community We strive to maintain a professional and helpful community, and part of that effort involves keeping our platform free of spam. If you encounter a post that you believe is spam, please follow these steps to report it: Locate the Post: Find the post in question within the community.Kebab Menu: Click on the "Kebab" menu | 3 Dots, on the top right of the post.Report Inappropriate Content: Select "Report Inappropriate Content" from the menu.Submit Report: Fill out any necessary details on the form and submit your report.   Our community team will review the report and take appropriate action to ensure our community remains a valuable resource for everyone.   Thank you for helping us keep the community clean and useful!

The Copilot Studio community is thrilled to share some exciting news!

We are embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools that our community advocates for.  We're proud to announce that the Copilot Studio community will pioneer this migration starting in June 2024. The move will mark the beginning of a new chapter, and we're eager for you to be a part of it. Following our lead, the rest of the Power Platform product sites will join us over the summer.   Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind, to connect, learn, and grow together.   Here's to new beginnings and endless possibilities!   If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport. To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages  

Users online (4,452)