小编Lak*_*pal的帖子

如何使用Diagflow识别唯一用户

我正在尝试制作一个辅助应用程序,并且正在使用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)

actions-on-google dialogflow-es

5
推荐指数
1
解决办法
2286
查看次数

哪个更适合用于 Google 助理?Actions SDK 或 JSON 请求响应

我已经使用 JSON 请求和响应 V2 在 Google Assistant 上构建了多个操作,但我听说应该首选使用 Actions SDK 来构建专门针对 Google Assistant 的操作。我很困惑是使用 Actions SDK 还是 JSON 请求响应?

例如 - 在此链接上,每个示例代码都有两个选项卡,Node.js 使用 Actions SDK 和 JSON 使用 JSON 请求响应。

在哪些情况下应该首选哪一个?

谢谢!

actions-on-google dialogflow-es

3
推荐指数
1
解决办法
396
查看次数

在Loop中将数据添加到Cloud Firestore

我有一个嵌套的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

1
推荐指数
1
解决办法
1204
查看次数