JavaScriptに関する質問を何でもしていい掲示板です。匿名での投稿も可能です。どんなことでもどしどし書き込んでください。回答もどなたでも自由にできます。僕も回答できる内容であれば必ず回答します!
質問は下記に沿って書いていただくと回答しやすくなります。
alexa-appでの実装なのですが。
node-fetchで別サーバからjsonを取得してres.say()で音声応答を返すのですが、
console.log()内ではjsonの内容を表示できるものの、
res.say()に渡すとstringじゃないよと怒られます。
const Alexa = require('alexa-app');
const app = new Alexa.app('Sample');
const fetch = require('node-fetch')
const averageResponse = (req, res) => {
var num = req.slots['num'].value
console.log(num)
fetch('https://******',
{
method:'GET',
headers: { 'Content-Type': 'application/json' }
})
.then((response)=>{
if(response.status === 200){
return response.json()
}
})
.then((json)=>{
console.log(json['averageTop10'][num - 1])
//console.log(res)
//var json = JSON.parse(data)
try {
if(num <= 10){
//console.log(typeof(String(json.averageTop10[num - 1].average)))
res.say(''+json.averageTop10[num - 1].average).shouldEndSession(true)
}
} catch (error) {
console.error(error)
}
})
.catch((err)=>{
console.error(err);
})
コメントアウトしてますが、String()コンストラクタやtoString()メソッドで型変換試してもエラーがキャッチできず、処理も正常に終わってないようなのでちょっと悩み中です。
↓このあたり怪しいなーとは思ってheaderはつけてみましたが変わらず。
str.replace is not a function