Microsoft Bot Framework请求中的MissingProperty错误

我正在使用Microsoft Bot Framework的应用程序。 我的应用程序是用Node编写的。 在这个时候,我正在尝试使用下面的代码发布一个活动:

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' } } 

我不明白是什么财产丢失。 一切看起来正确。

您错过了请求标头中的Content-TypeContent-Length

请考虑下面的代码片段:

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