There is no way around this except to create a Script Action. Plain UI rules can only do the simplest of “when this happens to that” type rules. As soon as you have complex conditions, timers, or more involved logic you must use a script action/condition.
However, the easiest and most comprehensive thing you can do is install the Open Reminder [3.3.0;3.4.0) rule template and instantiate and configure a rule as described there.
All you’d have to do is add a rule with your Say Action and the Open Door rule will handle the timers and all the other complex stuff.
If you want to code this yourself, I recommend getting started with Blockly. See the rules section of the Getting Started Tutorial and the Blockly reference docs for details.
No, npm is not shipped as part of the container. But you can install it. But your $OH_CONF folder should be in a volume outside the container anyway. So just run NPM from where ever your volume is.