
シェア:
Juliaは、チュートリアル、ガイド、実用的なリソースを作成することで、仲間の開発者に力を与えることに尽力しています。アウトリーチと教育のバックグラウンドを持つ彼女は、テクノロジーをより身近なものにし、開発者の経験全体を向上させることを目指しています。地域のコミュニティイベントでもよく見かける。
Google SheetsとNode-REDによるグループ通知の送信
注:この記事で説明されているツールや方法の中には、サポートが終了しているものや最新のものではないものもあります。最新の内容やサポートについては 最新記事または ドキュメンテーション
朝7時59分に電話がかかってきて、子供の学校が休みだと告げられたことがあるだろうか?子供を送ってから家に帰る途中、ほんの数キロしか離れていなかったので便利だった。
ほとんどの学校では、現在でもアナウンス作業はマニュアル化されており、たいていの場合はうまくいっている。しかし、学校が雪で休校になるなど予期せぬことが起こると、一握りの人間が何百人もの保護者に電話をかけようと奔走する。7:59の最終連絡に間に合わなかった幸運な人もいるかもしれない。
このチュートリアルでは、Google Sheets と Vonage SMS API を使って、連絡先のリストにプログラムで通知を送信する Node-RED フローを構築します。
ついて行って校長に投げる?雪の日に渋滞に巻き込まれずに済む。
前提条件
始める前に必要なものがいくつかある:
A Node-REDのインストールは、ホスティングされたバージョンであれ、あなたのマシン上であれ
Vonageアカウント
サーバーをインターネットに公開する方法。これは、Node-REDのホスティングバージョンを実行しているか、次のようなトンネリングサービスを使用していることを意味します。 ngrok- こちらをご覧ください。 Node-RED で Ngrok を始めるチュートリアル
エディターの設定
Node-RED Editorを開いたら、以下のパッケージがインストールされていることを確認してください:
ハンバーガーメニューから パレットの管理.の下に既にインストールされているパッケージがないか確認してください。 ノードの下に既にインストールされているパッケージがないか確認し インストールタブから新しいものを入手する。
完了したら、Node-REDを再起動してください!
Googleアカウントの設定
と対話するには Google Sheets APIとやり取りするには、サービスアカウント(インスタンスがあなたの代わりにAPIリクエストを実行するために使用できるID)を使用する必要があります。このアカウントは、インスタンス上で動作するアプリケーションを他の Google Cloud サービスで識別するために使用されます。
この場合、Googleシートを読み込むフローはまずGoogle Sheets APIを認証しなければなりません。
サービスアカウントを作成し、Google Sheets APIへのアクセスを許可する必要があります。次に、Google Sheets API にサービスアカウントの認証情報を渡すようにアプリを更新します。こうすることで、シークレットキーやユーザー情報を埋め込むことなくシームレスに API を認証できるようになります。
ステップ1:新規サービスアカウントの作成
まず、以下のページで新しいプロジェクトを作成します。 サービスアカウントページで新しいプロジェクトを作成します。プロジェクトを作成するには 作成をクリックします。

次に、プロジェクトに名前を付け、組織を選択するか、空白のままにします。 作成.

まもなく、プロジェクトが作成されたことを知らせるポップアップが表示されます。

プロジェクトができたので、サービスアカウントを追加してみよう!


次に、フローの GSheet ノードの認証に使用するキーを作成する必要があります。キーの作成 キーを作成をクリックし JSONを選択します。プロンプトが表示されたら、このファイルを保存する。 完了.

ステップ 2: プロジェクトで Google Sheets API を有効にする
ハンバーガーメニューから APIとサービス-> ダッシュボードを選択し APIとサービスを有効にするボタンをクリックします。次の Google Sheets APIを探し、それを開いて 有効にする.

ステップ3: Googleシートとサービスアカウントの共有
サービスアカウント サービスアカウントページにアクセスし、作成したサービスアカウントに関連するメールアドレスをメモしてください。サービスアカウントとスプレッドシートを共有するには、このメールアドレスを使用する必要があります。

Google SheetsとNode-REDによるグループ通知の送信
スプレッドシートの作成
Googleシートを用意していない場合は、今すぐ作成してください。
Google Sheetsはセル・マトリクス・システムを採用しており、各列はアルファベットで識別され(最初の列はAから始まる)、行には番号が振られている(1が最初の行)。最初の行の2番目の要素を選択したい場合は、次のようになります。 B1.
セルの範囲を選択することもできます。 一番左上のセル:一番右下のセルという記法を使うこともできる。例えば、1行目から5行目の2番目と3番目の要素を選択するには、次のようにします。 B1:C5.
スプレッドシートを作成すると Sheet1タブが表示されます。Sheet1の名前を変更したり、スプレッドシートにワークシートを追加したりできます。
このチュートリアルでは、4列のワークシートを使用します:名前、苗字、電話番号、Eメールの4つの列があるワークシートを使います。
後でフローをテストできるように、アクセスできる電話番号を追加しておいてください。
スプレッドシートの準備ができたら、いよいよサービスアカウントと共有します。

