【问题标题】:How do we programatically create a Project and Agent in Dialogflow?我们如何以编程方式在 Dialogflow 中创建项目和代理?
【发布时间】:2021-09-07 02:00:58
【问题描述】:
我正在尝试从我的 Spring Boot 微服务应用程序自动创建 Dialogflow 代理和项目。同样在 google 提供的 API Explorer 上运行良好。但是,当我尝试从 Postman 进行相同的 http 调用(稍后我可以在应用程序中执行相同的过程)时,授权因权限不足而失败。
从 JavaScript 层集成 OAuth 2.0 也是如此。在这里,使用 UI 的人将是外行,我们不想将 Dialogflow 逻辑暴露给最终用户,因此希望从微服务中做同样的事情。
是否可以以编程方式创建代理,或者这不可行?
【问题讨论】:
标签:
spring-boot
dialogflow-es
chatbot
dialogflow-cx
【解决方案1】:
要回答您的问题,可以以编程方式创建 Dialogflow 代理:
Dialogflow v2 API 提供了可用于以编程方式与 Dialogflow 代理交互的方法。
-
首先,您必须创建一个可以使用documentation 中提到的 API 方法完成的 Google 云项目,记下将用于调用 Dialogflow API 的项目 ID。
-
在您的 Google Cloud 项目中启用 Dialogflow API
-
根据documentation,projects.setAgent 方法用于创建或更新 Dialogflow 代理。
-
您可以通过提供所需参数在 API Explorer 上试用
agent.parent: 项目/
请求正文:
{
"displayName": ""
}
-
启用凭据并执行它。您将收到 200 成功响应,并且将在 Dialogflow 控制台中创建一个新代理。
如果您想从 Postman 访问 Dialogflow:
- 创建 OAuth 2.0 客户端 ID
- 在 Postman 中,创建一个新请求并选择“授权”选项卡并选择“OAuth 2.0”类型。点击“获取新的访问令牌”
- 向 Dialogflow API 发送 get/post 请求
- 有关详细演示,请参阅此Github 链接。
【解决方案2】:
您必须在请求标头中包含这些内容
- grant_type = refresh_token
- approval_prompt = force
- redirect_uri
- client_id
- client_secret
- prompt = consent
- access_type = offline
- refresh_token
通过包含这些授权将成功。