You need to use an interface that allows interactions between the character blueprint and the key as well as the character blueprint and the door actor blueprint. This is how I would handle it because it will greatly simplify your whole process and you can also use this same interaction handler for communicating interactions across any blueprints that implement the interface. You can also do some additional checking to ensure you have exactly the right "targets/object/actor whatever it is you are attempting to interact with.
I am going to link to the video I watched that to me best explained the process. If you don’t understand this one then I suggest searching for “blueprint interface” on youtube as there are many examples found with that search term. Once you understand this you can really do a lot more with a lot less time and headaches involved.
For the text to be displayed I would almost suggest using a very basic text widget that is static in position on the screen. If you want to do floating text that appears over the character it gets much much more involved. By adding a simple pop up text widget you can just pop the text on screen and fade it out after an arbitrary amount of time that suits your needs. I think this would be the easiest approach for anyone new to this. Once you get a little more experience you can expand on the idea and try out floating overhead text.
Just remember that text is easiest to read as a player when it has an kind of outline on it no matter if the outline is like one pixel thick. This will make the text stand right out no matter what is going on behind it 