Referring to the solution posted here (DialogFlow V2 Webhook - Expects Speech responses Immediately and not after async requests)
What I want to achieve is that the web
The Promise logic looks sound, but this line doesn't make sense:
let params = request.body.result.parameters;
There is no request object that is in scope.
You can get the parameters for the request from agent.parameters.
You didn't state what environment you were running in, but given your code, and the agent.parameters change I outlined above, I was able to duplicate your problem using Firebase Cloud Functions with node.js 6.14.
I was able to get it to work by using the request-promise-native package instead of request-promise. As the name suggests, this uses native Promises instead of the Bluebird Promise package, but otherwise the calls you're making are identical.