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

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

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

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

Google Apps Script

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

JavaScript

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

Q&A

解決済

1回答

824閲覧

LINE API キーワードを送信しても画像が返ってこない

etrisotoko777

総合スコア25

LINE Messaging API

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

Google Apps Script

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

JavaScript

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

0グッド

0クリップ

投稿2020/03/30 21:18

はてなブログで公開されていた記事を参考にして、
stoneと入力すると「石」関連の画像が返ってくるLINE botをGAS上で作りました。

記事のコードを忠実に書いたのですが、LINEBotから画像が返ってきません。
どのようにすればBotから画像が返ってくるようになるのでしょうか?

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

・公開範囲は「全員・匿名含む」と設定
・修正後は毎回「新規作成」
・LINE側でwebhookを検証すると「成功」と表示
・画像サイズはMessaging APIで指定されているサイズを越えないようにリサイズ

参考記事
http://gilmon.hatenablog.com/entry/2017/01/04/224827

gs

1// LINE DevelopersのChannel Access Tokenを設定 2var channel_access_token = "チャンネルアクセストークン"; 3 4//LINEから呼ばれる関数 5function doPost(e) { 6 var events = JSON.parse(e.postData.contents).events; 7 events.forEach(function(event) { 8 if(event.type == "message"){ 9 lineReply(event); 10 } 11 }); 12} 13//LINEの返信 14function lineReply(e){ 15 var repMes = replyMessage(e); 16 var postData = { 17 "replyToken" : e.replyToken, 18 "messages" : repMes 19 }; 20 var options = { 21 "method" : "post", 22 "headers" : { 23 "Content-Type" : "application/json", 24 "Authorization" : "Bearer" + channel_access_token 25 }, 26 "payload" : JSON.stringify(postData) 27 }; 28 UrlFetchApp.fetch("https://api.line.me/v2/bot/message/reply", options); 29} 30//返信する画像を準備 31function replyMessage(e) { 32 if(e.message.text=="stone"){ 33 var rand = Math.floor( Math.random() * 8) + 1; 34 var imageurl; 35 switch(rand){ 36 case 1: 37 //クリスタル 38 imageurl = "https://dl.dropboxusercontent.com/s/ah07no9lz62oxan/s-citrine-3201605_640.jpg" 39 break; 40 case 2: 41 //モアイ 42 imageurl = "https://dl.dropboxusercontent.com/s/59mchjmh023kddj/s-rapa-nui-1195928_640.jpg" 43 break; 44 case 3: 45 //ラシュモア山 46 imageurl = "https://dl.dropboxusercontent.com/s/g54v9wyjtvcbq82/s-mount-rushmore-1868140_640.jpg" 47 break; 48 case 4: 49 //顔のついた石 50 imageurl = "https://dl.dropboxusercontent.com/s/g54v9wyjtvcbq82/s-mount-rushmore-1868140_640.jpg" 51 break; 52 case 5: 53 //石神井公園 54 imageurl = "https://dl.dropboxusercontent.com/s/j2eb5yu0saoyjq4/200px-Bocca_della_verita.jpg" 55 break; 56 case 6: 57 //ゴールド 58 imageurl = "https://dl.dropboxusercontent.com/s/j2eb5yu0saoyjq4/200px-Bocca_della_verita.jpg" 59 break; 60 case 7: 61 //ウルル 62 imageurl = "https://dl.dropboxusercontent.com/s/c35deyomdin2uy5/s-uluru-2058380_640.jpg" 63 break; 64 case 8: 65 //ワイオミング州のデビルタワー 66 imageurl = "https://dl.dropboxusercontent.com/s/h3ggdz0ugne2kbg/s-wyomings-devils-tower-3915790_640.jpg" 67 break; 68 } 69 var repMes = [ 70 { 71 "type" : "image", 72 "originalContentUrl" : imageurl, 73 "previewImageUrl" : imageurl 74 } 75 ]; 76 return(repMes) 77 } 78};

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

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

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

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

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

CHERRY

2020/03/30 22:45 編集

previewImageUrl で返信していますが、たとえば、メッセージ(文字列)として URL を送信してみると文字は送信できるのでしょうか? 画像の問題が返信の問題かの切り分けを行う
etrisotoko777

2020/03/30 23:20

ありがとうございます。 元のコードを var repMes = [ { "type" : "text", "text" : imageurl } ]; と変えてLINEメッセージ[stone]を送ってみましたが、botからの返信は来ませんでした。
guest

回答1

0

自己解決

参考にさせていただいたコードをコピペしたら動作したので、
自分の書いたコードとの違いをキーワード、写真URLを変えつつ比較していきました。

結論をいうと、キーワードに設定していたstoneが原因でした。
日本語で「おみくじ」と設定した場合には上手くいきました。
尚、他の日本語キーワードに直しても同様に上手く動作しました。

gs

1function replyMessage(e) { 2 //"stone"とすると上手くいかないので"日本語キーワード"にする 3 if(e.message.text=="stone"){ 4 var rand = Math.floor( Math.random() * 8) + 1; 5 var imageurl;

動作はするようになったので一旦解決したものの、
なぜ英語だと上手くいかなかったのか理解していません。
この点について教えていただけると幸いです。

投稿2020/03/31 03:26

etrisotoko777

総合スコア25

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問