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

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

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

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

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

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

Q&A

2回答

1774閲覧

LINEbotについて

jamjam0929

総合スコア7

LINE Messaging API

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

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

JavaScript

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

0グッド

0クリップ

投稿2018/03/19 10:52

Linebot作成に関する質問です。gasでコードを書いてます。
function doPost(e) {
var contents = e.postData.contents;
var obj = JSON.parse(contents);
var events = obj["events"];
for (var i = 0; i < events.length; i++) {
if (events[i].type == "message") {
reply_message(events[i]);
}
}
}

function reply_message(e) {
if (e.message.type == "text") {
var input_text = e.message.text;
var reply_text = "";
if (input_text == "血液型") {
reply_text = "A型";
} else if (input_text == "星座") {
reply_text = "ふたご座";
} else if (input_text == "干支") {
reply_image = "https://〜画像のurl ;
} else {
reply_text = "他の質問してね";
}
var postData = {
"replyToken": e.replyToken,
"messages": [{
"type": "text",
"type": "image",
"text": reply_text,
"image": reply_image,
"originalContentUrl" : reply_image,
"previewImageUrl" : reply_image,
}]
};
}
var options = {
"method": "post",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer " + CHANNEL_ACCESS_TOKEN
},
"payload": JSON.stringify(postData)
};
UrlFetchApp.fetch("https://api.line.me/v2/bot/message/reply", options);
}

このようなコードを書いたところ、干支と入力するとちゃんと画像が送られてくるのですが、血液型や星座と入力しても何も返ってきません。
どこが間違っているのか教えてください

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/04/06 04:01

質問の投げっぱなしはやめましょう。
guest

回答2

0

干支と入力するとちゃんと画像が送られてくるのですが、血液型や星座と入力しても何も返ってきません。

どこがおかしいのかは明白です。
以下のように、postData.messages[0].typeが上書きされているためです。

javascript

1var postData = { 2 "replyToken": e.replyToken, 3 "messages": [{ 4 "type": "text", 5 "type": "image", // ←上書きされる 6 "text": reply_text, 7 "image": reply_image, 8 "originalContentUrl" : reply_image, 9 "previewImageUrl" : reply_image, 10 }] 11};

if文で分岐させているようですので、最低限、その際にpostData.messages[0].typeを「text」か「image」に設定すれば良いと思いますよ。
以下、修正サンプルですが、動作確認等はしていませんので参考までに。

javascript

1/*省略*/ 2var postData = { 3 "replyToken": e.replyToken, 4 "messages": [] 5}; 6//messages成形用オブジェクト 7var obj = {type:"text"};//デフォルトで「text」 8 9if (input_text == "血液型") { 10 obj.text = "A型"; 11} else if (input_text == "星座") { 12 obj.text = "ふたご座"; 13} else if (input_text == "干支") { 14 reply_image = "https://〜画像のurl"; 15 obj.type = "image"; 16 obj.image = reply_image; 17 obj.originalContentUrl = reply_image; 18 obj.previewImageUrl = reply_image; 19} else { 20 obj.text = "他の質問してね"; 21} 22postData.messages = [obj]; 23/*省略*/

蛇足ですが、コードはコードブロックで囲み、インデントしていただいたほうが良いです。
可読性がとても悪いです。

投稿2018/03/19 14:36

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

テキストを返す場合とイメージを返す場合とで、postDataの内容を変えてやる必要がありそうです。
確認取っておらず不確かです、すみません。

投稿2018/03/19 11:19

kazto

総合スコア7196

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

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

jamjam0929

2018/03/19 11:59

ご回答ありがとうございます。 イメージの部分を消してテキストのみにすると、血液型や星座に正しく返答してくれるのですが、イメージ部分を追加すると、テキストのコード内容が破棄されてイメージの部分のみ作動します。イメージの方が優先度が高いとかあるのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問