Firebase 在dialogFlow控制台中创建的调用意图

Firebase 在dialogFlow控制台中创建的调用意图,firebase,google-cloud-firestore,google-cloud-functions,actions-on-google,dialogflow-es,Firebase,Google Cloud Firestore,Google Cloud Functions,Actions On Google,Dialogflow Es,因为我是dialogFlow编码的新手,所以我对在控制台dialogFlow中创建的意图很少有疑问 1) 如果我在dialogFlow控制台中创建一个意图“intent1”,是否可以在firebase函数中调用该意图?如果可以,如何实现 2) 如何让用户选择选项而不是键入?我要用什么来做这个 3) 如何配置每当用户类型为number时调用的意图 4) 实体、事件和动作及参数的用途是什么?我对谷歌编程的动作还是有点陌生,但以下是我的理解 Dialogflow允许您定义意图。然后可以定义代码来实现这

因为我是dialogFlow编码的新手,所以我对在控制台dialogFlow中创建的意图很少有疑问

1) 如果我在dialogFlow控制台中创建一个意图“intent1”,是否可以在firebase函数中调用该意图?如果可以,如何实现

2) 如何让用户选择选项而不是键入?我要用什么来做这个

3) 如何配置每当用户类型为number时调用的意图


4) 实体、事件和动作及参数的用途是什么?

我对谷歌编程的动作还是有点陌生,但以下是我的理解

Dialogflow允许您定义意图。然后可以定义代码来实现这些意图。控制台为Google云函数提供了一个内联JavaScript编辑器。您可以转到谷歌云功能控制台,在那里查看代码。或者,如果您想部署更复杂的代码(例如,将JavaScript拆分为多个文件-内置编辑器仅适用于单个index.js文件),可以将其切换到“web实现”

因此dialogflow接受人类的输入(他们说的一个短语),根据不同的意图查找短语的训练集,然后选择它认为正确的一个。然后调用该意图的实现代码(代码存储在firebase中)。所以当你问“是否有可能在firebase函数中调用此意图”时,感觉有点倒退。意图是用户说话和调用firebase函数(通过HTTP)之间的粘合剂。意图本身不是可以调用的代码

如果希望用户选择选项,可以使用选项名称(如“一”、“二”、“三”等)创建实体,也可以为每个选项名称创建意图。当用户说“一”时,就会触发“一”意图。要知道用户在菜单浏览结构中的位置,要知道“一”是什么意思,这取决于应用程序代码。(您也可以在带有屏幕的设备上使用建议,向他们显示他们必须点击的选项。)理想情况下,您可以允许用户说出短语或数字,以提供更大的灵活性

因此,您的第三个问题(如何配置用户键入数字时调用的意图),您的应用程序可能会执行类似于以默认的“欢迎”意图(起点)启动的操作。你可以口头说出菜单选项“一个是家用电器,两个是衣服,三个是鞋子,…”。然后记住用户在菜单中的位置。然后,你将“一”作为一个意图连接起来,在云功能中,它将检查用户正在使用哪个菜单,这样就可以知道“就在欢迎意图之后,“一”意味着家庭用品”。然后,该应用程序可能会问第二个问题,比如“一个是家具,两个是花瓶,三个是迪斯科球,…”。如果他们再次说“一”,这会达到同样的目的,但你的应用程序会保存一个变量,跟踪用户在菜单树中的位置

实体允许您定义术语词汇表。例如,“我想买一件${color}${thing}”。您可以使用“红色”、“绿色”、“蓝色”等值定义颜色实体。您可以定义“衣服”、“帽子”、“鞋子”等第二个实体。意向培训短语可能是“我想买一件红色衣服”。Dialogflow可以在训练句中被告知“红色”是一个“颜色”实体,“衣服”是一个“东西”实体。然后将这些值作为参数传递给支持实现的web服务——也就是说,您的“购买”意图将得到一个“颜色”和“东西”参数

事件是系统生成的触发器,而不是用户输入触发器。例如,启动应用程序的“欢迎”意图是系统生成事件。当应用程序从一个设备移动到另一个设备时,将使用另一个事件。如果您请求开始使用推送通知的权限,则会发生其他系统事件。这是一种在发生某些事情时运行代码的方法(而不仅仅是当用户说了一些事情时)


我希望这有帮助

我对谷歌编程的操作还是有点陌生,但以下是我的理解

Dialogflow允许您定义意图。然后可以定义代码来实现这些意图。控制台为Google云函数提供了一个内联JavaScript编辑器。您可以转到谷歌云功能控制台,在那里查看代码。或者,如果您想部署更复杂的代码(例如,将JavaScript拆分为多个文件-内置编辑器仅适用于单个index.js文件),可以将其切换到“web实现”

因此dialogflow接受人类的输入(他们说的一个短语),根据不同的意图查找短语的训练集,然后选择它认为正确的一个。然后调用该意图的实现代码(代码存储在firebase中)。所以当你问“是否有可能在firebase函数中调用此意图”时,感觉有点倒退。意图是用户说话和调用firebase函数(通过HTTP)之间的粘合剂。意图本身不是可以调用的代码

如果希望用户选择选项,可以使用选项名称(如“一”、“二”、“三”等)创建实体,也可以为每个选项名称创建意图。当用户说“一”时,就会触发“一”意图。要知道用户在菜单浏览结构中的位置,要知道“一”是什么意思,这取决于应用程序代码。(您也可以在带有屏幕的设备上使用建议,向他们显示他们必须点击的选项。)理想情况下,您可以允许用户说出短语或数字,以提供更大的灵活性

因此,您的第三个问题(如何配置用户键入数字时调用的意图),您的应用程序可能会执行类似于以默认的“欢迎”意图(起点)启动的操作。你可以口头说出菜单选项“一个是家用电器,两个是衣服,三个是鞋子,…”。然后记住用户在菜单中的位置。然后你把“一”作为意图,我
const dialogflow = require('dialogflow');
const sessionClient = new dialogflow.SessionsClient();
// Define session path
const sessionPath = sessionClient.sessionPath(projectId, sessionId);

const r_text = "What's the weather like in Rio de Janeiro?"

// The text query request.
const request = {
  "session": sessionPath,
  "queryParams": {
    "payload": payload
  },
  "queryInput": {
    "text": {
      "text": r_text,
      "languageCode": languageCode,
    },
  },
};

return sessionClient
.detectIntent(request)
.then(responses => {
  console.log('Detected intent');
  const result = responses[0].queryResult;
  ...do stuff with responses...
  return Promise.resolve('Resolved intent');
})
if (result.intent) {
  console.log(`  Intent: ${result.intent.displayName}`);
  return Promise.resolve('Resolved intent');
} else {
  console.log(`  No intent matched.`);
  return Promise.resolve('Not resolved intent');
}
const payload = structjson.jsonToStructProto({
  "user": userId,
  "location": r_location,
  "timestamp": r_timestamp,
  "sender": r_sender
})