Now I’m new to BTs myself and am still figuring them out. But it sounds like Tasks (in blueprint) are instanced.
And I’m using an Initializing Task to bind to input that the user gives to the character. Such as Move to, attack, stop etc.
Another thing you can do is to use a component that acts as a mediator between the BT and everything else. So the first thing the BT does is to set up a reference to the mediator and set it as a BB value. So now you can call the mediator from any BT node to inform about new data or events, say if the BT decides to attack a target and some system not in the BT needs to know about that.
So a task that binds to dispatchers to funnel information from your character/controller to the BT (though you could also use Set Blackboard values).
And a mediator component to funnel information from your BT to the character/controller.
For example, I use the BT to determine if it is in range & LOS of a target, but I want my attack component to handle the combat (it’s a pretty simple system), so BT can attack -> tell mediator to start attack -> Mediator dispatches Start Attack which the attack component listens to.
When the target dies, the BT is informed about that through the mediator.
Again, new to AI in general myself but it’s working just fine.
Though I don’t know how I would solve the situation you have with wanting to communicate the action to other characters. Using my method, the BT task would tell the mediator to perform the communication, and then the proper channel does that communication. But just what that channel is and what it does, I’m not sure. If it is like a party of characters, like I have, I’d have the mediator inform some party manager, which then communicates that to each member.