Microsoft Cognitive Services でバイナリ送る
Microsoft が提供している Microsoft Cognitive Services の Emotion API を使ってみた。
パラメータがいろいろあり、かなり遊べる感じだったものの、どの API のサンプルを見ても URL で画像を送っている。ただ普通にreadFile して送りつけたら InvalidImageSize という名のエラーが出て、Image size is too small or too big. とか怒られて、そこで数時間詰まったので、メモ代わりに。
どうやら chunked transfer をサポートしていないことが問題らしく(参考:botframework - Microsoft Cognitive Services Emotion API. Error: 'Image size is too small or too big.' - Stack Overflow)、sync で読めばよいという話のよう。
以下、コード。
"use strict"; const request = require('request'); const fs = require('fs'); request.post({ url: 'https://westus.api.cognitive.microsoft.com/emotion/v1.0/recognize', headers: { 'Ocp-Apim-Subscription-Key': { SUBSCRIPTION-KEY }, 'Content-Type': 'application/octet-stream' }, method: 'POST', body: fs.readFileSync({ IMAGE FILE }) }, (error, response) => { let res = JSON.parse(response.body); console.log(res); });