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

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

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

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

2回答

1831閲覧

Firebaseで作成したLINE Botがローカル環境で動かない

Natsu.mikan

総合スコア6

Firebase

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2019/11/06 00:05

編集2019/11/06 00:06

FirebaseでLINE Botをつくっています。

「firebase serve --only functions, hosting」 を実行し、「http://localhost:5000/webhook」を開いたのですが、

Cannot GET /xxx/us-central1/app/webhook

と表示されてしまいます。

コードは下記です。

index.ts

JavaScript

1'use strict'; 2 3const functions = require('firebase-functions'); 4const express = require('express'); 5const line = require('@line/bot-sdk'); 6 7const config = { 8 channelSecret: 'channelSecret', 9 channelAccessToken: 'channelAccessToken' 10}; 11 12const app = express(); 13 14app.post('/webhook', line.middleware(config), (req: any, res: any) => { 15 console.log(req.body.events); 16 Promise 17 .all(req.body.events.map(handleEvent)) 18 .then((result) => res.json(result)) 19 .catch((result) => console.log('error!!!')); 20}); 21 22const client = new line.Client(config); 23 24async function handleEvent(event: any) { 25 if (event.type !== 'message' || event.message.type !== 'text') { 26 return Promise.resolve(null); 27 } 28 29 return client.replyMessage(event.replyToken, { 30 type: 'text', 31 text: event.message.text 32 }); 33} 34 35exports.app = functions.https.onRequest(app);

firebase.json

{ "hosting": { "public": "./", "rewrites": [{ "source": "/webhook", "function": "app" }], "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ] } }

package.json

{ "name": "functions", "scripts": { "lint": "tslint --project tsconfig.json", "build": "tsc", "serve": "npm run build && firebase serve --only functions --project golfure", "shell": "npm run build && firebase functions:shell", "start": "npm run shell", "deploy": "firebase deploy --only functions", "logs": "firebase functions:log" }, "engines": { "node": "8" }, "main": "lib/index.js", "dependencies": { "@line/bot-sdk": "^6.8.2", "express": "^4.17.1", "firebase-admin": "^8.6.0", "firebase-functions": "^3.3.0", "ngrok": "^3.2.5" }, "devDependencies": { "tslint": "^5.12.0", "typescript": "^3.2.2", "firebase-functions-test": "^0.1.6" }, "private": true }

よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

そもそもLANをWANの概念が解ってないですね。
結論は「localhost」はLAN内のアドレスでLINEBOTはWAN上にサービスがありますからLINEBOT側は「localhost」にアクセスできません。
ngrokを使う必要が有ります。
「LINEBOT ngrok」でググると例があるんで―

投稿2020/11/21 01:41

tonkun4os

総合スコア321

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

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

0

app.post('/webhook' で POST のリクエストを想定しているのに、 GET でリクエストを送っているからではないでしょうか。

投稿2019/11/07 09:50

aaharu

総合スコア441

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問