拦截firebase功能响应(中间件)

拦截firebase功能响应(中间件),firebase,google-cloud-functions,dialogflow-es,Firebase,Google Cloud Functions,Dialogflow Es,对于我的Google Assistant/Dialogflow项目,我试图截取firebase functions端点发送回Dialogflow的每个响应。我可以很容易地截获请求,但是响应是在几个函数中构建的(每个意图一个函数),我不想在每个函数中都包含一个拦截器 是否有可能有一个中间件,或者在发送响应时是否提供了一个回调,类似于每个响应的全局拦截器 我在文档中发现了以下内容: 然而,我不确定这将走向何方。请注意,我没有使用自定义的express设置,但我直接在firebase上使用本机实现。云

对于我的Google Assistant/Dialogflow项目,我试图截取firebase functions端点发送回Dialogflow的每个响应。我可以很容易地截获请求,但是响应是在几个函数中构建的(每个意图一个函数),我不想在每个函数中都包含一个拦截器

是否有可能有一个中间件,或者在发送响应时是否提供了一个回调,类似于每个响应的全局拦截器

我在文档中发现了以下内容:


然而,我不确定这将走向何方。请注意,我没有使用自定义的express设置,但我直接在firebase上使用本机实现。

云功能不会为HTTP请求或响应公开任何类型的中间件或拦截器。你将不得不自己构建一些东西,可能是使用自己构建的Express应用程序。你可以在云上运行一个Express应用程序。

我想要一个类似的东西来拦截所有来回的对话,以便记录日志。最后我写了一个函数,用来发送对话。例如:

const intercept = (conv, sentence) => {
  //My Interceptor code
  conv.ask(sentence)
}
现在,无论何时我想要发送响应,我都会使用:

intercept(conv, "Speak this")

serialize()方法是在返回响应之前对对话调用的,因此您可以做的是扩展对话对象(基于您正在使用的库)并覆盖serialize方法以执行您需要执行的任何操作。不要忘记调用原始serialize方法并在新方法中返回值

由于您使用Firebase的Dialog Flow来完成任务,我希望您也在google上使用
操作


serialize()
是一个调用以生成响应的函数。您可以重写此函数并截获请求和响应。请尝试此代码,稍后谢谢我。啊,太糟糕了,没有钩子之类的东西,我可以在响应发出之前拦截它,而不用构建自定义的东西。