Handle EndOfConversation(EoC Activity) in Skills in Bot Composer
@dmvtech Can you please let me know the behaviour for EndOfConversation activity in Root and skill bots?
Let say if EoC Activity hits the root bot, we close the connection in the root bot, but the skill will be open and so instances will be running right? Wont that cause a problem?
Hi @Akhila9
Let say if EoC Activity hits the root bot, we close the connection in the root bot
Can you clarify on what you mean by this? Who is sending the EoC?
but the skill will be open and so instances will be running right?
I don't know what you mean by instances, can you clarify. The conversation may be 'abandoned' in the skill, but the only thing that would affect is a very small state store bloat.
EoC Activity is endOfConversation Activity. We are developing a audio bot, which is been integrated with third party service, so whenever the caller disconnect the call we get EoC Activity, but when the connection is in skill, this activity wont reach the skill bot. But as discussed earlier for events the control always goes through the root bot, though we have bypassed the EoC Activity in root bot, the control doesnt reach the skill bot, rather than that it will be treated as endOfConversation triggered to the root bot.
If that happens, I assume that the skill bot instances will be open as autoEndDialog is false and occupying the memory space increasing CPU load and which in turn can lead to 504 timeout issues. I am not really sure about the understanding but assumes it happens in this way, can you please guide me on it.
Our expected behaviour is that the EoC activity to be reached to skill bot, then we can end the dialog and send it to the root bot. From the current behaviour, I dont see any approach to do it, can you please suggest the best possible way to do it.
@dmvtech, Hi Dana, if we want to discuss it over an meeting, if you can share your email and prefered time, I can book a slot. I am in IST zone and so till 11.00PM IST works for me. Thanks in advance.
My case is a little different. Let's say I have a root dialog that launches another dialog. The last dialog sent the client an Adaptive Card waiting for the client to choose. Other than that choice, though, the client can asynchronously at any time send an EoC and shut everything down. I cannot capture this EndOfConversation in any way, even though the composer trace, seen in Debug from Visual Studio shows that something is received and sent to the various dialogs. First of all, I would like to understand the meaning of the trace generated by the Composer and which I interpret to mean that the EndOfConversation was turned over to the child dialogs. Then: Why can't I capture the EndOfConversation ?
These are the traces I read produced by the Composer:
Passy.Bot.Composer Information: 0 : 12: 'endOfConversation' ==> activityReceived ==> SubmitActionPrompt Passy.Bot.Composer Information: 0 : 3: 'endOfConversation' ==> activityReceived ==> GetAppointmentsListDialog Passy.Bot.Composer Information: 0 : 9: 'endOfConversation' ==> activityReceived ==> CheckinProcedureDialog Passy.Bot.Composer Information: 0 : 12: 'endOfConversation' ==> activityReceived ==> VirtualReceptionComposer
As this is not possible in Composer, switching this over to a feature request.
Describe the solution you'd like
When there is a Root bot calling a skill; when the Root bot receives a EndOfConversation activity, then that should be forwarded to the skill and the skill should also be able to handle that same activity in it's own EndOfConversation activity handler.
Additional context
Sample activity being sent to the Root bot:
[Activity
Type = endOfConversation
Code = userCancelled
Text = "Testing"
]