回答編集履歴

2 AWSコンソールでのテストについて追記しました

退会済みユーザー

退会済みユーザー

2018/02/03 01:59  投稿

`context.succeed`と`context.fail`は Node.js ランタイム v0.10.42 のコンテキストメソッドです。
[以前の Node.js ランタイム v0.10.42 を使用する - AWS](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/nodejs-prog-model-using-old-runtime.html#nodejs-prog-model-oldruntime-context-methods)
Lambda のランタイムが v4.3 あるいは v6.10 の場合は、`callback`を使います。
[Lambda 関数ハンドラー (Node.js) - AWS](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/nodejs-prog-model-handler.html#nodejs-prog-model-handler-callback)
「試したこと」から考えると、おそらくこちらのランタイムを使っているのでしょう。
したがって、↓のように修正すれば、動くはずです。
```javascript
exports.handler = function(event, context, callback) {
 if (!event.text) {
   callback('called without event.text');
   return;
 }
 var req = https.request(slack_req_opts, function (res) {
   if (res.statusCode === 200) {
     callback(null, 'posted to slack');
   } else {
     callback('status code: ' + res.statusCode);
   }
 }
 // 以下略
});
```
```
また、Lambda のコンソールで関数のテスト(今回のケースではおそらくここが成功しません)、API Gateway のコンソールで API のテストがそれぞれできますので、今後 GoogleHome → Dialogflow → APIGateway → Lambda → Slack のようにつなげる場合は、右から順に動作テストをしていくと、原因がしぼれるので解決しやすくなります。
1 event.textをチェックする部分を忘れていたので修正しました

退会済みユーザー

退会済みユーザー

2018/02/03 01:50  投稿

`context.succeed`と`context.fail`は Node.js ランタイム v0.10.42 のコンテキストメソッドです。
[以前の Node.js ランタイム v0.10.42 を使用する - AWS](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/nodejs-prog-model-using-old-runtime.html#nodejs-prog-model-oldruntime-context-methods)
Lambda のランタイムが v4.3 あるいは v6.10 の場合は、`callback`を使います。
[Lambda 関数ハンドラー (Node.js) - AWS](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/nodejs-prog-model-handler.html#nodejs-prog-model-handler-callback)
「試したこと」から考えると、おそらくこちらのランタイムを使っているのでしょう。
したがって、↓のように修正すれば、動くはずです。
```javascript
exports.handler = function(event, context, callback) {
 if (!event.text) {  
   callback('called without event.text');  
   return;  
 }  
 var req = https.request(slack_req_opts, function (res) {
   if (res.statusCode === 200) {
     callback(null, 'posted to slack');
   } else {
     callback('status code: ' + res.statusCode);
   }
 }
 // 以下略
});
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る