Googleシートからデータを取得する
フローを開始するには GSheetノードをワークスペースに追加します。以下のフィールドに入力し、Google Sheetからデータを取り込むようにこのノードを設定します:
| PARAMETERS | DESCRIPTION |
|---|---|
| Creds | Press the edit button to provide your Service Account key. Remember the JSON file you downloaded earlier? Copy and paste this JSON key in the text field. |
| Method | Select Get Cells from the drop-down menu. This will grab the data from the Google Sheet and pull it into your flow. |
| SpreadsheetID | You can figure out your spreadsheet ID from the URL of your Google Sheet. For example, if the URL is https://docs.google.com/spreadsheets/d/1mmXhj40aeSooxmtku3ma4auLyrHhO8xCSQsklZ1_BU/edit#gid=0, the SpreadsheetID will be the string found in between d/ and /edit: 1mmXhj40aeSooxmtku3ma4auLyrHhO8xCSQsklZ1_BU. Have a look at your spreadsheet URL and find your SpreadSheetID. Then paste this string in the SpreadSheetID field. |
| Cells | Select the cells where your data is located on the spreadsheet. In the example below, this value will be: Sheet1!A2:D30, as the data is found on the worksheet named "Sheet1", in columns A-D on rows 2-30. Note that we're not including the table headers. |
編集が終わったら GSheetノードの編集が終わったら 完了.

次に、Google Sheets APIから取得しているデータを見てみよう。
を追加する。 インジェクトと デバッグノードをワークスペースに追加し、それらを GSheetに接続します。ヒット デプロイをクリックし ノードのノードのボタンをクリックし、デバッグサイドバーを見てください。

のレスポンスが msg.payloadのレスポンスは配列の配列で、各配列には 4 つの要素(1 行分のデータ)があります。
msg.payload 配列の分割
このデータ構造はそれ以上の処理には適していないので、配列の配列を個々の配列に分割してみよう。
幸いなことに、あなたのパレットにはすでにデフォルトのノードがあり、このノードがあなたのために力仕事をしてくれる。
を見つける。 スプリットノードを見つける。 シーケンスの下にある分割ノードを見つける。ワークスペースに追加し GSheetノードの後に デバッグを押してから デプロイを押して、フローを再度実行します。
デバッグ・サイドバーをちらっと見て、応答が個々の配列のシーケンスとして送られてくることに注目してほしい。こうすることで、入ってくるレスポンスを1つずつ処理することができる。

セット・ディレイ
ほとんどの場合、EメールであれSMSであれ、好きなチャンネルであれ、このスピードでメッセージを送りたいとは思わないだろう。
例えば、Vonage SMS API には以下のような制限があります。 スループット制限全てのAPIキーはデフォルトで1秒間に30APIリクエストのスループット制限が設定されています。これに加えて、特定のNumbersから送信する場合にも制限があり、1秒あたり1 SMSに制限されることがあります。
スループットの限界に達していないことを確認するために、以下のような各配列に遅延を設定することをお勧めする。 msg.payload.
これを行うには 遅延ノードを見つける。 関数セクションで見つけ、それを 分割ノードの後に接続します。このノードをダブルクリックしてノードのプロパティを開き、ディレイを1秒に設定します。
メッセージの準備
この時点で、受信者に関する必要な情報はすべて手に入れたので、メッセージに移ろう!
すべての受信者に同じメッセージを送ることもできますが、もう少し個人的なメッセージにするのは常に良いアイデアです。悪い知らせを受けるだけでも十分にイライラするのに、ユーザー体験が悪ければ、それ以上良くなることはない。
ちょっとしたテンプレート化を加えることで、あなたのメッセージに個人的なタッチを与えるだけでなく、よりプロフェッショナルに見せることができる。
テンプレート テンプレートノード 遅延.それをダブルクリックし プロパティを msg.textに設定し、テキスト・フィールドにメッセージを書き込んでください!
このテキストフィールドは テンプレートをサポートしているので、受信者の名前を使った挨拶から始めることができます: {{payload.0}}.この式は msg.payload配列の最初の要素である受信者の名前を参照します。

編集が終わったら 完了を押してから デプロイ.
SMS通知の送信
通知を配信するチャンネルはたくさんありますが、悪天候の場合はSMSが最善の策かもしれません。
SMSメッセージを送信するには、Vonageの SMS APIを使用します。.
までスクロール ネクスモセクションまでスクロールし sendsmsをワークスペースに追加する。 テンプレートノードを追加する。
このノードをダブルクリックして設定し、以下のパラメータを入力してください。以下のパラメータが見つかります。 API KEYと API SECRETの横にある編集ボタンをクリックします。 Vonage認証情報.
| KEY | DESCRIPTION |
|---|---|
| API KEY | Your Vonage API key, shown in your account overview. |
| API SECRET | Your Vonage API secret, shown in your account overview. |
| TO | The number you are sending the SMS to, {{msg.payload.2}} in this case. |
| FROM | The number or text shown on a handset when it displays your message. You can also set a custom alphanumeric FROM value if this feature is supported in your country. |
| TEXT | The content of your message. Use {{msg.text}} to reference the templated message you've created earlier. |
確認する ユニコードがチェックされていることを確認してください。 完了そして デプロイ.

もう一度フローを実行し、デバッグサイドバーにテンプレート化されたメッセージが表示されるのを確認してください。

領収書
SMS APIへのリクエストが成功すると、メッセージオブジェクトの配列が返されます。理想的には、これらのオブジェクトのステータスはそれぞれ 0 で、メッセージの送信予約が成功したことを示します。これらは、先ほどデバッグ・エリアで見たレスポンス・オブジェクトです。
この出力を検査することは、Vonage SMS APIが何をしたかを判断するのに非常に役立つが、メッセージが受信者のハンドセットに届いたという保証はない。雪の日のアラートを送信している間に聞きたいことではありませんよね?
メッセージが目的地に到着すると、キャリアは 配達受領書をVonageに返します!あなたがする必要があるのは、Vonageがこれらのメッセージを転送できるWebhookエンドポイントを設定することです。 デリバリーレシートを設定するだけです。
接続 http入力ノードを httpレスポンスノードに接続する。 デバッグノードを作成し URLフィールドに /receiptを http入力ノードに
次に、Vonage SMS APIに配信レシートの転送先を知らせる必要があります。あなたの API設定の デフォルトSMS設定セクションで配信レシートのデフォルトのウェブフックURLを次のように設定します。 YOUR_URL/receiptに設定します。 変更を保存.

これで、雪の日の通知がリストの全員に届いていることを確認できます!私の言葉を鵜呑みにせず、デバッグサイドバーに移動して、配信レシートに目を通してみてください。

次はどこだ?
エクストラクレジット:Googleシートに領収書を記入する
デバッグ・サイドバーは、必要なすべての洞察を与えてくれるが、データがより整理された形で表示された方が、結果を把握しやすいこともある。
このセクションでは、納品書を別のワークシート(タブ)の同じスプレッドシートに書き戻す方法について説明します。
データを選ぶ
配信レシートには、以下のプロパティが含まれます。 msg.payloadオブジェクトの以下のプロパティが含まれます:
| PROPERTY | DESCRIPTION |
|---|---|
| msisdn | The number the message was sent to. |
| to | Your Vonage number or the SenderID you've set when sending the SMS. |
| network-code | The Mobile Country Code Mobile Network Code (MCCMNC) of the carrier the destination phone number is registered with. |
| messageId | The Vonage ID for this message. |
| price | The cost of this message. |
| status | Will be one of: delivered, expired, failed, rejected, accepted, buffered or unknown, based on where the message is in the delivery process. |
| scts | When the delivery receipt was received from the carrier in YYMMDDHHMM format. For example, 2001011400 is at 2020-01-01 14:00 |
| err-code | The status of the request. Will be a non 0 value in case of an error. See the Delivery Receipt documentation for more details. |
| api-key | Your Vonage API key. |
| message-timestamp | The time when Vonage started to push this Delivery Receipt to your webhook endpoint. |
どのパラメータが自分にとって重要かを決定し、そのパラメータを使用する。 変更ノードを使って msg.payloadをそれぞれのプロパティの配列に設定します。
例えば、タイムスタンプ、受信者番号、ステータス、エラーコード、メッセージIDに興味があるので、次のように設定する。 msg.payloadに以下の 式:
[payload.\`message-timestamp\`, payload.msisdn, payload.status, payload.\`err-code\`, payload.messageId]この 変更ノードを /受信ウェブフックに接続し GSheetノードを追加します。
Googleシートにデータを書き込む
Googleシートに別のワークシート(タブ)を追加し、その名前をメモする。
次に、Node-REDエディタに戻って GSheetノードのプロパティを開きます。ノードプロパティの クレデンシャルドロップダウンから 行を追加を選択します。 メソッドを選択し を入力しを入力し、データを書き込むセル範囲を指定する。私の場合、これは シート2!A:Eワークシート "Sheet2 "のA列からE列の間にデータを分散させたいからです。

準備ができたら 完了をクリックし デプロイをクリックし、再度フローを実行します。
おめでとうございます!納品書がスプレッドシートの2番目のワークシートに記録されました。Googleシートで確認してください!

さらなるハックのアイデア
フローを始めるためにNode-RED Editorを開くのにうんざりしていませんか?いろいろな方法で試してみてください!
を交換してみてください。 ノードをノードを インバウンドSMSウェブフックに置き換えてみてください。あなたのVonage番号にSMSを送信してください!
インバウンドコールも素晴らしいオプションだ!これを発展させて 双方向音声応答メニュー
を使ってユーザーインターフェイスを設定する。 ダッシュボードノード