我正在使用 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 时(即在您的欢迎意图处理程序中):
- 获取板 block 列表
- 更新 session 实体类型,为每个板创建一个实体。进行此更新涉及:
- 发出 patch against the projects.agent.sessions.entityTypes方法 SessionEntityType对于您要覆盖的实体类型。
- SessionEntityType将包含 Entities 的数组带有规范名称(可能是板名称或某些唯一标识符)及其任何别名(至少是板名称,可能是其他任何名称,可能包括“第一个”或“最近一个”等别名)。里>
该库的自述文件包含有关如何使用 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/