In this Tutorial we will create a NPC and if the Player interacts with it, he will open the Crafter.
As Crafter we will take the Crafter from this Tutorial. Of Course you can take your own one.
Create Interactable Actor
You have two Options:
Make a Child of SP8_InteractableActor_Crafter.
Create a new Blueprint without a Template.
I will explain both!
Make a Child of SP8_InteractableActor_Crafter
1. Create a new Blueprint and select as Class SP8_InteractableActor_Crafter.

Do not forget to set the Interaction Profile inside the Blueprint SP8_InteractableActor like descriped inside this Tutorial, if you haven’t done it yet!
2. Create a new GameplayTag and call it Interaction.Types.Crafter.
3. Open your new Blueprint and go to the Class Defaults and set your Interactable Actor Type to your new Gameplay Tag.

Create a new Blueprint without a Template
1. Follow this Tutorial.
2. Add the Interface SP8_BPI_Interaction_Crafter like you added the SP8_BPI_Interaction.
3. Create a new GameplayTag and call it Interaction.Types.Crafter.
4. Edit the Interface Function SP8_GetCrafterDT. Create a Variable [Data Table] and return it inside the Function like following Image:

Add the Actor to your Level
1. Simply drag and drop your Blueprint into your Level.
2. Click inside the Outliner of the Level on your Blueprint and inside the Details Panel add to the Variable Crafter your Crafter Data Table.

Setup the Player
1. Without PlayerTemplate:
Add the Interface SP8_BPI_CanUseCrafter to your Player BP (Class Settings).
Open the new Interface Function SP8_CanUseCrafter and do following:
(1) Call GetClosestActorOfType on the Interaction Component.
As Input set the Gameplay Tag Interaction.Type.Crafter
(2) Loop trough all Actors.
(3) Call the Interface Function SP8_GetCrafterDT on the Actor.
(4) Check if the Data Table was found.
(5) If yes, check if the Data Table is the same as the Input of the Function.
(6) If yes, create a local Variable and set it to true and Break the Loop.
(7) Return the local Variable.

Of course you can customize this Function. We are only checking here, if the Player is close enough to the Crafter to craft Items.
You could put your own logic in front of the Function getClosestActorOfType.
2. With PlayerTemplate:
Overwrite the Function of the PlayerTemplate SP8_Overwrite_CanUseCrafter and set the returning Boolean to true.

Of course you can put some logic into this Function, to deny Players to use the Crafter.
3. Without PlayerTemplate:
You need to listen to the InteractedWithActor Dispatcher of the Interaction Component.
Inside there you need to do following:
First of all check if the Interaction Type is Interaction.Types.Crafter.
If yes, you need to call SP8_GetCrafterDT on the Actor. Check if it was found.
If yes, call openCrafter on your Crafter Widget, where you can display everything.

4. With PlayerTemplate:
Go inside your Player BP to Class Defaults and set the Variable Interaction Type Shop to the Gameplay Tag Interaction.Types.Shop.

5. With PlayerTemplate:
Inside your Crafter Widget, you need to listen to the Event OpenCrafter (Player BP) and call your Function openCrafter.
This should be called, when the Crafter Widget is initialized.

6. Listen to an Key Press, which you want to interact with this Actor.
Call InteractWithClosestActor on the Interaction Component and do following:
Interaction Type: Add Interaction.Types.Crafter
RunOnServer: Set to false, because it will only open the Crafter.

If you move now near your Crafter Actor with your Player BP and you press (in this example) on the Key R, you will open your Crafter.
Of course only if it is closer then a other Interactable Actor with one of the Types you put into this Function.