【问题标题】:MissingProperty error in Microsoft Bot Framework RequestMicrosoft Bot Framework 请求中的 MissingProperty 错误
【发布时间】:2017-01-18 19:30:49
【问题描述】:

我正在开发一个使用 Microsoft Bot Framework 的应用程序。我的应用程序是用 Node.js 编写的。此时,我正在尝试使用以下代码发布活动:

var https = require('https');

var token = '[receivedToken]';
var conversationId = '[conversationId]';

var options = {
  host: 'directline.botframework.com',
  port: 443,
  headers: {
    'Authorization': 'Bearer ' + token'
  },
  path: '/v3/directline/conversations/' + conversationId + '/activities',
  method: 'POST'                                
};

var request = https.request(options, (res) => {
  console.log(res.statusCode);
  var body = [];
  res.on('data', (d) => {
    body.push(d);
  });

  res.on('end', () => {
    var result = JSON.parse(Buffer.concat(body).toString());
    console.log(result);
  });
});

var info = { 
  type: 'message',
  text: 'test',
  from: { id: 'user_' + conversationId }
};

request.write(querystring.stringify(info));
request.end();

request.on('error', (err) => {
  console.log(err);
});

运行此代码时,我收到错误消息。这是状态码 400 的错误,它具有以下内容:

{ 
  error: { 
    code: 'MissingProperty',
    message: 'Invalid or missing activities in HTTP body' 
  }
}

我不明白缺少什么属性。一切看起来都正确。

【问题讨论】:

    标签: javascript node.js azure botframework direct-line-botframework


    【解决方案1】:

    您在请求标头中遗漏了Content-TypeContent-Length

    请考虑以下代码sn-p:

    var https = require('https');
    
    var token = '[receivedToken]';
    var conversationId = '[conversationId]';
    
    var info = JSON.stringify({
      type: 'message',
      text: 'test',
      from: { id: 'user_' + conversationId }
    })
    
    var options = {
      host: 'directline.botframework.com',
      port: 443,
      headers: {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json',
        'Content-Length': Buffer.byteLength(info)
      },
      path: '/v3/directline/conversations/' + conversationId + '/activities',
      method: 'POST'                                
    };
    
    var request = https.request(options, (res) => {
      console.log(res.statusCode);
      var body = [];
      res.on('data', (d) => {
        body.push(d);
      });
    
      res.on('end', () => {
        var result = JSON.parse(Buffer.concat(body).toString());
        console.log(result);
      });
    });
    
    request.write(info);
    request.end();
    
    request.on('error', (err) => {
      console.log(err);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多