node.js 操作 google 保存对话数据

node.js actions on google save conversation data

我有一个问题,我可以 return 来自 AXIOS 请求的数据,但我无法使用 Google 上的操作将该数据保存到对话用户存储 (conv.user.storage.caseNumber) Node.js 图书馆。我尝试了很多不同的方法,但 none 有效。我可以很好地保存意图中的数据(例如 conv.user.storage.subject 和 conv.user.storage.description)。我已经通过 console.log() 验证数据(即 caseNumber)在响应中被正确 returned。任何帮助将不胜感激。

代码如下:

  // Index
    const SalesForceProxy = require('./classes/SalesForceProxy');
    let proxy = new SalesForceProxy();
    app.intent('getDescription - yes - CreateConfirmation', proxy.createCase);

    // Proxy.js

    module.exports = function () {

    this.createCase = function (conv) {

    return new Promise(function( resolve, reject) {
     axios.post('https://mysite.my.salesforce.com/services/oauth2/token',querystring.stringify(params)).then(function(response){

                    var caseData =  {
                        "account" : conv.user.storage.accountId,
                        "recordType" : conv.user.storage.recordTypeId,
                        "priority" : conv.user.storage.priority,
                        "subject" : conv.user.storage.subject,
                        "description" : conv.user.storage.description
                    };

                    axios.post('https://mysite.my.salesforce.com/services/apexrest/voicetocase/create',caseData,
                    {
                        headers:  
                        {
                            'Authorization': "Bearer " + response.data.access_token,
                            'Content-Type': 'application/json'
                        }      
                    }
                    )
                    .then(function(response){
                       conv.user.storage.caseNumber = response.data.caseNumber;
                    }.bind({conv: conv}))
                    .catch((error) => {
                        console.log(error);
                    });
                    resolve()

            }.bind({conv: conv})).catch((error) => {
                console.log(error);
                reject(err);
            }); 

         });
    }
}

看起来你过早地解决了这个承诺,在你设置用户存储之前,这是第二个承诺。

axiom.post(...)
  .then() {
      conv.user.storage.X = "";
      resolve();
  }

这应该按预期工作。