我试图从触发的webhook意图中使用相同的连接池到我的数据库中。我正在使用基本的样板(https://github.com/actions-oncon-google/dialogflow-webhook-boilerplate-java(。
每个触发意图的确会返回我的 ActionRequest
,但是,它不包含 ServletContext
。那么,如何使用actions-on-google-java
库获得正常请求上下文?(https://github.com/actions-an-google/actions-on-google-java/blob/master/master/src/main/kotlin/kotlin/com/google/com/google/actions/api/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
中创建一种方法(因为您使用的是基本的样板(在调用handleRequest
。
HttpServletRequest
(设置ServletContext
。创建一个也是一个选项的构造函数。