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

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

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

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

Node.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1043閲覧

Linebotで文章中に登録している文字が投稿されたら返す処理

lassieena

総合スコア18

LINE Messaging API

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

Node.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

2クリップ

投稿2019/06/22 03:40

今まで

 私はLinebotをnode.jsと作成しました。linebot自体はできたし、if文を使って登録した文字を言ったら返してくれることはできました。ですが登録した文字が文章中に投稿されると返さないのでそれをなんとかしたいです。
例えばHelloと投稿するとHelloと返すLinebotだとHelloWorldと投稿してもHelloと返してくれるようにしたいのです。
そのようなことができるでしょうか?
できるならどうにすればいいでしょうか?

コード

js

1'use strict'; 2 3const express = require('express'); 4const line = require('@line/bot-sdk'); 5const PORT = process.env.PORT || 8000; 6 7const config = { 8 channelSecret: 'シークレット', 9 channelAccessToken: 'トークン' 10}; 11 12const app = express(); 13 14app.get('/', (req, res) => res.send('Hello LINE BOT!(GET)')); //ブラウザ確認用(無くても問題ない) 15app.post('/webhook', line.middleware(config), (req, res) => { 16 console.log(req.body.events); 17 18 Promise 19 .all(req.body.events.map(handleEvent)) 20 .then((result) => res.json(result)); 21}); 22 23const client = new line.Client(config); 24 25function handleEvent(event) { 26 if (event.type !== 'message' || event.message.type !== 'text') { 27 return Promise.resolve(null); 28 } 29 30 let replyText = ''; 31 if (event.message.text == "Hello" || event.message.text == "こんにちは") { 32 33 const words = [ 34 'Hello', 35 'こんにちは' 36 ]; 37 replyText = words[Math.floor(Math.random() * words.length)]; 38 39 } 40 41 return client.replyMessage(event.replyToken, { 42 43 type: 'text', 44 text: replyText 45 }); 46 47} 48 49// app.listen(PORT); 50(process.env.NOW_REGION) ? module.exports = app: app.listen(PORT); 51console.log(`Server running at ${PORT}`);

最後に

多分if (event.message.text == "Hello" || event.message.text == "こんにちは")この部分を変えるやり方か自然言語解析などの技術を使うと思っています。よろしくお願いします。

開発環境

  • Messaging API
  • Node.js(v10.14.2)
  • now
DrqYuto👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

Helloがメッセージ内に含まれていたら(部分一致したら)Helloを返す、というようにメッセージが部分一致しているかどうかでif文を書くと良いかと思います。

javascript

1if (event.message.text.indexOf("Hello"){ 2 // メッセージ内にHelloが含まれていた時の処理 3}

文字列の比較方法に関しては下記の記事を参考にしてみて下さい。
https://qiita.com/aqril_1132/items/9f69575bfbcf24bdf7b5#%E9%83%A8%E5%88%86%E4%B8%80%E8%87%B4

投稿2019/06/22 03:48

marurunn

総合スコア702

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

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

lassieena

2019/06/22 03:59

ありがとうございます。できました。まだ少し思っていたようにできませんがあとは調べながらやります。
marurunn

2019/06/22 04:09

千里の道も1歩からです。 頑張ってくださいね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問