Dialogflow es 无法在google nodejs上创建具有操作的会话实体

Dialogflow es 无法在google nodejs上创建具有操作的会话实体,dialogflow-es,actions-on-google,Dialogflow Es,Actions On Google,一整天都在试图创建一个会话实体来满足我的意图。可惜没有成功 我相信这个库在任何方面都不支持实体,这有点悲哀。我说得对吗 在我的研究中,我发现这解释了如何通过API创建和管理实体,不管它们使用什么 考虑在google nodejs上使用两个库操作和nodejs dialogflow,但当我在google nodejs上使用操作时,第二个库(nodejs dialogflow)将不知道内容等 在进一步研究之后,我发现“trythisapi”在GoogleOAuth2.0上运行得非常好,但是我不知道如

一整天都在试图创建一个会话实体来满足我的意图。可惜没有成功

我相信这个库在任何方面都不支持实体,这有点悲哀。我说得对吗

在我的研究中,我发现这解释了如何通过API创建和管理实体,不管它们使用什么

考虑在google nodejs上使用两个库操作和nodejs dialogflow,但当我在google nodejs上使用操作时,第二个库(nodejs dialogflow)将不知道内容等

在进一步研究之后,我发现“trythisapi”在GoogleOAuth2.0上运行得非常好,但是我不知道如何使用GoogleOAuth2.0授权我的服务器(express.js)。我尝试使用API密钥,但始终出现以下错误:

{
  "error": {
    "code": 401,
    "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED"
  }
}

有没有关于如何为我的意图创建会话实体的建议


我之所以尝试使用会话实体,是因为该实体将每隔几天更改一次,并且不希望在dialogflow中更新该实体。我的想法是将其存储在DB(firebase)中,并在intent上验证它是否匹配任何值。

请记住,会话实体必须设置为您想要的值,然后才能在intent中匹配。在你的情况下,当你的行动开始时,你可能应该正确地这样做。因此,如果您有“欢迎”意图和“状态选项”意图,其中“选项”实体处于“状态选项”意图中,那么您应该更新“欢迎”意图中的“选项”。您不能在“状态选项”意图中执行此操作,因为它需要已经匹配了实体

这两个库做完全不同的事情,可以很好地协同工作。您将需要从原始请求主体获取会话路径,您可以使用a-o-g库从
conv.request
获取会话路径,以及必须以某种方式设置的实体路径

nodejs dialogflow库只是您也找到的restapi的包装器(实际上,可能是gRPC的等价物,但这并不重要)。然而,它所做的一件大事是将您从服务帐户获得的密钥转换为您需要随每个请求一起发送的访问令牌。如果您不熟悉Google的OAuth 2实现,这会使事情变得更简单


最后,虽然这个想法是合理的,并且会起作用,但请记住,这将需要一些时间来完成意图,并且用户正在等待答复。由于此数据将不经常更新,而且对于每个人来说,您可能希望使用一个工具来定期更改实体。此过程可能是在计划(cron)作业之外触发的,如果需要,可以手动触发。

Hi@capture,谢谢您的详细回答。我没有读到第一段。你能举个例子吗?然而,确认这两个库可以一起工作给了我一些希望。今天我将看看RESTAPI,并尝试生成一个访问令牌。最后考虑了这种方法(通过cron作业或手动触发器定期更改实体),但在实现之前,它热衷于尝试会话实体(只是看看什么是可行的,什么是不可行的)。啦啦队队长更新了,希望澄清。既然你已经接受了答案,如果你还有其他问题。最好将您试图使用的代码和任何错误作为新问题发布。