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

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

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

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Node.js

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

Q&A

1回答

1348閲覧

Azure custom vision をLinebotを連携する際にReferenceError: handleEvent is not definedとなる。

some_t

総合スコア0

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Node.js

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

0グッド

0クリップ

投稿2021/09/09 02:02

編集2022/01/12 10:55

前提・実現したいこと

Azure custom vision をLinebotを連携させ自動判定botを作成したい
が、 500 Internal Server Error と表示され応答が得られない。

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

ngrokで一旦、実装中
linebot側にwebhookは接続できているように見える。
が、Line側から画像やテキストを送信するがリプライが得られない。

node server.js のエラー

エラーメッセージ [ { type: 'message', message: { type: 'image', id: '14714803144557', contentProvider: [Object] }, timestamp: 1631151476849, source: { type: 'user', userId: '隠します' }, replyToken: '6068ca2c7d4f4155ad01be337c5cf3ca', mode: 'active' } ] ReferenceError: handleEvent is not defined at /Users/私の名前/mylinebot/server.js:104:34 at Layer.handle [as handle_request] (/Users/私の名前/mylinebot/node_modules/express/lib/router/layer.js:95:5) at next (/Users/私の名前/mylinebot/node_modules/express/lib/router/route.js:137:13) at _middleware (/Users/私の名前/mylinebot/node_modules/@line/bot-sdk/dist/middleware.js:43:13) at processTicksAndRejections (internal/process/task_queues.js:95:5)

ngrokのエラー

POST /webhook 500 Internal Server Error

該当のソースコード

'use strict'; //必要なものは都度 npm i してください const express = require('express'); const line = require('@line/bot-sdk'); const PORT = process.env.PORT || 3000; const cv = require('customvision-api'); const fs = require('fs'); const bodyParser = require('body-parser'); const Request = require('request'); const line_config = { channelSecret: '隠します', channelAccessToken: '隠します' }; const app = express(); const client = new line.Client(line_config); app.get('/', (req, res) => res.send('Hello LINE BOT!(GET)')); //ブラウザ確認用(無くても問題ない) app.post('/webhook', line.middleware(line_config), (req, res) => { console.log(req.body.events); // botに送られる画像にアクセスするための設定 const options = { url: `https://api.line.me/v2/bot/message/${req.body.events[0].message.id}/content`, method: 'get', headers: { 'Authorization': 'Bearer ' + line_config.channelAccessToken, }, encoding: null }; Request(options, function(error, response, body) { if (!error && response.statusCode == 200) { //画像を保存します fs.writeFileSync(`/tmp/` + req.body.events[0].message.id + `.jpg`, new Buffer(body), 'binary'); console.log('file saved'); const filePath = `/tmp/` + req.body.events[0].message.id + `.jpg`; const cv_config = { "predictionEndpoint": "隠します", "predictionKey": "隠します" }; cv.sendImage( filePath, cv_config, (data) => { console.log(data); let tagName = data.predictions[0].tagName; let probability = data.predictions[0].probability; client.replyMessage(req.body.events[0].replyToken, { type: 'text', text: tagName + 'の確率、' + probability }); } ); } }) Promise .all(req.body.events.map(handleEvent)) .then((result) => res.json(result)); }) app.listen(PORT); console.log(`Server running at ${PORT}`); ソースコード

試したこと

ngrok側の連携確認
他のコードでのLinebotの連携確認

各種アクセストークンAPIキーなどが間違っていないか確認

補足情報(FW/ツールのバージョンなど)

node v14.17.6
ngrok v2.3.40

完全に初心者です。もし見当違いのことを書いていたら申し訳ございません。
御助言いただければ幸いです。

ここにより詳細な情報を記載してください

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

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

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

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

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

guest

回答1

0

app.listen(PORT);
の直前に、下記のコードが抜けていないでしょうか?

js

1function handleEvent(event) { 2 if (event.type !== 'message' || event.message.type !== 'text') { 3 return Promise.resolve(null); 4 } 5 6 return client.replyMessage(event.replyToken, { 7 type: 'text', 8 text: event.message.text 9 }); 10}

参照:line-bot-sdk-nodejsのドキュメント

LINEからpostされてきた内容を解析するために必要です。

投稿2021/09/23 02:56

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問