当前位置: 首页 > 知识库问答 >
问题:

通过Google上的操作从webhook请求获取连接池

傅峰
2023-03-14

我正试图从触发的webhook意图中使用相同的数据库连接池。我用的是基本的样板(https://github.com/actions-on-google/dialogflow-webhook-boilerplate-java).

每个触发的意图都会向我返回ActionRequest,但它不包含ServletContext。那么,如何使用google java库上的动作获取正常的请求上下文呢?(https://github.com/actions-on-google/actions-on-google-java/blob/master/src/main/kotlin/com/google/actions/api/ActionRequest.kt)

我曾试图找到其他方法来获取池,但我对Java的经验有限。

// this is what i would like to achieve but ActionRequest is limited
@ForIntent("DB test")
public ActionResponse DbTest(ActionRequest request)
{
    ...
    DataSource pool = (DataSource) request.getServletContext().getAttribute("my-pool");
    try (Connection conn = pool.getConnection()) 
    { 
        // do database stuff
    }
    ...
}

共有1个答案

唐泳
2023-03-14

我没有看到ActionRequest提供ServletContext,因为它独立于处理请求的内容。

不太优雅,但您可以在MyActionsApp中创建一个方法(因为您使用的是基本样板)来设置来自您的请求(HttpServletRequest)的ServletContext在您调用handleRequest之前。

创建要传递的构造函数,这也是一个选项。

 类似资料:
  • 如何获取json请求正文?

  • 下面是在帐户的所有文件上配置监视的java代码 在实际的google驱动器中进行更改时,我会在上面配置的webhook url中得到通知。 但问题是,对于每一个更改,我都得到了与监视调用响应相同的以下头部的相同值&我没有得到与更改或请求正文对应的任何适当的请求头部 有人能告诉我如何正确获取通知数据吗?我做错什么了吗? 下面是另一个问题所述的相同问题,该问题没有正确的答案,但收到谷歌驱动器推送通知

  • 问题内容: 我已经尝试过将多种XMPP库用于Node.js,但是在连接到Google Talk的XMPP服务器时遇到了麻烦。我想联系并阅读朋友的状态,但我什至无法走出去! 我有一个通过Google Apps for Domains托管的个人域,例如。 我编写了以下代码-它使用了node-xmpp库(https://github.com/astro/node-xmpp): 建立了连接,但是身份验证失

  • 我正在使用Apache HTTPComponents(版本4.5.2),并试图通过代理服务器请求HTTPS页面。 编辑: 我的主要问题是,我需要知道如何区分代理服务器的故障和请求的URI的故障(对于HTTP和HTTPS)。我有很多代理,它们不是百分之百可靠的,所以在代理失败的情况下,我需要用不同的代理服务器重试请求。 例如(对于HTTPS),在这两种情况下都可以返回NoHttpResponseEx

  • 问题内容: 我通过JavaScript收到了带有AJAX请求的JSON响应。 这是响应: 我的目标是获取内容: json变量是我的情况下的数据。因此,我尝试了: 但是我得到一个空字符串。 关于如何访问字符串的任何想法? 先感谢您。 问题答案: 您是否首先解析json? 比阅读

  • 问题内容: 这是我希望做的: 我想将ajax请求发送到文件(最好使用jQuery),并且一旦文件被加载,请确定所请求文件的大小。 经过一番谷歌搜索,很显然,我什至对一个正确的问题都不知道要提出这个问题。任何帮助将不胜感激。 问题答案: 您可以发出HTTP HEAD请求,并通过读取Content- Length HTTP标头获得近似的文件大小。 这种请求用于获取有关该请求隐含的URL的元信息,而无需