我正在尝试向dialogflow(api.ai)发送一些参数,例如用户名,电子邮件等,但我无法弄清楚。问题是我无法使用Dialogflow v2
Nodejs SDK获取/设置任何特定的数据(例如用户名,电子邮件等)。我尝试使用 queryParams.payload (v1:
originalRequest ),但是它不起作用。另外,我尝试使用数据触发 自定义事件
,但无法在响应中获取任何事件数据。有人知道如何在dialogFlow上发送一些用于会话对话的特定数据吗?
有效负载示例
const projectId = 'test-bot-test-1111';
const sessionId = user.uuid;
const languageCode = 'en-GB';
const sessionClient = new dialogFlow.SessionsClient();
const sessionPath = sessionClient.sessionPath(projectId, sessionId);
const request = {
session: sessionPath,
queryInput: {
text: {
text: query,
languageCode
}
},
queryParams: {
payload: {
data: {
username: 'bob',
email: 'bob@test.com'
}
}
}
};
let resultReq;
console.log('request :: ', request, '\n\n');
try {
resultReq = await sessionClient.detectIntent(request);
} catch (err) {
// eslint-disable-next-line no-console
return console.error('ERROR:', err);
}
事例
const projectId = 'test-bot-test-1111';
const sessionId = user.uuid;
const languageCode = 'en-GB';
const sessionClient = new dialogFlow.SessionsClient();
const sessionPath = sessionClient.sessionPath(projectId, sessionId);
const request = {
session: sessionPath,
queryInput: {
event: {
name: 'custom_event',
languageCode,
parameters: {
name: 'sam',
user_name: 'sam',
a: 'saaaa'
}
}
},
queryParams: {
payload: {
data: user
}
}
};
let resultReq;
console.log('request :: ', request, '\n\n');
try {
resultReq = await sessionClient.detectIntent(request);
} catch (err) {
// eslint-disable-next-line no-console
return console.error('ERROR:', err);
}
Dialogflow的v2
API使用gRPC并具有一些怪癖,您已经遇到其中之一。如果查看Node.js库的示例,则可以看到解决方法。您需要隐含一种jsonToStructProto
将JavaScript对象转换为原型结构的方法,或者仅在此要点中将structjson.js
文件
~~~~复制
到示例
中。以下是使用该structjson.js
文件的完整示例:
// Imports the Dialogflow library
const dialogflow = require('dialogflow');
// Import the JSON to gRPC struct converter
const structjson = require('./structjson.js');
// Instantiates a sessison client
const sessionClient = new dialogflow.SessionsClient();
// The path to identify the agent that owns the created intent.
const sessionPath = sessionClient.sessionPath(projectId, sessionId);
// The text query request.
const request = {
session: sessionPath,
queryInput: {
event: {
name: eventName,
parameters: structjson.jsonToStructProto({foo: 'bar'}),
languageCode: languageCode,
},
},
};
sessionClient
.detectIntent(request)
.then(responses => {
console.log('Detected intent');
logQueryResult(sessionClient, responses[0].queryResult);
})
.catch(err => {
console.error('ERROR:', err);
});
问题内容: 现在,我的问题是尝试在编辑该行时发送该行的ID()。 例如,我有一个带有列userid(),username(),firstname(),lastname()的网格。在编辑行时,网格仅发送参数用户名,名字和姓氏。在服务器端,我需要用户ID知道我已将哪些新值应用于这些用户。 editUrl看起来像: 谢谢 这是完整的代码: 问题答案: 您可以使用 (ID)列的定义中。该参数当前不是真正需
问题内容: 我有一个用于更新数据库表的对象,但是它不能正确解释我的空值。 这是SQL: 我已经尝试过像这样可以为空的null合并参数,但是我没有取得任何成功。除非另有说明,否则所有参数均为字符串: 我得到这样的异常: 在将每个参数添加到SqlCommand对象以设置DbNull.Value(如果参数值为null)之后,我还尝试遍历每个参数,如下所示: 但是,这种方法导致异常: 将空参数传递给a的最
问题内容: 我在这个jar中制作了一个名为 GetOfferSoftware的* jar 文件,我有一个名为 Offer的 Main类, 并且该Offer类包含以下功能 *** 现在我想从 另一个 与GetOfferSoftware jar不相关的 Java程序 调用此函数,所以我的问题是如何从另一个Java类访问参数并将参数发送到getOffer()函数。伙计们先谢谢 问题答案: 为了使用另一个
问题内容: 我当前的部分看起来像这样: …这意味着我可以运行来启动服务器。到现在为止还挺好。 但是,我希望能够运行类似的东西并将参数传递给(例如=> )。这可能吗? 问题答案: 编辑: 可以将args传递给npm2.0.0 语法如下: 注意必要的。需要将传递给命令本身的参数和传递给脚本的参数分开。 所以如果你有 那么以下命令将是等效的: => => 为了读取命名参数,最好使用yargs或[mini
我是百里香菜鸟。我试图创建一个简单的crud应用程序。我试图在删除按钮上删除客户类的对象。我如何使用百里香叶为调用deleteUser的方法设置参数(例如- id)。这是我的控制器。 以下是我的看法。
我正在构建一个简单的web应用程序,并尝试创建一个登录页面。该页面由一个带有加载servlet的表单的JSP组成。 在servlet中: 这段代码可以工作,但它在URL字符串中包含了用户名和密码,所以这显然不是一个好的做法。我尝试使用POST来实现这一点,但我得到了一个错误。(HTTP状态405-此URL不支持HTTP方法POST) 我需要知道如何使用POST将参数从JSP发送到Servlet。我