Skip to main content

Notifications

Copilot Studio - Publish & Channel Management
Answered

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

(1) ShareShare
ReportReport
Posted on by 10

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-reconnect-to-conversation?view=azure-bot-service-4.0

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=azure-bot-service-4.0#conversation-id

 

  • ZacharyEMR Profile Picture
    ZacharyEMR 8 on at
    Re: Is it possible to reconnect the user to a conversation with a Power Virtual Agent and retain the context and previous chat history?

    Do you still have the template link? The one on this post is dead.

  • James20 Profile Picture
    James20 2 on at
    Re: Is it possible to reconnect the user to a conversation with a Power Virtual Agent and retain the context and previous chat history?

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

  • Verified answer
    renatoromao Profile Picture
    renatoromao 6,819 on at
    Re: Is it possible to reconnect the user to a conversation with a Power Virtual Agent and retain the context and previous chat history?

    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-bot-icon-and-name/

    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.

  • LindaP Profile Picture
    LindaP 10 on at
    Re: Is it possible to reconnect the user to a conversation with a Power Virtual Agent and retain the context and previous chat history?

    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.

  • RezaDorrani Profile Picture
    RezaDorrani 12,141 on at
    Re: Is it possible to reconnect the user to a conversation with a Power Virtual Agent and retain the context and previous chat history?

    @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

  • renatoromao Profile Picture
    renatoromao 6,819 on at
    Re: Is it possible to reconnect the user to a conversation with a Power Virtual Agent and retain the context and previous chat history?

    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

  • RezaDorrani Profile Picture
    RezaDorrani 12,141 on at
    Re: Is it possible to reconnect the user to a conversation with a Power Virtual Agent and retain the context and previous chat history?

    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 Profile Picture
    renatoromao 6,819 on at
    Re: Is it possible to reconnect the user to a conversation with a Power Virtual Agent and retain the context and previous chat history?

    You're welcome! @LindaP 

    Please, Accept this answer as the solution.

     

    ---

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

  • LindaP Profile Picture
    LindaP 10 on at
    Re: Is it possible to reconnect the user to a conversation with a Power Virtual Agent and retain the context and previous chat history?

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

     

    Have already cast my vote for the idea.

  • renatoromao Profile Picture
    renatoromao 6,819 on at
    Re: Is it possible to reconnect the user to a conversation with a Power Virtual Agent and retain the context and previous chat history?

    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-Power-Virtual-Agents/idi-p/564478

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

    ---

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

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Microsoft Kickstarter Events…

Register for Microsoft Kickstarter Events…

Announcing Our 2025 Season 1 Super Users!

A new season of Super Users has arrived, and we are so grateful for the daily…

Announcing Forum Attachment Improvements!

We're excited to announce that attachments for replies in forums and improved…

Leaderboard

#1
WarrenBelz Profile Picture

WarrenBelz 145,343

#2
RandyHayes Profile Picture

RandyHayes 76,287

#3
Pstork1 Profile Picture

Pstork1 64,703

Leaderboard

Featured topics