我正在尝试制作一个辅助应用程序,并且正在使用firebase的Cloud Firestore服务将响应作为WebFook的响应发送回我的应用程序。我已经根据此文档在请求JSON中使用了'session'参数,并发送fulfilmentText作为对用户的响应。但是,每当用户启动该应用程序时,都会创建一个我不需要的新会话。我只想为数据库中的每个用户提供一个条目,以便如何使用dialogflow实现该目的。
在Alexa Skill中,我们将deviceId作为参数,通过它我们可以唯一地标识用户,而与会话ID无关,但是dialogflowRequest JSON中是否有任何参数。如果没有,那么没有它怎么实现这个任务。
我从Dialogflow获得的请求JSON中包含一个userID,因此我可以使用userId还是应该与userStorage一起使用,前提是请求JSON中不提供userStorage参数。
request.body.originalDetectIntentRequest { source: 'google', version: '2', payload: { surface: { capabilities: [Object] },
inputs: [ [Object] ],
user:
{ locale: 'en-US',
userId: 'ABwppHG5OfRf2qquWWjI-Uy-MwfiE1DQlCCeoDrGhG8b0fHVg7GsPmaKehtxAcP-_ycf_9IQVtUISgfKhZzawL7spA' },
conversation:
{ conversationId: '1528790005269',
type: 'ACTIVE',
conversationToken: '["generate-number-followup"]' },
availableSurfaces: [ [Object] ] } }
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢@Prisoner的回答,但我无法发送在响应中生成并在有效负载中设置的随机ID。以下是我生成uuid并将其存储在firestore中的代码。我在下面的代码中做错了,由于生成了新的uuid用于返回用户,因此响应显示为在数据库中找不到文档。我想我没有适当地发送uuid。请帮忙。
exports.webhook = functions.https.onRequest((request, response) => {
console.log("request.body.queryResult.parameters", request.body.queryResult.parameters);
console.log("request.body.originalDetectIntentRequest.payload", request.body.originalDetectIntentRequest.payload);
let userStorage = request.body.originalDetectIntentRequest.payload.user.userStorage || {};
let userId;
console.log("userStorage", userStorage);
if (userId in userStorage) {
userId = userStorage.userId;
} else { …Run Code Online (Sandbox Code Playgroud) 我已经使用 JSON 请求和响应 V2 在 Google Assistant 上构建了多个操作,但我听说应该首选使用 Actions SDK 来构建专门针对 Google Assistant 的操作。我很困惑是使用 Actions SDK 还是 JSON 请求响应?
例如 - 在此链接上,每个示例代码都有两个选项卡,Node.js 使用 Actions SDK 和 JSON 使用 JSON 请求响应。
在哪些情况下应该首选哪一个?
谢谢!
我有一个嵌套的json,它具有一个键和值是另一个具有键和值的json。下面是json。
{
"Testicular Torsion": {
"What is testicular torsion?": "ABC",
"Symptoms": "AB",
"Risks": "AL",
"Diagnosis": "LK",
"Treatment": "UY"
},
"XYZ": {
"X": "ABC",
"Symptoms": "AB",
"Risks": "AL",
"Diagnosis": "LK",
"Treatment": "UY"
}
};
Run Code Online (Sandbox Code Playgroud)
我想做的是将数据插入Firebase的Cloud Firestore中。以下是相同的代码。但是问题是,仅插入了第一个键值对(在这种情况下,是Testicular Torsion键及其值为另一个JSON),而没有插入其他键值对。为什么会这样,代码中需要做什么?
var string_medical_data = JSON.stringify(medical_json);
var json_medical = JSON.parse(string_medical_data);
function abc(poi){
firestore.collection('medical').doc(poi).set(json_medical[poi])
.then(() => {
return console.log("Added");
})
.catch((e => {
console.log('error: ', e);
return console.log(e);
}))
}
exports.medical = functions.https.onRequest((request, response) => {
var problems = [];
for(var myKey in json_medical) {
problems.push(myKey);
break; …Run Code Online (Sandbox Code Playgroud) node.js firebase google-cloud-functions google-cloud-firestore