如何从Google Assistant的用户那里获取文本,以及如何从sqlite数据库中回复某些信息

时间:2019-03-31 17:19:36

标签: node.js sqlite dialogflow actions-on-google node-red

我想使用一个快递服务器和一个基于我的vps webhook的sqlite db来创建一个“问答”模块。

正确的方法是什么?

谢谢


到目前为止,我已经设置了(没有成功)类似的东西:

https://gist.githubusercontent.com/antonyharfield/66f3a403b0fbd7fd490fc615d190dc0c/raw/a0c104da569a60f12de9fac02735f75f962caf39/simpleServer.js来启动服务器,并从google测试控制台获得欢迎消息,并打开用于查询的麦克风,但我无法获得更多信息……(我被困在第一个将查询发布到我的服务器)。我搜索了最少的工作代码示例。


使用节点红色的webhook中继,我已经从数据库中获得了查询和答案,但是我无法将其发送回助手,而且我也不知道该怎么做...


我也首先在dialogflow中尝试了实体。

快速简单((无需代码),但我不喜欢它。

https://console.dialogflow.com中,执行https://dialogflow.com/docs/entities/create-manage-entities

我现在有两列,第一列是结果,第二列是匹配的查询,然后在意向中移动,我有类似这样的内容dialogflow screenshot [nb:'numeroptl'是实体的名称值。]

它有效,但仅捕获第一个结果。


在我的csv中尝试使其成为一个非常简单的问题:

“第一条街道”,“左侧”,“卡洛”

“第一条街道”,“右侧”,“ giovanna”

“第二条街道”,“全部”,“马里奥”

我如何以Google助手为例:

  • “第一条街道”

并做出回应:

  • “ carlo(左侧),giovanna(右侧)”

2 个答案:

答案 0 :(得分:0)

您没有显示“实体系统”中的代码,但这听起来像是您需要做的事情。如果您要从数据库中获得多个响应,则需要以某种方式合并响应,或者确定如何让用户知道他们可以获取的其他信息以及如何获取。

答案 1 :(得分:0)

以csv示例为例,将左列映射到entities。例如,在这种情况下,第一条街道和第二条街道可以识别为@ sys.location实体。

Training phrases

Action and parameters

如果启用webhook fulfillment,则您定义的参数将在意图检测中发送到服务器。

Example of JSON response

您可以使用这些参数来执行sql查询并获取所需的结果。最后,以文本形式发送回复,或者,如果您使用的是Google助理,则以RichResponse的形式发送回复。


//Using dialogflow-fulfillment-nodejs
function other(agent) {

    // Parameters are located in agent.parameters
    let locationInput = agent.parameters.location

    // Your db code here

    // Response using suggestions
    agent.add(new Suggestion(`Carlo (left side)`));
    agent.add(new Suggestion(`Giovanna (right side)`));
  }

Suggestion response example

您可以找到Dialogflow here的教程,以及dialogflow实现示例here

现在,您无需使用库即可实现,只需遵循API requestsresponse格式。