Best way to make an interactable NPC?

So what’s the best way to make an NPC on the InitPostEntity hook that will open a usermessage if a player presses their use key on it. I know I could go through ply:KeyPressed and check to see if he’s looking at the npc and blah blah blah but there’s gotta be a more efficient way. Any ideas?