I'm still not very experienced, and also a bit delirious right now, but hopefully this will help....
The way I chose to go about this, was to create a region around the NPCs. That would allow me to call upon specific dialog, based on which region the player was in.
I ran into two problems, initially. When I pressed the button to start dialog, it would work fine. When I pressed it again to continue through the dialog tree, the dialog would start over. Duh. "If player is in region and presses button, start dialog." So, I created a boolean to disable the behavior after the dialog started (false), and reenable after dialog ended (true).
The second problem I had was that my player could still move around while dialog was open. I didn't want this. So, I used the same boolean that disable "start dialog" to disable movement. After the conversation was over, the boolean flipped back to true, and I could move again and restart the conversation, if wanted.
I was just playing around, and have since removed dialog from that project, but I think that's how I did it.