LINE bot を作成してみたく、
wikipediaのapiを使用して
メッセージを送ると、wikiの中身を調べて回答してくれるlinebotを
作成しています。
調べ物してくれるLINE BOTを作った【GAS】【LINE Message API】
LINE Botをサーバーレスで開発!Google Apps ScriptとLINE Messaging APIを使ってチャットボットを作ってみた
をトレースしながら作成しています。
完成したと思ったのですが、
メッセージ送信すると、
『解読お不可能』(設定した内容)は返答きますが、
wikiの中身が返ってきません。
返答は来るので、
設定には問題なさそうで、
コードの中身が違っているのかと思ってます。
3つのコードを参考に
変更したり試しても反応がなく困っています。
どこが間違っているのが、教えていただけないでしょうか。
gs
1var CHANNEL_ACCESS_TOKEN = '***********'; 2var line_endpoint = 'https://api.line.me/v2/bot/message/reply'; 3var simple_wikipedia_api = 'http://wikipedia.simpleapi.net/api'; 4 5// メッセージを受けて返信する 6function doPost(e) { 7 8 //リプライ用のトークンを取得 9 var reply_token= JSON.parse(e.postData.contents).events[0].replyToken; 10 if (typeof reply_token === 'undefined') { 11 return; 12 } 13 14 //メッセージを取得 15 var user_message = JSON.parse(e.postData.contents).events[0].message.text; 16 17 var reply_messages = ['解読お不可能']; 18 if (/とは??$/.test(user_message)) { 19 var q = user_message.match(/(.*)とは??$/)[1]; 20 var url_and_body = getWikipediaUrlAndBody(q); 21 if (url_and_body !== null) { 22 reply_messages = [ 23 '「' + q + '」' + 'が知りたいんだね。', 24 url_and_body.body.substr(0, 140) + '...', 25 '長い(-_-)\nこの先は下記からどうぞ(˘ω˘)', 26 url_and_body.url, 27 ]; 28 } 29 } 30 31 32 33 34 35 var messages = reply_messages.map(function (v) { 36 return {'type': 'text', 'text': v}; 37 }); 38 39 UrlFetchApp.fetch(line_endpoint, { 40 'headers': { 41 'Content-Type': 'application/json; charset=UTF-8', 42 'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN, 43 }, 44 'method': 'post', 45 'payload': JSON.stringify({ 46 'replyToken': reply_token, 47 'messages': messages, 48 }), 49 }); 50 return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON); 51} 52 53function getWikipediaUrlAndBody(q) { 54 var url = simple_wikipedia_api + '?keyword=' + encodeURIComponent(q) + '&output=json'; 55 var res = JSON.parse(UrlFetchApp.fetch(url)); 56 if (res !== null) { 57 return {'url': res[0].url,'body': res[0].body}; 58 } else { 59 return null; 60 } 61}
回答1件
あなたの回答
tips
プレビュー