2017-10-08 3 views
1

Je suis en train joindre une image à l'aide de l'outil d'émulation de bot et d'envoyer cette image hors du Microsofts customvision api, la question que je vais avoir est que je reçoisComment faire une requête POST en utilisant api CustomVision avec NodeJS

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

retour de la coutume l'appel de vision personnalisée api.

J'utilise le module request de npm pour gérer les appels

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

Je crois que je transmettrai le mauvais format par la vision personnalisée mais je suis incapable de le comprendre à partir de encore.

+0

Pouvez-vous ajouter plus de détails sur l'image que vous avez utilisée (quel est le format de l'image, la taille de l'image ...). Avez-vous essayé directement d'utiliser Custom Vision avec votre image en premier? –

Répondre

0

J'ai répliqué votre problème et il semble que le problème est votre «type de contenu». Vous essayez de transmettre JSON dans votre demande, mais en définissant le type de contenu comme octet-stream. Voir mon code modifié ci-dessous:

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

Quand je cours, je reçois l'erreur InvalidImageUrl qui est à prévoir car il est à la recherche d'un contenu sur localhost. Vous pouvez contourner cela en exposant votre localhost en utilisant Ngrok.