如何解决Dialogflow CX Webhook实现以使用Node.js答复用户
我尝试使用dialogflow-fillfillment库,但是我想它是为Dialogflow ES设计的,所以现在我正在使用 @ google-cloud / dialogflow-cx库,但是我不知道如何使用该库进行Webhook连接以使用实现来回复用户,Dialogflow CX的可用材料很少。
// use credentials or keyFilename i'm using keyFile
credentials: {
private_key: "-----BEGIN PRIVATE KEY-----==\n-----END PRIVATE KEY-----\n",client_email:"pro1a3711.iam.gserviceaccount.com",},keyFilename: './pr.json'
}
const {SessionsClient} = require('@google-cloud/dialogflow-cx');
const projectId = 'pro1-293711';
const location = 'global';
const agentId = 'da2271f5-0221-4dce-98d3-efa----9dd';
const languageCode = 'en';
const query = ['hello'];
// Imports the Google Cloud Some API library
//console.log(WebhooksClient)
const client = new SessionsClient(config);
//console.log("client",client)
async function detectIntentText() {
const sessionId = Math.random().toString(36).substring(7);
const sessionPath = client.projectLocationAgentSessionPath(
projectId,location,agentId,sessionId
);
console.info(sessionPath);
const request = {
session: sessionPath,queryInput: {
text: {
text: query,languageCode,};
const [response] = await client.detectIntent(request);
console.log(`User Query: ${query}`);
for (const message of response.queryResult.responseMessages) {
if (message.text) {
console.log(`Agent Response: ${message.text.text}`);
}
}
if (response.queryResult.match.intent) {
console.log(
`Matched Intent: ${response.queryResult.match.intent.displayName}`
);
}
console.log(
`Current Page: ${response.queryResult.currentPage.displayName}`
);
}
detectIntentText()```
解决方法
请注意,dialogflow-fulfillment库仅支持Dialogflow ES,而@google-cloud/dialogflow-cx库仅用于node.js应用程序来访问Dialogflow CX API。
由于Dialogflow CX还没有可用的实现库,因此可以参考Dialogflow CX webhook request和webhook response为Dialogflow CX代理构建Webhook服务。
您还可以使用下面的Node.js和express来参考Dialogflow CX的示例Webhook服务代码:
const express = require("express");
const app = express();
const bodyParser = require("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.post("/webhook",(request,response) => {
let tag = request.body.fulfillmentInfo.tag;
let jsonResponse = {};
if (tag == "welcome tag") {
//fulfillment response to be sent to the agent if the request tag is equal to "welcome tag"
jsonResponse = {
fulfillment_response: {
messages: [
{
text: {
//fulfillment text response to be sent to the agent
text: ["Hi! This is a webhook response"]
}
}
]
}
};
} else {
jsonResponse = {
//fulfillment text response to be sent to the agent if there are no defined responses for the specified tag
fulfillment_response: {
messages: [
{
text: {
////fulfillment text response to be sent to the agent
text: [
`There are no fulfillment responses defined for "${tag}"" tag`
]
}
}
]
}
};
}
response.json(jsonResponse);
});
const listener = app.listen(process.env.PORT,() => {
console.log("Your app is listening on port " + listener.address().port);
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。