如何使用带有NodeJS的CustomVision api发出POST请求

时间:2017-10-08 01:41:03

标签: javascript node.js post botframework

我正在尝试使用bot模拟器工具附加图像并将此图像发送到microsofts customvision api,我遇到的问题是我得到了

{ Code: 'BadRequestImageFormat', Message: '' }

从自定义视觉api调用返回。

我正在使用request中的npm模块来处理呼叫

// Receive messages from the user and respond by echoing each message back (prefixed with 'You said:')
var bot = new builder.UniversalBot(connector, function (session) {
    session.send("Hello"); //session.message.text
    // If there is an attachment

    if (session.message.attachments.length > 0){ 
        console.log(session.message.attachments[0])
        request.post({
            url: 'xxx',
            encoding: null,
            json: true,
            headers: {
                'Content-Type': 'application/octet-stream',
                'Prediction-Key': 'xxx'
            },
            body: session.message.attachments[0]
        }, function(error, response, body){
            console.log(body);
        });
    }
});

我相信我可能会将错误的格式发送到自定义视觉中,但我还是暂时无法弄明白。

1 个答案:

答案 0 :(得分:0)

我复制了您的问题,看起来问题是您的内容类型'。您尝试在请求中传递JSON,但将内容类型设置为octet-stream。请参阅下面的修改后的代码:

var bot = new builder.UniversalBot(connector, function (session) {
  session.send("Hello"); //session.message.text
  // If there is an attachment
  if (session.message.attachments.length > 0){
    console.log(session.message.attachments[0])
    request.post({
      url: 'https://northeurope.api.cognitive.microsoft.com/vision/v1.0/analyze?visualFeatures',
      encoding: null,
      json: true,
      headers: {
        'Content-Type': 'application/json',
        'Ocp-Apim-Subscription-Key': 'Your API Key...'
      },
      body: session.message.attachments[0]
    },
    function (err, response, body) {
      if (err) return console.log(err)
      console.log(body);
    });
  }
});

当我运行此操作时,我收到错误InvalidImageUrl,因为它正在本地主机上查找内容。你可以通过使用Ngrok公开你的本地主机来解决这个问题。