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

时间:2018-05-16 17:44:04

标签: javascript node.js salesforce actions-on-google

我有一个问题,我可以从AXIOS请求返回数据,但我无法使用Google Node.js库上的操作将这些数据保存到会话用户存储(conv.user.storage.caseNumber)。我尝试了很多不同的方法,但都没有。我可以从意图中保存数据(例如conv.user.storage.subject和conv.user.storage.description)。我已经通过console.log()验证了数据(即caseNumber)在响应中正确返回。任何帮助将不胜感激。

以下是代码:

  // 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);
            }); 

         });
    }
}

1 个答案:

答案 0 :(得分:0)

在您设置用户存储空间之前,您似乎很快就会解决这个承诺,这是第二个承诺。

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

这应该按预期工作。