I was confused about the difference between the “End All Topics” node and the “End Conversation” node in Copilot Studio, so I made an inquiry. Here’s a note on what I found.
To summarize the inquiry result first, the difference is that when you end a conversation with “End Conversation,” channel-specific actions are executed.
*Note: Some channels may not have specific actions defined.
Topics
In Copilot Studio, conversations are primarily managed by “Topics.”

Each topic has a “Trigger,” and when a user’s message matches a trigger, that topic is activated and the conversation with the Copilot begins.
*Note: It’s also possible to create topics without triggers (for redirection purposes only)

Ending Topics
There are two nodes to end a “Topic,” which is the unit of conversation:
- End current topic
- End all topics

Node “End Current Topic”
The difference between these two is easy to understand. For example, when a “calling topic” calls a “called topic” like this:

When you use “End Current Topic” in the called topic:

After the called topic ends, the remainder of the calling topic (sending the “Parent Topic Ended” message) will be executed.

Node “End All Topics”
In contrast, when you use “End All Topics” in the called topic:

After the called topic ends, the remainder of the calling topic is not executed, and the conversation ends.

Up to this point, it’s easy to understand.
Node “End Conversation”
There is another node related to ending topics (or rather conversations) called the “End Conversation” node.

Similar to the “End All Topics” node, when this is executed in a called topic:

The remainder of the calling topic is not executed, and the conversation ends.

Difference Between “End All Topics” and “End Conversation” Nodes
The difference in behavior between the “End All Topics” and “End Conversation” nodes is completely indistinguishable when you’re just testing in Copilot Studio.
*Officially, it’s written as follows: add the “End Conversation” node before the “End All Topics” node, but
To let the user know that the conversation is over, add an End Conversation node before the End all topics node.
Excerpt from official documentation
Once “End Conversation” is called, the topic ends immediately, so the “End All Topics” node that follows will never be called.

So, I inquired with Microsoft about the difference between these two nodes, and (at the time of inquiry) they explained that
when a conversation is ended with “End Conversation,” “channel-specific actions” are executed. *Apparently, there are no other differences in behavior besides these channel-specific actions.

These “channel-specific actions” refer to behaviors unique to each channel, such as “ending the call” in the case of “Telephony (voice support)”.
Incidentally, Teams doesn’t have any specific actions, so it seems you can use either “End All Topics” or “End Conversation” with no difference.
*Unfortunately, there’s no reference document that compiles these “channel-specific actions,” so when deploying a Copilot to a new channel and using the “End Conversation” node, it appears necessary to thoroughly test its behavior.
Bonus: “End Conversation” in System Topics
There is also an “End Conversation” in system topics. At first, I assumed that this system topic would automatically activate when calling the “End Conversation” node.

I asked about this as well, and apparently, this topic is never automatically called. If you want to use this system topic, you need to explicitly call it (redirect to it). *Looking inside, you can see that “End Conversation” is used.

Related Articles
Official
コメント