node.js - 如何创建特定于用户的实体?

标签 node.js dialogflow-es actions-on-google google-assistant-sdk

我正在使用 Dialogflow 和 actions-on-google-nodejs 为 Google Assistant 创建操作访问 GitKraken Glo API将卡片添加到人们的看板中。我正在使用帐户链接对我的用户进行身份验证。我希望我的用户能够说出诸如向[板名称]添加卡片添加卡片之类的内容。如果未给出板名称,我希望操作提示用户输入该名称。如何创建一个 session 实体来获取登录用户的所有板名称?

Sorry if this doesn't make much sense, I'm pretty new to Actions on Google and Dialogflow. Feel free to ask questions for clarity.

最佳答案

要使用 session 实体,您首先需要做一些事情:

  • 实体类型需要已存在。 session 实体更新现有的实体。最简单的方法是在 Dialogflow UI 中创建所需的实体。它不需要包含任何实体,但将一个实体作为默认实体可能会很有用。
  • 您需要 Service Account您在 Google Cloud 中进行更新的项目,以及该帐户的 key 。
  • 如果您使用库,例如​​ dialogflow-nodejs,您的生活将会轻松很多图书馆。

一般来说,您的代码需要执行以下操作,通常是在用户首次启动 session 时(即在您的欢迎意图处理程序中):

该库的自述文件包含有关如何使用 Nodejs 库执行此操作的示例代码的链接。我执行此工作的代码具有如下功能:

function setSessionEntity( env, entityType ){
  const config = envToConfig( env );
  const client = new dialogflow.SessionEntityTypesClient( config );

  let parent = env.dialogflow.parent;
  if( entityType.displayName && !entityType.name ){
    entityType.name = `${parent}/entityTypes/${entityType.displayName}`;
  }
  if( !entityType.entityOverrideMode ){
    entityType.entityOverrideMode = 'ENTITY_OVERRIDE_MODE_OVERRIDE';
  }

  const request = {
    parent: parent,
    sessionEntityType: entityType
  };
  return client.createSessionEntityType( request );
}

关于node.js - 如何创建特定于用户的实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54855921/

相关文章:

node.js - 基于Rasa的聊天机器人

javascript - Mongoose findOneAndUpdate 仅返回新的 $push 文档

node.js - Dialogflow 和 heroku Webhooks

dialogflow-es - 是否可以使用 Dialogflow 向 SSML 添加语音不流畅?

node.js - Actions-on-Google : TypeError: assistant. getContextArgument 不是函数

node.js - Node async.js : callback is not a function error?

javascript - 在 node.js 中从数据库中获取非英文字符时出现编码问题

dialogflow-es - 没有nodejs库请求用户位置

javascript - 使用 Google Assistant 从 Firebase 返回数据数组

actions-on-google - 在 Google 助理回复中使用多种语言