I have an answer for all y'all and I hope you will mark it as helping you, and that this helps others.
The answer is - they can be connected, even though Microsoft built the surveys to be anonymous.
The "Customer Voice Survey Response" is what you want to connect. However there's no information on this record that will help you. Go to its parent record, though, "Customer Survey Invite" and you will find what you need in a field called "Other Properties". Now, it's in a JSOn format, so you're going to need a PowerAutomate to parse this out for you.
Now, noting that conversations are activities and customer survey responses and invites are also activities. So, you can't just set the customer survey response as related to the Conversation - that won't work. So you must have the Conversation itself be Regarding something, like a Contact, or a Case, for the following to work. Because you are goign to maek the Customer Voice Survey Response related to (regarding) the same object that the Conversation is regarding.
The steps to the PowerAutomate are this:
Trigger: When a "Customer Voice Survey Response" is created and Survey Invite contains data and Regarding does not contain data
Then we know that there is the precious invite record we need and we know it isn't a case survey that it's already Regarding a case.
Step 1: Get the Survey Invite Record using hte surveyinviteid_value from the Customer Voice Survey Response.
Step 2: Use "Parse JSON" on the field "Other Properties". Here's the schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"regardingidkey": {
"type": "string"
},
"extInviteSourceId": {
"type": "string"
}
},
"required": [
"regardingidkey",
"extInviteSourceId"
]
}
}
Step 3 : Initialize a variable called "ConversationID"
Step 4: Set the Variable to the "extInviteSourceID" from the Parse JSON.
Step 5: Get the Conversation now with that GUID.
Step 5a: Optionally get the Agent "Full name" from the Users table based on the Conversation. You don't have to do this but I used it for something later.
- I did a null check here on Regarding(Type) to ensure it had a value so that I could terminate if it didn't, since the next step will fail if it's null.
Step 6: Do a "Switch" statement on the Regarding (Type)
It's a conversation, so you know it's going to be a Case or a Contact. Then, the following step is updating the Customer Voice Survey Response record (the original one that triggered the PA). Depending on whether it's a case or a contact, you'll be updating the Regarding (Case) or Regarding (Contact) field. I also updated the Subject field (which was blank) with a title - "Post-Chat Survey with Agent AgentFullName".
Sorry I couldn't export and attach the flow, but if you are familiar with PowerAutomate, then you should be able to follow the steps above to re-create what I have done.