前提・実現したいこと
Google Cloud Functions(厳密にはDialogflowのFulfillmentのInline Editor上)で、
Google Apps Scriptへアクセスし機能を実行するコードを書いています。
GASのプロジェクトはWebアプリケーションとして導入し、以下を参考にHTTPS APIで
呼び出しています。
https://qiita.com/takatama/items/c8146faf9f04fc6b0698#http-api--json-api-%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99
GETメソッドでアクセスはできたのですがGASの場合はリダイレクトが必要なようで、Node.jsで実現する方法が分からず、教えていただきたいです。
発生している問題・エラーメッセージ
アクセスした際に以下メッセージが表示されます。
<HTML> <HEAD> <TITLE>Moved Temporarily</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF" TEXT="#000000"> <H1>Moved Temporarily</H1> The document has moved <A HREF="https://script.googleusercontent.com/macros/echo?user_content_key=XXXXXXXXXXXXXX">here</A>. </BODY> </HTML>
該当のソースコード
nodejs
1'use strict'; 2 3const functions = require('firebase-functions'); 4const { dialogflow } = require('actions-on-google'); 5 6const app = dialogflow(); 7 8const https = require('https'); 9const get = (url) => new Promise((resolve, reject) => { 10 https.get(url, (response) => { 11 const { statusCode } = response; 12 if(statusCode === "302"){ 13 //ここにリダイレクト処理? 14 return; 15 } 16 if(statusCode === "200"){ 17 const body = ''; 18 response.on('data', (chunk) => body += chunk); 19 response.on('end', () => resolve(body)); 20 return; 21 } 22 }).on('error', reject); 23}); 24 25const SEARCH_INTENT = 'Search'; 26 27app.intent(SEARCH_INTENT,conv => { 28 29 const options = { 30 hostname: 'script.google.com', 31 path: '/macros/s/XXXXXXXXXXXXXXXXXXX/exec', 32 followAllRedirects : true, 33 headers: { 34 'Content-Type': 'application/json', 35 'Authorization': 'Bearer ' + 'XXXXXXXXXXXXXXXXXXXXXXXXXX' 36 } 37 }; 38 return get(options).then(response => { 39 conv.close(JSON.parse(JSON.stringify(response))); 40 }); 41}); 42 43exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app);
あなたの回答
tips
プレビュー