java - 使用 Actions On Google 从 Webhook 请求获取连接池

标签 java dialogflow-es actions-on-google google-home dialogflow-es-fulfillment

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

每个触发的意图都会向我返回 ActionRequest,但是,它不包含 ServletContext。那么,如何使用 actions-on-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
    }
    ...
}

最佳答案

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

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

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

关于java - 使用 Actions On Google 从 Webhook 请求获取连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56899663/

相关文章:

java - 为什么在我的程序中尝试加载 fxml 文件时会出现运行时异常

java - 增加某个app的java堆空间

java - XSL 转换 - 通过字符串内容选择节点 ID

dialogflow-es - 我们可以在谷歌助手中使用对话框实现网络钩子(Hook)播放多个音频文件吗

javascript - 谷歌助手的事实应用程序

java - 父实体作为单向一对一关系中的所有者 Hibernate

node.js - 未处理的拒绝: Headers cant be set after they are sent

javascript - 如何实现两组代码?

sdk - 上传谷歌操作时,gactions CLI 在 Windows 上崩溃

Javascript firebase firestore 函数未执行