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

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

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

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

Node.js

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

Q&A

解決済

1回答

376閲覧

LINE APIにおけるテキストごとのレスポンス分け

Giovanni

総合スコア10

LINE Messaging API

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

Node.js

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

0グッド

0クリップ

投稿2019/06/29 06:12

編集2019/07/01 09:48

LINE Botで送られてきたテキストごとに送信するメッセージを変えたいのですが、
現状のコードだと全てのテキストに反応してしまいます。
現状は以下のようなコードになっています。

どこにifを使えば良いのかご教授願います!

const express = require("express");
const path = require("path");
const PORT = process.env.PORT || 5000;
const line = require("@line/bot-sdk");
const config = {
channelAccessToken: process.env.ACCESS_TOKEN,
channelSecret: process.env.SECRET_KEY
};
const client = new line.Client(config); // 追加

express()
.use(express.static(path.join(__dirname, "public")))
.set("views", path.join(__dirname, "views"))
.set("view engine", "ejs")
.get("/", (req, res) => res.render("pages/index"))
.get("/g/", (req, res) => res.json({ method: "こんにちは、getさん" }))
.post("/p/", (req, res) => res.json({ method: "こんにちは、postさん" }))
.post("/hook/", line.middleware(config), (req, res) => lineBot(req, res))
.listen(PORT, () => console.log(Listening on ${PORT}));

function lineBot(req, res) {
res.status(200).end();
const events = req.body.events;
const promises = [];
for (let i = 0, l = events.length; i < l; i++)
{
const ev = events[i];
promises.push(
lineBot(ev)
);
}

Promise.all(promises).then(console.log("success"));

}

function lineBot(ev) {
return client.replyMessage(ev.replyToken,
{
"type": "flex",
"altText": "this is a flex message",
"contents":

ーー追記ーー
参考にさせていただいたサイトは以下になります。
https://qiita.com/TakuTaku04/items/cb71f10669a9e9cbf71b

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

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

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

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

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

papinianus

2019/06/29 11:27

lineの設定で宛先としているパスはどこですか?/でしょうか?/hook/でしょうか?
Giovanni

2019/07/01 09:27

すみません、、色々調べたのですが知識不足でわかりません、、 express()内は全く理解ができていないです。
papinianus

2019/07/01 09:34

えと。ラインの開発者サイトでアドレスいれるやん?そこってどんな感じやの?example.comとか?example.com/hook/とか?あとexpressわからんならさ、参考にしたサイト出してくれんと、どう持っていきたいかわからんやん?
papinianus

2019/07/01 09:44

ごめんやけど絶対に解決できるとは断言できんから、↑を質問に追記してくれると、他の人が答えてくれるかもわからんし。
Giovanni

2019/07/01 09:48

ありがとうございます。
guest

回答1

0

ベストアンサー

echomanを書き換えた方の関数の名前をlineBotという重複した名前にするのをやめてください。

その関数の中でev.message.textにユーザのテキストメッセージがあるので、そこでifやswitchをすればメッセージに応じた処理ができます

投稿2019/07/01 09:54

papinianus

総合スコア12705

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

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

Giovanni

2019/07/01 10:25 編集

やってみます!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問