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

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 (+2.760 students) : English | Português

View solution in original post

9 REPLIES 9
renatoromao
Super User
Super User

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 (+2.760 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.

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 (+2.760 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

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 (+2.760 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.

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 (+2.760 students) : English | Português

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

Helpful resources

Announcements

Power Platform Connections - Episode 7 | March 30, 2023

Episode Seven of Power Platform Connections sees David Warner and Hugo Bernier talk to Microsoft MVP Dian Taylor, alongside the latest news, product reviews, and community blogs.     Use the hashtag #PowerPlatformConnects on social media for a chance to have your work featured on the show!      Show schedule in this episode:    0:00 Cold Open 00:30 Show Intro 01:02 Dian Taylor Interview 18:03 Blogs & Articles 26:55 Outro & Bloopers    Check out the blogs and articles featured in this week’s episode:    https://francomusso.com/create-a-drag-and-drop-experience-to-upload-case-attachments @crmbizcoach https://www.youtube.com/watch?v=G3522H834Ro​/  @pranavkhuranauk https://github.com/pnp/powerapps-designtoolkit/tree/main/materialdesign%20components @MMe2K​ https://2die4it.com/2023/03/27/populate-a-dynamic-microsoft-word-template-in-power-automate-flow/ @StefanS365 https://d365goddess.com/viva-sales-administrator-settings/ @D365Goddess https://marketplace.visualstudio.com/items?itemName=megel.mme2k-powerapps-helper#Visualize_Dataverse... @MMe2K    Action requested:  Feel free to provide feedback on how we can make our community more inclusive and diverse.    This episode premiered live on our YouTube at 12pm PST on Thursday 30th March 2023.    Video series available at Power Platform Community YouTube channel.    Upcoming events:  Business Applications Launch – April 4th – Free and Virtual! M365 Conference - May 1-5th - Las Vegas Power Apps Developers Summit – May 19-20th - London European Power Platform conference – Jun. 20-22nd - Dublin Microsoft Power Platform Conference – Oct. 3-5th - Las Vegas    Join our Communities:  Power Apps Community Power Automate Community Power Virtual Agents Community Power Pages Community    If you’d like to hear from a specific community member in an upcoming recording and/or have specific questions for the Power Platform Connections team, please let us know. We will do our best to address all your requests or questions.   

Announcing | Super Users - 2023 Season 1

Super Users – 2023 Season 1    We are excited to kick off the Power Users Super User Program for 2023 - Season 1.  The Power Platform Super Users have done an amazing job in keeping the Power Platform communities helpful, accurate and responsive. We would like to send these amazing folks a big THANK YOU for their efforts.      Super User Season 1 | Contributions July 1, 2022 – December 31, 2022  Super User Season 2 | Contributions January 1, 2023 – June 30, 2023    Curious what a Super User is? Super Users are especially active community members who are eager to help others with their community questions. There are 2 Super User seasons in a year, and we monitor the community for new potential Super Users at the end of each season. Super Users are recognized in the community with both a rank name and icon next to their username, and a seasonal badge on their profile.    Power Apps  Power Automate  Power Virtual Agents  Power Pages  Pstork1*  Pstork1*  Pstork1*  OliverRodrigues  BCBuizer  Expiscornovus*  Expiscornovus*  ragavanrajan  AhmedSalih  grantjenkins  renatoromao    Mira_Ghaly*  Mira_Ghaly*      Sundeep_Malik*  Sundeep_Malik*      SudeepGhatakNZ*  SudeepGhatakNZ*      StretchFredrik*  StretchFredrik*      365-Assist*  365-Assist*      cha_cha  ekarim2020      timl  Hardesh15      iAm_ManCat  annajhaveri      SebS  Rhiassuring      LaurensM  abm      TheRobRush  Ankesh_49      WiZey  lbendlin      Nogueira1306  Kaif_Siddique      victorcp  RobElliott      dpoggemann  srduval      SBax  CFernandes      Roverandom  schwibach      Akser  CraigStewart      PowerRanger  MichaelAnnis      subsguts  David_MA      EricRegnier  edgonzales      zmansuri  GeorgiosG      ChrisPiasecki  ryule      AmDev  fchopo      phipps0218  tom_riha      theapurva  takolota     Akash17  momlo     BCLS776  Shuvam-rpa     rampprakash  ScottShearer     Rusk  ChristianAbata     cchannon  Koen5     a33ik  Heartholme     AaronKnox  okeks      Matren   David_MA     Alex_10        Jeff_Thorpe        poweractivate        Ramole        DianaBirkelbach        DavidZoon        AJ_Z        PriyankaGeethik        BrianS        StalinPonnusamy        HamidBee        CNT        Anonymous_Hippo        Anchov        KeithAtherton        alaabitar        Tolu_Victor        KRider        sperry1625        IPC_ahaas      zuurg    rubin_boer   cwebb365   Dorrinda   G1124   Gabibalaban   Manan-Malhotra   jcfDaniel   WarrenBelz   Waegemma   drrickryp   GuidoPreite      If an * is at the end of a user's name this means they are a Multi Super User, in more than one community. Please note this is not the final list, as we are pending a few acceptances.  Once they are received the list will be updated. 

Check out the new Power Platform Communities Front Door Experience!

We are excited to share the ‘Power Platform Communities Front Door’ experience with you!   Front Door brings together content from all the Power Platform communities into a single place for our community members, customers and low-code, no-code enthusiasts to learn, share and engage with peers, advocates, community program managers and our product team members. There are a host of features and new capabilities now available on Power Platform Communities Front Door to make content more discoverable for all power product community users which includes ForumsUser GroupsEventsCommunity highlightsCommunity by numbersLinks to all communities Users can see top discussions from across all the Power Platform communities and easily navigate to the latest or trending posts for further interaction. Additionally, they can filter to individual products as well.         Users can filter and browse the user group events from all power platform products with feature parity to existing community user group experience and added filtering capabilities.     Users can now explore user groups on the Power Platform Front Door landing page with capability to view all products in Power Platform.    Explore Power Platform Communities Front Door today. Visit Power Platform Community Front door to easily navigate to the different product communities, view a roll up of user groups, events and forums.

PVA Conversation Boosters Release

Today, we are excited to unveil new features within Power Platform that incorporate next-generation AI, in including conversation boosters with Power Virtual Agents and AI Builder introducing a create text with GPT model. These features bring both a new way for developers to solve business problems and a new way for end-users to leverage AI in the flow of their work to be more productive. This is a glimpse of what’s to come as we continue to ramp up our investment in AI across Power Platform.   We recognize the significance of both AI and low code for organizations and the benefits these technologies in union can have for all developers: a more intuitive, iterative experience for citizen developers and accelerated development for professional developers.      We announced AI Builder 4 years ago as the first AI capability in Power Platform, followed by Power Apps Ideas 18 months ago, which was the first infusion of generative AI in a commercially- available product.  And we have continued to invest, with the addition of express design in Power Apps, and description to flow in Power Automate late last year.      Today, we’re taking another big step forward in this journey with the launch of next-generation AI features for Power Virtual Agents and AI Builder, enabled by Azure Open AI service.     New! – Conversation booster in Microsoft Power Virtual Agents New! – Create text with GPT model in AI Builder AI Builder create text with GPT model  Read the full Product blog here: https://aka.ms/PP-GPT     **Tips & tricks for using the Power Virtual Agents Boost Conversational Coverage Preview:  Solved: Tips & tricks for using the Power Virtual Agents B... - Power Platform Community (microsoft.com)  

Microsoft Power Platform Conference | Registration Open | Oct. 3-5 2023

We are so excited to see you for the Microsoft Power Platform Conference in Las Vegas October 3-5 2023! But first, let's take a look back at some fun moments and the best community in tech from MPPC 2022 in Orlando, Florida.   Featuring guest speakers such as Charles Lamanna, Heather Cook, Julie Strauss, Nirav Shah, Ryan Cunningham, Sangya Singh, Stephen Siciliano, Hugo Bernier and many more.   Register today: https://www.powerplatformconf.com/   

Announcing Copilot in Power Virtual Agents!

Following our recent release of Conversation Boosters for PVA, today we’re excited to go further and announce Copilot for Power Virtual Agents!     With Copilot, using the power of Azure Open AI, you simply describe what you would like your bot to, using natural language, and Copilot will build an entire PVA topic - ready to use in seconds!     What can the new Copilot in Power Virtual Agents do?    CREATE entire topic from scratch with a simple description.  REFINE content in an existing topic, such as asking for additional questions to be added or updating existing nodes (example: providing message variations).   SUMMARIZE information collected from a user with adaptive cards.  ITERATE over just part of a dialog with specific node selection.    Try Copilot in Power Virtual Agents now: https://aka.ms/tryPVA     Learn more in the full blog post: https://aka.ms/GPT-PP  

Top Solution Authors
Top Kudoed Authors
Users online (6,464)