
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 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または にメッセージください。.