【问题标题】:How do i use Dialogflow V2 API in my spring boot application? I have successfully implemented it using V1 API如何在我的 Spring Boot 应用程序中使用 Dialogflow V2 API?我已经使用 V1 API 成功实现了它
【发布时间】:2019-01-25 12:59:37
【问题描述】:

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

我按照文档步骤安装谷歌云 SDK 进行了尝试,但没有任何帮助。

我什至尝试使用 GoogleCredential 依赖项,但我无法获取访问令牌(将其设为 null)。

任何帮助将不胜感激。

编辑。

已回答以下问题。

【问题讨论】:

  • 对您来说最好的方法是使用GoogleCredential 方法,但不清楚您是如何尝试使用它或您可能在做什么。您能否更新您的问题以包含您尝试使用的代码、任何日志或调试等?
  • 感谢您的回复。我找到了解决方案并将解决方案添加到我的问题中
  • 如果您找到了可行的解决方案,请继续将其作为答案发布,而不是作为问题的更新。这样人们就会明白这是一个解决方案。
  • 完成并完成......

标签: dialogflow-es


【解决方案1】:

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

【讨论】:

  • 好的,谢谢您的回答,但如前所述,我的应用程序是离子的。我如何能够使用命令 ==> gcloud auth application-default print-access-token 在我的 Spring Boot 应用程序中实现它。您必须在系统上设置 gcloud。可以在 Dialogflow 文档中找到设置步骤。设置后,像在终端中一样运行此命令,它每次都会为您提供更新的令牌。在 spring boot application cn 中运行命令的代码 sn -p 可以在上面找到。
  • 感谢您的信息?
【解决方案2】:

我能够使用命令 ==> 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 文件。在运行配置中将环境变量设置为名称:GOOGLE_APPLICATION_CREDENTIALS 和值:文件路径

【讨论】:

    猜你喜欢
    • 2020-12-04
    • 1970-01-01
    • 2019-01-27
    • 2021-10-05
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多