我如何在Spring Boot应用程序中使用Dialogflow V2 API?我已经使用V1 API成功实现了它

时间:2019-01-25 12:59:38

标签: dialogflow

好的,所以我创建了一个ionic聊天机器人,向我的spring boot应用程序发出GET请求。我的spring boot应用程序使用RestTemplate交换方法对Dialogflow进行API调用。我已经为V1 API成功实现了它。但是对于V2集成,令牌将在1小时后过期。因此,我进行了一些研究,发现我必须设置一个安全帐户并按照流程进行操作,然后gcloud会给我新的令牌(在终端中执行它并使用邮递员进行API调用之后)。但是我无法在Eclipse中使用此命令。我收到错误==>“应用程序默认凭据”不可用。如果它们在Google Compute Engine中运行,则可用。否则,必须定义环境变量GOOGLE_APPLICATION_CREDENTIALS指向指向定义凭据的文件。

我通过按照文档步骤安装google cloud SDK进行了尝试,但这没有帮助。

我什至尝试使用GoogleCredential依赖项来尝试它,但是我无法获得访问令牌(将其记为null)。

任何帮助将不胜感激。

编辑。

已经回答了以下问题。

2 个答案:

答案 0 :(得分:0)

您可以检查以下Java API for V2。我已经在我的Android应用中使用了它。 Here,我已经解释了如何集成到Android中。您可以遵循并修改以与Spring一起使用。我相信它会起作用。

答案 1 :(得分:0)

我能够使用命令==> gcloud auth application-default print-access-token在自己的spring boot应用程序中实现它。您将必须在系统上设置gcloud。设置步骤可在Dialogflow文档中找到。设置完成后,像在终端中一样运行此命令,它将每次为您提供更新的令牌。

上述问题的解决方案:

Runtime rt = Runtime.getRuntime();
String[] commands = { "gcloud command here" };
Process proc = rt.exec(commands);
proc.waitFor();
BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
        BufferedReader stdError = new BufferedReader(new InputStreamReader(proc.getErrorStream()));

        String updatedAccesssToken = null;
        while ((updatedAccesssToken = stdInput.readLine()) != null) {
            log.info("Updated access token :" + updatedAccesssToken);
            return updatedAccesssToken;
        }
        while ((updatedAccesssToken = stdError.readLine()) != null) {
            log.info("Error while fetching access token");
        }

注意:将json文件添加到资源文件夹中。在运行配置中,将环境变量设置为Name:GOOGLE_APPLICATION_CREDENTIALS,value:文件的路径