質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

SMS

SMS(Short Message Service)は電話、ウェブやモバイルのコミュニケーションシステムで規格化されたテキストのコミュニケーションサービスです。固定回線間や携帯電話間で短い文章のやりとりをすることを可能にしています。

Twilio

Twilioは電話・SMS・ビデオ・チャット・SNS連携等、様々なコミュニケーションチャネルの融合を可能とするクラウドコミュニケーションAPIサービスです。 従来は大規模な設備投資が必要だった電話と連携したシステムも、汎用的な開発言語で容易に開発が可能となり、 様々なコミュニケーションチャネルを活用したシステム構築が可能となります。

Q&A

1回答

1623閲覧

firebase functions 実行エラー

koronekosan

総合スコア0

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

SMS

SMS(Short Message Service)は電話、ウェブやモバイルのコミュニケーションシステムで規格化されたテキストのコミュニケーションサービスです。固定回線間や携帯電話間で短い文章のやりとりをすることを可能にしています。

Twilio

Twilioは電話・SMS・ビデオ・チャット・SNS連携等、様々なコミュニケーションチャネルの融合を可能とするクラウドコミュニケーションAPIサービスです。 従来は大規模な設備投資が必要だった電話と連携したシステムも、汎用的な開発言語で容易に開発が可能となり、 様々なコミュニケーションチャネルを活用したシステム構築が可能となります。

0グッド

0クリップ

投稿2020/08/17 22:24

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

データの取得からSMSの送信まで全て非同期処理だから途中で終了しているのではないでしょうか。

JavaScript

1let query = citiesRef.where('non_response_date', '>', 0).get()

ここから先をasync/awaitで書き直してみたらどうでしょうか。

JavaScript

1async function doQuery() { 2 let query = await citiesRef.where('non_response_date', '>', 0).get(); 3 for (let doc of query.docs) { 4 ... 5 await sendSMS(emergency_contact); 6 } 7} 8 9async function sendSMS(emergency_contact) { 10 ... 11 await client.messages.create(params); 12} 13 14doQuery();

投稿2020/08/18 06:36

yagi_

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koronekosan

2020/08/18 12:27

async/awaitで書き直してみましたがエラーは変わらずでした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問