Alexa スキルで外部APIを使う

Alexaスキルから実行するLambda 内で外部APIを利用したい。
APIの呼び出しを非同期で行ったところ、うまくいかなかった、、、

var options = {
    uri: "https://xxxxxxx",
    headers: {
        "Content-type": "application/json",
    },
    json: {
        "data1": "xxxx",
        "data2": "yyyy"
    }
};
request.post(options, function(error, response, body){
    // this.emit(':tell', "外部API呼び出し"); // ← ここでemitを実行するとAPIコールするが、Alexaへの応答が空になる
});
// this.emit(':tell', "外部API呼び出し");  // ← ここでemitを実行するとAPIコールされず、Alexaへの応答は正常にされる

本来あるべき姿ではないと思うが、APIコールを同期的に行うことで一旦解決。

npm install sync-request

呼び出しはこんな感じ

var response = request(
    'POST',
    "https://xxxxxx",
    {
        json: {
            "data1": "xxxxx",
            "data2": "yyyy"
        }
    }
);
this.emit(':tell', "外部API呼び出し");

一応GETの場合はこんな感じ

var response = request(
    'GET',
    "https://xxxxxxx"
);
var data = JSON.parse(response.getBody('utf8'));
this.emit(':tell', "データ1は" + data.data1 + "です");

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA