https://s3.amazonaws.com/a.storyblok.com/f/270183/61175/afaa4f909d/sms-cloud-functions-firebase-gen2.png

Firebase Gen 2のクラウド機能でSMSメッセージを送信する

最終更新日 March 19, 2024

所要時間:6 分

概要

チュートリアル FirebaseファンクションでSMSを送受信する方法というチュートリアルがあります。ただし、Google Cloud コンソールと Vonage Messages APIの代わりに SMS API.

セットアップ

始めるにはいくつかのアイテムが必要だ:

Firebaseのセットアップ

Firebaseプロジェクトを Firebase コンソール.

プロジェクトに名前を付け、後でターミナル/コマンドプロンプトから選択するプロジェクトIDを生成する。

project creationproject creation

グーグル・アナリティクスをお使いの場合は、このプロジェクトは行いません。

Google AnalyticsGoogle Analytics

Wait for project creationWait for project creation

注:従量課金プランを選択することを忘れないでください。そうしないと、"Error:エラー:このコマンドを実行するには、プロジェクト<project_name>がBlaze(従量課金)プランである必要があります。必須API artifactregistry.googleapis.com は、アップグレードが完了するまで有効にできません。" といったエラーが表示されます。

コマンドプロンプト/ターミナルからFirebase CLIをインストールします:

npm install -g firebase-tools

コマンドプロンプト/ターミナルからログインし、プロジェクトを初期化する:

firebase login firebase init

以下のように、様々なオプションを選択するよう促されます。

?このディレクトリにどの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 フォルダからデプロイします。

firebase deploy --only functions

ファンクションがデプロイされると、次のセッションでVonageセットアップのWebhookに追加するために必要なHTTP URLが与えられます。次のようなものです。 https://us-central1-vonage-project.cloudfunctions.net/inboundSMSまたは https://inboundsms-njjebckulq-uc.a.run.app.

注:すぐに必要になるのでメモしておくこと。メモしていない場合は Googleクラウドファンクションの概要ページで、inboundSMS関数をクリックすると、一番上にURLがあります。

You can find the URL right at the top.function URL

Vonageセットアップ

Vonage Dashboardから、あなたの番号のためのWebhook URLをデプロイメントからのファンクションエンドポイントURLに設定します。以下のようになります。 https://us-central1-vonage-project.cloudfunctions.net/inboundSMSまたは https://inboundsms-njjebckulq-uc.a.run.app.

Inbound SMS URL added to inbound and statusMessage capabilities webhook

をインストールします。 Vonage Server SDK for Node.js (@vonage/server-sdk) をインストールします。.

npm install @vonage/server-sdk

次に、依存関係リストにdotenvを追加する。

npm install dotenv --save

という名前のファイルを追加します。 .envという名前のファイルを追加します。 Vonage Dashboardという名前のファイルを追加し、以下の環境変数を追加します:

Vonage Dashboard, red arrows showing where to find the API Key and the API Secret.Vonage Dashboard: API Key and API Secret

VONAGE_API_KEY= VONAGE_API_SECRET= VONAGE_APPLICATION_ID= VONAGE_PRIVATE_KEY=

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フォルダから関数を再度デプロイします。

firebase deploy --only functions

購入したバーチャル電話番号にSMSを送信します。

ダッシュボードでFirebase Realtimeデータベースにアクセスすると msgqノードが更新されています。

に新しいメッセージが追加されると、この関数が起動する。 /msgqに新しいメッセージが追加されると、この関数が起動します。この関数は Vonage Messages API を使ってユーザに応答します。送信されたメッセージはFirebase Realtimeデータベースに記録されます。

注意:"Error: secretOrPrivateKey must be an asymmetric key when using ES256 "というエラーメッセージが表示された場合は、秘密鍵が有効であり、正しくインポートされていることを確認してください。

試してみる

デプロイ後、Vonageアプリケーションにリンクされた番号にSMSメッセージを送信してテストしてください。

Realtime database containing three nodes under msgqFirebase Real Time Database

結論

これで Firebase Cloud Functions Gen 2 と Vonage Messages API を使って SMS メッセージを送受信できるようになりました!これでこのチュートリアルの手順はすべて完了です。 完全なコードは GitHub で見ることができます。.

このブログ記事についてご質問がありますか?私たちの VonageコミュニティSlackまたは にメッセージください。.

シェア:

https://a.storyblok.com/f/270183/400x400/3f6b0c045f/amanda-cavallaro.png
Amanda Cavallaroデベロッパー・アドボケイト