質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Amazon Echo

Amazon Echoは、Amazon社が開発したスマートスピーカーです。人工知能「Alexa」を搭載しており、「アレクサ」と話しかけることで起動。音楽の再生、アラームのセット、ニュースの読み上げなどを音声操作機能を持ちます。

Alexa

Alexa(アレクサ)は、米アマゾンが開発したクラウドベースのAIアシスタント。Amazon EchoやEcho dotに搭載され、話かけると音楽を再生したり、天気予報やスケジュールなど様々な情報を提供します。

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

3283閲覧

AWS(Lambda)からFirebaseへのGETリクエストを送信

moroheia

総合スコア14

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Amazon Echo

Amazon Echoは、Amazon社が開発したスマートスピーカーです。人工知能「Alexa」を搭載しており、「アレクサ」と話しかけることで起動。音楽の再生、アラームのセット、ニュースの読み上げなどを音声操作機能を持ちます。

Alexa

Alexa(アレクサ)は、米アマゾンが開発したクラウドベースのAIアシスタント。Amazon EchoやEcho dotに搭載され、話かけると音楽を再生したり、天気予報やスケジュールなど様々な情報を提供します。

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2018/04/11 01:48

編集2018/04/11 01:49

前提・実現したいこと

Alexaのスキル開発を行なっています。
AWSで所持している内容(アクセストークンや指示内容)をFirebase内にあるFunctionへGET送信したいのですが
以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

Alexaシミュレータでのテスト時に発生

スキルからの応答に問題があります

該当のソースコード

以下はAWSに記載しているNode.jsです(該当箇所を一部抜粋)

'TestIntent': function () { // askEventIntent 'use strict'; var self = this; var accessToken = this.event.session.user.accessToken; var url = 'https://*****.cloudfunctions.net/hello?name=' + 'abc' + '&token=' + accessToken; https.get(url, function(res) { console.log('応答を得る') res.setEncoding('utf8'); res.on('data', function(str) { console.log(str); }); }); req.setTimeout(1000); req.on('timeout', function() { console.log('request timed out'); req.abort() }); req.on('error', function(err) { console.log("Error: " + err.code + ", " + err.message); }); }

受信側のソースコード

念のため、受信側のFirebaseのソースコードも記載します。

const functions = require('firebase-functions'); exports.hello = functions.https.onRequest((request, response) => { if (request.query.name !== undefined) { let param = { name:request.query.name, token:request.query.token } response.status(200).send("action: " + param.name + " AccessToken " + param.token) } else { response.status(200).send("Hello World") } })

試したこと

Firebaseへ、Advanced REST clientを用いてGET送信すると無事に処理されました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

Alexaスキル開発トレーニング」の記事を参考にし、URL等を一部変更することで無事にGET送信できました。

'TestIntent': function () { var self = this; // アクセストークンの取得 var accessToken = this.event.session.user.accessToken; // Login with AmazonのリクエストURLにアクセストークンを付与 var url = 'https://******.cloudfunctions.net/hello?name=abc&token=' + accessToken; // httpsモジュールでリクエストを送出 https.get(url, function(res) { // レスポンスを格納する空の変数を定義 var body = ''; res.setEncoding('utf8'); res.on('data', function(chunk) { // レスポンスボディーを変数に追加 body += chunk; }); res.on('end', function (res) { // レスポンスボディーはJSON形式なので、そこから氏名を取り出す var name = JSON.parse(body).name; var token = JSON.parse(body).token; self.emit(':ask', '指示内容は、' + name + 'ですね。あなたのアクセストークンは、' + token); }); }).on('error', function(e) { self.emit(':tell', "通信に問題が発生しました"); });

投稿2018/04/11 02:22

moroheia

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問