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-Type
和Content-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); });