前提・実現したいこと
firebase functions で定刻になるとSMSを自動送信する処理を実行していますが、以下のエラーが発生して、定刻になっても処理が実行されません。
nodeで実行するとSMSha送信されます。
発生している問題・エラーメッセージ
Error: Process exited with code 16 at process.on.code (/layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/invoker.js:271:38) at process.emit (events.js:198:13) at process.EventEmitter.emit (domain.js:448:20) at process.exit (internal/process/per_thread.js:168:15) at Object.logAndSendError (/layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/logger.js:37:9) at process.on.err (/layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/invoker.js:268:22) at process.emit (events.js:198:13) at process.EventEmitter.emit (domain.js:448:20) at emitPromiseRejectionWarnings (internal/process/promises.js:140:18) at process._tickCallback (internal/process/next_tick.js:69:34) ロ
該当のソースコード
var admin = require("firebase-admin"); process.env["FIREBASE_CONFIG"] = "[FIREBASE_CONFIG]" process.env["GCLOUD_PROJECT"] = "[GCLOUD_PROJECT]" var serviceAccount = require("[serviceAccount ]"); // Initialize the app with a service account, granting admin privileges admin.initializeApp({ credential: admin.credential.cert(serviceAccount), databaseURL: "https://xxxxx" }); var name = "" var tel = "" var date = "" const db = admin.firestore(); let citiesRef = db.collection('user_info'); let query = citiesRef.where('non_response_date', '>', 0).get() .then(snapshot => { if (snapshot.empty) { console.log('No matching documents.'); return; } snapshot.forEach(doc => { if ((doc.data().non_response_date >= doc.data().date) && (doc.data().non_response_date <= doc.data().date + 3)){ name = doc.data().name tel = doc.data().tel date = doc.data().non_response_date //SMS送信 if (doc.data().emergency_contact_1_number != ''){ console.log('emergency_contact1:',doc.data().emergency_contact_1_number); sendsms(doc.data().emergency_contact_1_number); const userRef = db.collection('log_sms').doc() userRef.set({ userid: doc.id, contact: '1', non_response_date: doc.data().non_response_date, emergency_contact_number: doc.data().emergency_contact_1_number, sendtime: admin.firestore.FieldValue.serverTimestamp(), }) } if (doc.data().emergency_contact_2_number != ''){ console.log('emergency_contact2:',doc.data().emergency_contact_2_number); sendsms(doc.data().emergency_contact_2_number); const userRef = db.collection('log_sms').doc() userRef.set({ userid: doc.id, contact: '2', non_response_date: doc.data().non_response_date, emergency_contact_number: doc.data().emergency_contact_1_number, sendtime: admin.firestore.FieldValue.serverTimestamp(), }) } if (doc.data().emergency_contact_3_number != ''){ console.log('emergency_contact3:',doc.data().emergency_contact_3_number); sendsms(doc.data().emergency_contact_3_number); const userRef = db.collection('log_sms').doc() userRef.set({ userid: doc.id, contact: '3', non_response_date: doc.data().non_response_date, emergency_contact_number: doc.data().emergency_contact_1_number, sendtime: admin.firestore.FieldValue.serverTimestamp(), }) } } }); }) .catch(err => { console.log('Error getting documents', err); }); const functions = require('firebase-functions'); exports.shedulesendsms = functions .pubsub.schedule('30 6 * * *') .timeZone('Asia/Tokyo') .onRun((context) => { console.log('This will be run every day at 9:00 AM Eastern!'); return null; }); function sendsms(emergency_contact){ const accountSid = '[accountSid ]'; const authToken = '[authToken ]'; const client = require('twilio')(accountSid, authToken); emergency_contact = '+81' + emergency_contact.substring(1) //SMSを送る client.messages .create({ body: '[body], from: '+[tel]', to: emergency_contact }) .then(message => console.log('+81' + emergency_contact)); };
試したこと
firebase と twilio のアップデートをしてみましたが解消されません
補足情報(FW/ツールのバージョンなど)
node10
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/18 12:27