You can use an ActorComponent, from there you will have all it function (start , end dialogue etc)
Then just add that actor component in your npc bp or non npc bp.
From your main character bp, you can call that actor component with an interface and make use of an enum like this:
at the end it mostly the same using a parent-child method or actor component, we just reusing the same function.
