はじめまして、Node.js初心者です。
前回に続き、GoogleHomeからSlackに投稿したいです。
前提・実現したいこと
GoogleHome→Dialogflow→APIGateway→AWSLambda→Slack
参考にしたサイト様
Dialogflow入門
AWS API Gateway+LambdaでSlackにメッセージをPOSTする(前編)
Google Home と Lambda で「"あ"のつくポケモンなーんだ」
DialogflowのFulfillmentでAPIGatewayをあてており、
Lambdaでこのコードを入れたところエラーがでます。
Dialogflow側では問題なくJSONが送られている状態です。
発生している問題・エラーメッセージ
{ "errorMessage": "RequestId: f396756f-0a52-11e8-967f-79dda54dff68 Process exited before completing request" }
該当のソースコード
JavaScript
1console.log('Loading function'); 2 3const https = require('https'); 4const url = require('url'); 5const slack_url = process.env.SLACK_WEBHOOK_URL; 6const slack_req_opts = url.parse(slack_url); 7slack_req_opts.method = 'POST'; 8slack_req_opts.headers = {'Content-Type': 'application/json'}; 9 10exports.handler = function(event, context, callback) { 11 if (!event.text) { 12 callback('called without event.text'); 13 return; 14 } 15 var req = https.request(slack_req_opts, function (res) { 16 if (res.statusCode === 200) { 17 callback(null, 'posted to slack'); 18 } else { 19 callback('status code: ' + res.statusCode); 20 } 21 }); 22 23 req.on('error', function(e) { 24 console.log('problem with request: ' + e.message); 25 context.fail(e.message); 26 }); 27 28 // メッセージの編集 29 const parameters = JSON.parse(event.body).result.parameters; 30 var message = parameters.date + parameters.building + parameters.request; 31 var slack_text = message; 32 33 req.write(JSON.stringify({text: slack_text})); 34 35 req.end(); 36}; 37 38
試したこと
上記の部分を下記に変更すれば問題なく動くのですが、ただ単にLambdaのテストで設定したテキストがSlackに送られる状況です。
JavaScript
1 // メッセージの編集 2 const parameters = JSON.parse(event.body).result.parameters; 3 var message = parameters.date + parameters.building + parameters.request; 4 var slack_text = message;
JavaScript
1 // メッセージの編集 2 var message = (event.text); 3 var slack_text = message;
補足情報
エラーコードをググって見たところ、処理が途中で終了してしまうと発生してしまうようで、
CloudWatchからエラーを探ったところ、
SyntaxError: Unexpected token u in JSON at position 0 at Object.parse (native) at exports.handler (/var/task/index.js:29:29)
とでています。調べると
Uncaught Syntaxerror: Unexpected token u
コールバックと引数が一致していない?のでしょうか
ここからハマってしまいわからない状況です。
ご回答ご教授願います、よろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/08 02:35 編集
退会済みユーザー
2018/02/07 01:47
2018/02/07 09:03
2018/02/07 10:03
退会済みユーザー
2018/02/07 11:06
2018/02/08 02:34 編集
退会済みユーザー
2018/02/08 06:20
2018/02/13 03:31