gpt4 book ai didi

node.js - 在 dialogflow sdk v2 上将参数发送到 webhook

转载 作者:IT老高 更新时间:2023-10-28 23:00:03 26 4
gpt4 key购买 nike

我正在尝试向 dialogflow (api.ai) 发送一些参数,例如用户名、电子邮件等,但我无法弄清楚。问题是我无法使用 Dialogflow v2 Nodejs SDK 获取/设置任何特定数据(例如用户名、电子邮件等)。我尝试使用 queryParams.payload (v1: originalRequest) 但它没有以某种方式工作。此外,我尝试使用数据触发 自定义事件,但我无法在响应中获取任何事件数据。有人知道如何为 dialogFlow 上的 session 发送一些特定数据吗?

有效负载示例

  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 对象转换为 proto 结构,或者只需复制 the structjson.js file in the sample in this gist .下面是一个使用 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);
});

关于node.js - 在 dialogflow sdk v2 上将参数发送到 webhook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47583996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com