Part Two: An Example Interaction Event
In this example, when the player clicks on a chest, the character will walk to the chest, open it, access an ItemCollector (UI) to retrieve its contents, and then close the chest at the end.
  
The first thing we need to do is decide how we want to set up our object in the scene.  For something like a chest, we don't want the player to be able to walk through it.  So we have two options.  We can make it a static object and thus have it included in the NavMesh bake, or we can attach a NavMeshObstacle component to it so that it cuts into the NavMesh at run-time.  For a smaller object like a chest, I would probably use a NavMeshObstacle in case I ever decide that objects of that size could potentially be moved or destroyed.
In either case, the Agent Radius setting (defaults to 0.5) when you bake the NavMesh will create a non-walkable buffer around such objects, so you can't simply use the position of the object itself as your destination.
My solution is to add an empty GameObject called Interaction Point to the Prefab.  As a general rule, I always like to put any game models as children of another GameObject, so it's easy to swap models without breaking all of the prefab references.  I add this Interaction Point to any prefab that I want to attach an Interaction Event to.

In this image, you can see that I have offset the Interaction Point object at 0.5 units on the Z-axis (which is normally the front of an object).  This not only ensures that we don't get a destination point that is in the non-walkable area, it also ensures that any animations played on the character will always happen in the same location and at the same distance from the event object.
This chest model is from the 3DForge Fantasy Treasure Loot Kit and it has opening and closing animations provided for it.  I will hook up the animations in this event, but they are entirely optional.
If you don't have an appropriate model, you can always just use a cube primitive and skip the animation steps.
So you should have a WoodenChest_prefab with the Interaction Event component attached to it.  The actual 3D model will be parented to the prefab, as will the Interaction Point object.
Also, create an empy GameObject parented to the chest prefab and attach an ItemCollector component to it.  Set the Collection Type to Box.
Now that we've gotten that out of the way, let's create an event.
This is a GameEvent called useContainer, and the final result looks like this:

- Event Settings node
This event needs three actors added in the Event Settings step:
Actor 0 - Type: Player
Actor 1 - Type: Object; check Event Object  (this is the prefab that has the event component)
Actor 2 - Type: Object (this is the ItemCollector)
We will need to add the ItemCollector to the Interaction Event in the Inspector.
  

Also note that we have Max Click Distance set to -1.
 
- Add a Transform to Variable step.

Here's where we set our CurrentInteractionPoint global variable used in the MoveToInteractionPoint event.  We're getting the transform of the Interaction Point child of the event object (the chest prefab).
- Add a Call Move Event step.

Here's where we call our MoveToInteractionPoint event.  We want this to use the Player (Actor 0) as the moving object.
- Add a Wait step.
Set to 0.1s.  We're just ensuring that we've allowed enough time for the Move Event to get started up.
- Add a Check Game Variables step.
Connect the "Failed" terminal back to the Wait node in step 3.

This is the control condition for this event's loop.  We're watching for the MoveToInteractionComplete global variable to be set by the Move Event.  This doesn't tell us anything about whether or not the navigation was cancelled or if the destination was reached; all that we care about at this stage is that MoveToInteractionPoint is finished.
- Add a Check Game Variables step.
Connect the "Success" terminal of the Check Game Variables node in step 4 here.

Now that we know that the MoveToInteractionPoint event has finished, we will check to see if we should continue with this interaction event or if we should simply exit gracefully.  Of course we know that this is determined by whether or not the navigation was cancelled in MoveToInteractionPoint, but this event only needs to know whether or not it should proceed or exit.
- Add a Block Move AI step.

While we do want NPCs and party members to continue moving while the Player is navigating to the event object, we want to stop them from moving once the Player starts the interaction.  This helps stop party members from getting stuck in walking animations while the Player and chest animate.
- (Optional) Add a Combatant Animation step.
Here we start playing some sort of "use item" animation that we have set up on the Player combatant.
We won't set a wait in this step, as we want to start animating the lid of the chest opening before the Player stops animating.  Depending on the timing of your animations, you may need to add a Wait step between this and the next step.

- (Optional) Add a Call Function step.

Instead of calling a custom component, you could add a step to play a Legacy animation on the chest, but this requires you to specify the name of the child object (the mesh) and the names of the animations.
To make this event usable on any type of container (that can be opened or closed), we will add this component to our event object prefab:
using UnityEngine;
  
public class Container : MonoBehaviour
{
    public AnimationClip openAnimation;
    public AnimationClip closeAnimation;
    
private void Start()
{
    _animation = GetComponentInChildren<Animation>();
}        
public void Open()
{
    if (_isOpen)
        return;
    _animation.Stop();
    _animation.Play(openAnimation.name);
    _isOpen = true;
}
public void Close()
{
    if (!_isOpen)
        return;
    _animation.Stop();
    _animation.Play(closeAnimation.name);
    _isOpen = false;
}
private Animation _animation;
private bool _isOpen;
}
When attached to the object prefab, the inspector allows us to set the appropriate open and close animations without having to hard-code the animation names in the event:

Note that this component goes on the parent prefab object and not the mesh that contains the Animation component.  Using GetComponentInChildren() allows us to not have to hard-code the name of the child object in the event.
- Add a Wait event.
I set it to 1.33s because that's the length of the "Use" animation clip.  The timing of the character animation and the chest animation are close enough for me, so I'm not getting too fiddly with the timing.
- Create a Start Item Collector event.

I have the ItemCollector component on an empty GameObject parented to the main object prefab.
- (Optional) Add a Call Function step.

This is the same as step 8, except now we're calling the Close() method on the Container component.
- Add a Block Move AI step.
Now we un-block the Move AI that we blocked back in step 6.
- Add a Change Game Variables step.
We'll finish off this event by resetting all of the global variables that we've used:

We are removing the CurrentInteractionPoint (Vector3) because we don't want to set it to {0,0,0} as that is potentially a valid coordinate in the scene.
We'll set ContinueInteractionEvent to false to reset it before the next Interaction Event is run.  We probably don't actually need to do this, as it should be set properly before it is ever checked, but we'll be on the safe side.
Connect the "Failed" terminal of the Check Game Variables node in step 4 here as well.  If the player clicks on the chest and then clicks somewhere else on the NavMesh while the character is still moving towards the chest, then the UseContainer even will simply clean up its variables and exit without doing anything with the event object.
In my node diagram up the at top, you may notice a Show Dialogue step that displays a "Navigation Cancelled" message.  I had it set to the "Top Info" bar with auto-close turned on.  I wouldn't keep this in an actual game, but it was useful for testing purposes.
And that's it!  We can use this event as a guide for building any other interactions where we want the character to walk to the clicked object before starting the interaction.