
Firebase Gen 2のクラウド機能でSMSメッセージを送信する
所要時間:6 分
概要
チュートリアル FirebaseファンクションでSMSを送受信する方法というチュートリアルがあります。ただし、Google Cloud コンソールと Vonage Messages APIの代わりに SMS API.
セットアップ
始めるにはいくつかのアイテムが必要だ:
Firebaseのセットアップ
Firebaseプロジェクトを Firebase コンソール.
プロジェクトに名前を付け、後でターミナル/コマンドプロンプトから選択するプロジェクトIDを生成する。
project creation
グーグル・アナリティクスをお使いの場合は、このプロジェクトは行いません。
Google Analytics
Wait for project creation
注:従量課金プランを選択することを忘れないでください。そうしないと、"Error:エラー:このコマンドを実行するには、プロジェクト<project_name>がBlaze(従量課金)プランである必要があります。必須API artifactregistry.googleapis.com は、アップグレードが完了するまで有効にできません。" といったエラーが表示されます。
コマンドプロンプト/ターミナルからFirebase CLIをインストールします:
コマンドプロンプト/ターミナルからログインし、プロジェクトを初期化する:
以下のように、様々なオプションを選択するよう促されます。
?このディレクトリにどのFirebase機能を設定しますか?Spaceを押して機能を選択し、Enterを押して選択を確定します。Realtime Database:Realtime Database用のセキュリティルールファイルを設定し、デフォルトインスタンスを設定します:Cloud Functions ディレクトリとそのファイルを設定します。
?オプションを選択してください:既存のプロジェクトを使用しますか?このディレクトリのデフォルトのFirebaseプロジェクトを選択してください:vonage-sms-project (vonage-sms-project)(ここで、あなたが作成したプロジェクトの名前を選択してください。私の場合は、vonage-sms-project (vonage-sms-project)です。
?プロジェクトでRealtime Databaseをまだ初期化していないようですね。設定しますか?(Y/n)Yを選択
?デフォルトのリアルタイムデータベースインスタンスの場所を選択してください:
ユーエスセントラル1
❯ europe-west1
アジア-南東1
私の場合、Europe-west1が一番近い。
?リアルタイムデータベースセキュリティルールにはどのファイルを使用しますか?(database.rules.json)
?どの言語を使ってクラウド・ファンクションを書きたいですか?(矢印キーを使用)
JavaScript(JavaScriptを選ぶ)
タイプスクリプト
パイソン
?ESLintを使用してバグを検出し、スタイルを強制しますか?(y/N)
?npmで依存関係をインストールしますか?(Y/n)Yesを選んでください。そして、依存関係がインストールされるのを待ちます。
これで、必要なフォルダとファイルがセットアップされます。
Google Cloud APIを有効にする
Google Cloud Consoleから、 Cloud Functions、Cloud Build、Artifact Registry、Cloud Run、Logging、Pub/Sub APIを有効にする。.
最初の機能インバウンドSMS
IDE/コードエディターから関数を作成し、デプロイする方法を紹介しよう。あるいは Google Cloud Functionsダッシュボードから関数を作成することもできます。.
開く 関数/index.jsを開き、表示されているコードをすべて削除し、以下のコードを追加して、受信したSMSメッセージをキャプチャし、Firebase Realtime Databaseに記録します。
const { onRequest } = require("firebase-functions/v2/https");
const admin = require("firebase-admin");
admin.initializeApp();
exports.inboundSMS = onRequest(async (request, response) => {
params = request.body;
await admin.database().ref("/msgq").push(params);
response.sendStatus(200);
});
関数を functions フォルダからデプロイします。
ファンクションがデプロイされると、次のセッションでVonageセットアップのWebhookに追加するために必要なHTTP URLが与えられます。次のようなものです。 https://us-central1-vonage-project.cloudfunctions.net/inboundSMSまたは https://inboundsms-njjebckulq-uc.a.run.app.
注:すぐに必要になるのでメモしておくこと。メモしていない場合は Googleクラウドファンクションの概要ページで、inboundSMS関数をクリックすると、一番上にURLがあります。
function URL
Vonageセットアップ
Vonage API Account
To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.
This tutorial also uses a virtual phone number. To purchase one, go to Numbers > Buy Numbers and search for one that meets your needs.
Vonage Dashboardから、あなたの番号のためのWebhook URLをデプロイメントからのファンクションエンドポイントURLに設定します。以下のようになります。 https://us-central1-vonage-project.cloudfunctions.net/inboundSMSまたは https://inboundsms-njjebckulq-uc.a.run.app.
Message capabilities webhook
をインストールします。 Vonage Server SDK for Node.js (@vonage/server-sdk) をインストールします。.
次に、依存関係リストにdotenvを追加する。
npm install dotenv --saveという名前のファイルを追加します。 .envという名前のファイルを追加します。 Vonage Dashboardという名前のファイルを追加し、以下の環境変数を追加します:
Vonage Dashboard: API Key and API Secret
Vonageを functions/index.jsファイルに追加します。
const { Vonage } = require("@vonage/server-sdk");
const vonage = new Vonage({
apiKey: VONAGE_API_KEY,
apiSecret: VONAGE_API_SECRET,
applicationId: VONAGE_APPLICATION_ID,
privateKey: VONAGE_PRIVATE_KEY
});このアプリケーションに電話番号がリンクされていることを確認してください。
購入したバーチャル電話番号にSMSを送信します。
ダッシュボードでFirebase Realtimeデータベースにアクセスすると msgqノードが更新されています。
第二の機能SMS送信
送信関数を追加します。 Vonage Messages APIを使ったSMSメッセージFirebase Realtime データベースに記録されます。
const { SMS } = require("@vonage/messages");
const { onValueCreated } = require("firebase-functions/v2/database");
exports.sendSMS = onValueCreated("/msgq/{pushId}", async (message) => {
const { from, text } = message.data.val();
vonage.messages
.send(
new SMS({
text: text,
to: from,
from: "Vonage APIs",
})
)
.then((resp) => console.log(resp))
.catch((err) => console.error(err));
});
functionsフォルダから関数を再度デプロイします。
購入したバーチャル電話番号にSMSを送信します。
ダッシュボードでFirebase Realtimeデータベースにアクセスすると msgqノードが更新されています。
に新しいメッセージが追加されると、この関数が起動する。 /msgqに新しいメッセージが追加されると、この関数が起動します。この関数は Vonage Messages API を使ってユーザに応答します。送信されたメッセージはFirebase Realtimeデータベースに記録されます。
注意:"Error: secretOrPrivateKey must be an asymmetric key when using ES256 "というエラーメッセージが表示された場合は、秘密鍵が有効であり、正しくインポートされていることを確認してください。
試してみる
デプロイ後、Vonageアプリケーションにリンクされた番号にSMSメッセージを送信してテストしてください。
Firebase Real Time Database
結論
これで Firebase Cloud Functions Gen 2 と Vonage Messages API を使って SMS メッセージを送受信できるようになりました!これでこのチュートリアルの手順はすべて完了です。 完全なコードは GitHub で見ることができます。.
このブログ記事についてご質問がありますか?私たちの VonageコミュニティSlackまたは にメッセージください。.
