我正在使用dialogflow v1和spring boot java作为webhook,使用:http://mvnrepository.org/artifact/ai.api/libai/1.6.12
现在我尝试使用以下命令升级到dialogflow v2:http://mvnrepository.org/artifact/com.google.apis/google-api-services-dialogflow/v2-rev2-1.23.0
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-dialogflow</artifactId>
<version>v2-rev2-1.23.0</version>
</dependency>
目的:这样我就不必自己解析/构建json了,我是通过mvnrepository搜索找到它的。
我截获了这个json:
{
"responseId": "72945ef4-0897-4705-a770-a12100162b45",
"queryResult": {
"queryText": "was gibts neues?",
"action": "GetNewsFromWordpress",
"parameters": {
"allRequiredParamsPresent": true
},
"name": "projects/kreamont-abf6b/agent/intents/fe2c13a1-2e3f-48eb-a15a-660501c16807",
"diagnosticInfo": {
}
},
"languageCode": {
"intentDetectionConfidence": 1.0
},
"displayName": {
"payload": {
}
},
"session": "projects/kreamont-abf6b/agent/sessions/e69aabe7-4f6a-4224-b881-8bbf31835ef2"
}
杰克逊不知何故无法绑定模型。我怎样才能使用一些java库,这样我就不必自己去解析json了?
com.fasterxml.jackson.databind.JsonMappingException:无法(通过引用链: com.google.api.services.dialogflow.v2.model.GoogleCloudDialogflowV2WebhookRequest"queryResult") )将com.google.api.services.dialogflow.v2.model.GoogleCloudDialogflowV2QueryResult字段com.google.api.services.dialogflow.v2.model.GoogleCloudDialogflowV2WebhookRequest.queryResult设置为java.util.LinkedHashMap
@RequestMapping(method = RequestMethod.POST, path = "fulfillment", consumes = MediaType.APPLICATION_JSON_VALUE)
public GoogleCloudDialogflowV2WebhookResponse getFulfillment(@RequestBody GoogleCloudDialogflowV2WebhookRequest request) {
// HttpMessageNotReadableException
...
发布于 2018-09-23 07:02:02
该库依赖于google-api-client。它有一个为传输对象定制的json解析器(如GoogleCloudDialogflowV2WebhookRequest)。这些对象从地图延伸而来。它们的元素用Key注解标记。这就是正常的jackson或gson解析器失败的原因。您有多个选项:
导入;导入com.google.api.client.json.jackson2.JacksonFactory;导入com.google.api.services.dialogflow.v2.model.*;导入org.springframework.web.bind.annotation.PostMapping;导入org.springframework.web.bind.annotation.RequestBody;导入org.springframework.web.bind.annotation.RestController;导入reactor.core.publisher.Mono;导入java.io.IOException;导入java.io.StringWriter;导入java.util.Collections;@ .parse(GoogleCloudDialogflowV2WebhookRequest.class);公共类DialogflowWebhookController {私有静态映射jacksonFactory = JacksonFactory.getDefaultInstance();@PostMapping("/dialogflow")公共单声道webhook(@RequestBody String rawRequest)抛出请求{ GoogleCloudDialogflowV2WebhookRequest request = jacksonFactory.createJsonParser(rawRequest) RestController StringWriter stringWriter =jacksonFactory.createJsonParser StringWriter();JsonGenerator jsonGenerator =RestController GoogleCloudDialogflowV2WebhookResponse response = ...jsonGenerator.serialize(response);jsonGenerator.flush();return Mono.just(stringWriter.toString());} }
https://stackoverflow.com/questions/49480084
复制相似问题