以下は私が呼び出している関数ですが、エラーエラーが発生するたびに-MalformedResponseは、音声応答が空であるため、Dialogflow応答をAppResponseに解析できませんでした。
以下の$は完全なコードです
function callExternalAPI () {
return new Promise((resolve, reject) => {
let path = 'path';
console.log('API Request: ' + path);
http.get({host: host, path: path}, (res) => {
let body = '';
res.on('data', (d) => { body += d; });
res.on('end', () => {
let response = JSON.parse(body);
let output = 'response';
console.log(output);
resolve(output);
});
res.on('error', (error) => {
console.log(`Error calling the weather API: ${error}`);
reject();
});
});
let intentMap = new Map();
intentMap.set('CardView',callExternalAPI);
agent.handleRequest(intentMap);
});
インラインエディターは、Cloud Functions forFirebaseを使用します。デフォルトでは、プロジェクトはFirebaseの「Spark」プランを使用しています。これはネットワーク接続をGoogleサービスのみに制限します。
接続が拒否されているため、if (err)
ブロックがトリガーされており、これが発生したときにユーザーに返送する応答を指定していないため、「空の音声応答」エラーが発生します。
最も簡単な解決策は、「ブレイズ」プランなどの有料プランにアップグレードすることです。このプランでは、クレジットカードの登録が必要ですが、無料枠があるため、基本レベルの操作に対して課金されることはありません。通常、開発とテストをカバーし、軽い本番環境の使用もカバーする場合があります。
エラーが発生した場合の応答も設定する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加