お世話になります。
LINEWORKSのトークをKintoneに保存したいと思い
上記記事の方法を試してみたのですがうまく動作しません。
手順に従いNode.jsでコードを作成し、AWS Lambdaにアップロードをしました。動作しない原因に関係するかわかりませんが、Lambda上のテストで以下のようなエラーが出ております。
“errorType”: “TypeError”,
“errorMessage”: “Cannot read property ‘accountId’ of undefined”,
“trace”: [
“TypeError: Cannot read property ‘accountId’ of undefined”,
" at Runtime.exports.handler (/var/task/index.js:27:38)“,
" at Runtime.handleOnce (/var/runtime/Runtime.js:66:25)”
参考記事のAWS Lambda以外の部分の設定(Kintoneの設定、API Gateway、LINEWORKSのbotの設定)は全て行っています。
また、参考記事ではrequestを使用した方法は非推奨とのことでしたので、別記事を参考にaxiosを使用した方法も試してみたのですが同じエラーが発生し、動作しませんでした。(現在は参考記事の状態に戻しております。) https://zenn.dev/nononosuque/articles/d05f6990f17848
参考記事とソースコードはほぼ同じ内容でAWS Lambdaにアップロードしております。
(Kintoneのログイン情報等一部追加しております。)
Kintoneを使い始めたばかりで、かつJavascriptの知識も無いもので、いろいろと原因を検索しながら進めていたのですが、解決方法がわからず投稿させていただきました。
よろしくお願い致します。
/*
* kintone_LINEWORKS sample program
* Copyright (c) 2018 Cybozu
*
* Licensed under the MIT License
*/
var request = require('request');
// kintone用パラメータ
// ドメイン、アプリID、APIトークンを記述してください
var DOMAIN = ' ******.cybozu.com';
var URL = 'https://' + DOMAIN + '/k/v1/record.json';
var APP_ID = '**';
var API_TOKEN = ' *******';
var LOGIN_NAME = ' ******';
var PASSWORD = ' ******';
var AUTH_VALUE = new Buffer(LOGIN_NAME + ':' + PASSWORD).toString('base64');
var headers = {'X-Cybozu-Authorization': AUTH_VALUE};
var headers = { 'X-Cybozu-API-Token': API_TOKEN };
exports.handler = function(event, context) {
// eventにLINE WORKSのcallbackデータが入ってる
var event_data = JSON.parse(event.body);
// LINE WORKSの発言者とトーク内容をそれぞれ取得する
var lineuser = event_data.source.accountId;
var linemessage = event_data.content.text;
// kintoneのJSON形式に当てはめる
var body_post = {
'app': APP_ID,
'record': {
'Name': {
'value': lineuser
},
'Content': {
'value': linemessage
}
}
};
var options = {
url: URL,
method: 'POST',
headers: headers,
'Content-Type': 'application/json',
json: body_post
};
//レコードをPOST
request(options, function(error, response, body) {
context.done(null, {text: "kintone POST success!"});
});
};