
シェア:
Benjamin AronovはVonageの開発者支援者です。彼はRuby on Railsのバックグラウンドを持つ実績のあるコミュニティ・ビルダーです。Benjaminは故郷であるテルアビブのビーチを楽しんでいる。テルアビブを拠点に、世界最高のスタートアップの創設者たちと出会い、学ぶことができる。技術以外では、完璧なパン・オ・ショコラを求めて世界中を旅するのが好き。
n8nとVonage MCPツールで5ノードのAI WhatsAppレセプショニストを構築
このAI WhatsAppレセプショニストは、n8nとVonage MCPツールを搭載しており、Airbnbのゲストとのやり取りを自動化するのに役立ちます。
はじめに
Airbnbの運営は(あるいはどんな小さなホスピタリティの運営でも)、ゲストからの質問と同じサイクルになりがちだ。Wi-Fi、チェックアウト時間、駐車場、そして時には緊急ですぐに対応しなければならないような質問もある。このチュートリアルのゴールは、WhatsApp上にAIレセプショニストを構築することで、このワークロードを効率化することだ。このAIレセプショニストは、定型的な質問には自動的に答え、深刻な問題はSMSや音声通話であなたにエスカレーションし、Google Sheetに過去の会話を簡単に記憶しておくことができる。ワークフロー自体は軽量で、5つのコアn8nノードといくつかのヘルパーを使うだけだ。
これを可能にするために、自動化エンジンとAIエージェントの実行環境の両方としてn8nを使用します。 Vonage MCPツーリングサーバーがWhatsApp、SMS、アウトバウンド音声通話のための単一のエンドポイントを提供します。小さな Renderデプロイメントは、n8nをこれらのMCPツールに接続するブリッジをホストし、Google Sheetsは、プロパティとゲストの履歴のための簡単なデータベースとして機能します。OpenAIのモデルは、メッセージを解釈し、エスカレーションするタイミングを決定し、適切なタイミングで適切なツールを呼び出すことで、すべてを結びつける。
最終的には、短期レンタル以外にも再利用できる柔軟なパターンを手に入れることができる。同じワークフローは、ホテルのフロントデスク、レストランの予約、ITヘルプデスクのトリアージなど、入ってくるメッセージに自動応答が必要な場合もあれば、人間によるエスカレーションが必要な場合もあるような状況でも機能する。
TL;DR:このワークフローの このワークフローのクイックスタートガイドは Vonage Community GitHub にあります。.
A user receives and replies to a WhatsApp message sent via Vonage and n8n, showcasing real-time two-way messaging in an AI-powered receptionist workflow.
1.前提条件
Verify WhatsAppビジネスアカウント(WABA)
Vonage API アカウント
2.Vonageアプリケーションの作成
VonageのAPIにアクセスするためには、WhatsApp、SMS、Voice通話が可能なVonage Applicationを作成する必要があります。
アプリケーションを作成するには アプリケーションの作成ページでアプリケーションの名前を定義します。
Webhooksを使用するAPIを使用する場合は、秘密鍵が必要です。Generate public and private key "をクリックすると、自動的にダウンロードが始まります。この鍵は紛失すると再ダウンロードできません。この鍵は紛失しても再ダウンロードできません。 private_<あなたのアプリID>.key.この鍵はAPIコールの認証に使用できます。 注意:アプリケーションを保存するまで、キーは機能しません。
必要な機能(Voice、Messages、RTCなど)を選択し、必要なWebhook(イベントURL、応答URL、受信メッセージURLなど)を提供します。これらはチュートリアルで説明します。
保存してデプロイするには、"Generate new application "をクリックして設定を確定します。これでアプリケーションはVonage APIで使用する準備が整いました。
Vonageアプリケーションの設定
Voice CapabilitiesとMessages Capabilitiesの両方を有効にする必要があります。Voiceの場合は、オンにしてフィールドを空白のままにしておくことができます。メッセージについては、ウェブフックを有効にする必要があります。今はプレースホルダーを追加してください。後でn8nの値で更新します:
インバウンドURLを https://placeholder.com/inbound.
ステータスURLを https://placeholder.com/status.
次に WhatsAppビジネス(WABA) 外部アカウントをリンク" タブをクリック:
Viewing the n8n-AI-Assistant application in the Vonage dashboard with an active WhatsApp number linked.
持っていることを確認する:
アプリケーションID
秘密鍵(ファイルとしてダウンロード
.keyファイルとしてダウンロード)APIキー/シークレット
次にこれらをMCPツーリング・サーバーに送り込む。
3.Vonage MCP BridgeをRenderで展開する
n8nがMCPサーバーに到達するために呼び出すことができるシンプルでパブリックなHTTPエンドポイントを期待しているため、Renderが登場しました。Vonage MCPサーバー自体はローカルプロセスとして実行され、パブリックゲートウェイと一緒に出荷されていないので、インターネット上に置くために小さな "ブリッジ "サービスが必要です。Renderはそのブリッジをホストしてくれます。小さなNode.jsアプリを実行し、バックグラウンドでVonage MCPサーバーを起動し、n8nが接続できる単一の/mcp URLを公開します。
ホスティングと信頼性について
このチュートリアルでは、MCPブリッジにRenderの無料プランを使用しています。その場合、n8nの MCPクライアントが一時的に "Could not connect to your MCP server "と表示されることがあります。この場合、Renderで新しいデプロイ/再起動を手動でトリガーするか、サービスを有償の "Starter "ティアにアップグレードすることで解決できます。お好みであれば、同じNode.jsブリッジをRailway、VPS(Virtual Private Server)、または独自のインフラストラクチャなどの他のホスト上で実行することもできます。n8nの唯一の要件は、パブリックHTTPS /mcpエンドポイントです。
提供されたブループリントを使用して、新しいRenderサービスをデプロイします:
このブループリントから このブループリントから新しいサービスを立ち上げる.
新しいサービスの名前を追加します(例:mcp_tooling-n8n_whatsapp_receptionist)。
ブランチはメインを選択。
すべてを新規サービスとして作成を選択し、VonageアプリケーションからVonage認証情報を入力します: VONAGE_API_KEY, VONAGE_API_SECRET, vonage_application_id, vonage_private_key64, vonage_virtual_number, vonage_whatsapp_number.
注意 vonage_private_key64は ではありません。単にダウンロードされたあなたの秘密鍵ではありません。これはbase64でエンコードされた秘密鍵です。 秘密鍵をENV変数に変換するツール.
注2: この MCP_AUTH_TOKENは、n8n MCPクライアントがリクエストの認証に使用するトークンです。安全で複雑なトークンを使用することをお勧めします。 強力なパスワードジェネレーター.
Render MCP Bridgeが稼動したら、その公開URLをコピーしてください(例、 https://your-mcp-bridge.onrender.com/mcp).これは、n8nワークフロー内でMCPクライアントノードをセットアップするステップ5で必要になります。
Create a new Render deployment by copying the Blueprint and filling in your configurations.
4.Google SheetsでモックDBを作成する
この例では、素早くアクセスできるデータベースのためにGoogleスプレッドシートを使用します。Google Sheetsは共同作業によく使われ、技術者でないユーザーにもなじみがある。しかし、これはSupabaseやMongoDB、あるいはどんなSQLデータベースにも簡単に拡張できる。ここでは2つのシートを使います: プロパティと ゲスト.
>> を開き、複製を作成する。 データベースの例の複製を作成する。
物件用Googleシートの作成
プロパティはAirbnbのリスティングです。いくつかのカラムがあり、典型的な現実世界のシナリオをシミュレートしています: チェックイン, チェックアウト, wifi_ssid (ネットワーク名)wifi_password, ハウスルール, 緊急時の指示そして 地域のヒント
上記のGoogle Sheetに例があります。
ゲスト用Googleシートの作成
データベースは、ゲストに関するコンテキストを保存するシンプルなオブジェクトを持つことになります: ゲスト番号, 履歴- これはチャットの履歴をバックアップします、 last_seen_at, last_issue, last_severity(低|中|高)。
最初はこのシートは空である。実行されるたびにn8nから更新される!
5.n8nワークフローの構築
さて、いよいよn8nにノードを追加していきます。あなたの n8nクラウドダッシュボードを開き、新しいワークフローを作成する。MCPアクセスを有効にする:
Enable MCP access for your new n8n assistant.
以下は、使用するノードの概略である:
1. ウェブフック- Vonageアプリケーションに接続し、Vonage(この場合はWhatsApp)からの受信データを受信します。
2. Googleシート- Get Rows関数により、AIエージェントにメッセージを渡す前に、ゲストに関するコンテキストを取得することができます。
4. AIエージェント- 受付の頭脳として働くAIエージェントと、それが活用できるVonage MCPツール。
5. コードノード- AIエージェントから返されたデータを解析し、DBを更新する準備をするための小さなJavaScriptスクリプト。
6.Google Sheets - このインタラクションを保存するには、追加または行の更新関数を使用します。
Webhookノードの接続
トリガーとして "On webhook call "を選択します。これにより、新しい ノードが追加されます。を追加します:
メソッド POST
パス /インバウンド
認証:なし
ワークフローをアクティブにし、n8nから プロダクションURL例えば
https://your-n8n.app/webhook/inbound
あなたの Vonageアプリケーション(例:n8n-AI-Assistant):
インバウンドのウェブフックURLをこのプロダクションURLに更新してください。
メソッドが POST.
Vonage番号にWhatsAppメッセージを送信すると、n8nが起動します。n8nでノードを開き、"Listen for test event "をクリックしてテストできます。 「テストイベントを聞く"ただし、Vonage ダッシュボードのURLを本番用URLではなく、テスト用URLに更新する必要があります。
Configuring an inbound webhook in n8n to receive WhatsApp messages via the Vonage Messages API.
Airbnbの物件情報をDBから取得
次に、Webhook ノードを新しい Google Sheetsノード.まず、Googleアカウントに接続します。次に シートの行を取得 操作を選択し、設定します:
ノード名: get_property_info
これは、AIエージェントが探すツール名になるので重要です。
ドキュメント n8n Airbnb DBの例
更新せずにコピーした場合(またはカスタムシート名)。
シート 特性
フィルターフィルタを追加し、カラムを guest_numberに設定し、値を
{{ $json.body.from }}に設定するか、入力パネルからドラッグして からを選択します。DBが空でもフローが実行されるように、Settingsの "Always Output Data "を有効にする。
n8nでAIエージェントをセットアップする
次のステップは AIエージェントノード.このノードが受付のロジックの核となる。Vonageからの受信WhatsAppメッセージとゲストとの会話履歴を受け取り、プロパティからプロパティ情報を取得します。 プロパティシートからプロパティ情報を取得し、その状況が日常的なものなのか、ホストに連絡する必要があるものなのかを判断します。その判断に基づき、適切なMCPツールを呼び出します。通常はWhatsAppで返信しますが、必要に応じてSMSを送信したり、音声通話を発信したりします。ワークフロー内の他の全ては、基本的にこのノードにコンテキストをフィードするか、このノードが生成したものを記録する。
AIモデルの設定
まず、AI Agentノードをワークフローにドラッグして接続し、設定します:
プロンプト(ユーザーメッセージ)のソース:以下で定義
プロンプト(ユーザーメッセージ):
Guest phone number: {{ $('Inbound Message').item.json.body.from }}
Guest message: {{ $('Inbound Message').item.json.body.text }}
Guest message channel: {{ $('Inbound Message').item.json.body.channel }}
Guest name (if available): {{ $('Inbound Message').item.json.body.profile?.name || '' }}
Host number: {{ $('Inbound Message').item.json.body.from }} <!-- or a fixed host number later -->注意: ここでは、テストを簡単にするため、ホストとゲストの両方に同じ番号を使用しています。本番環境では、これを実際のホスト番号に置き換えてください。
システムメッセージ システムメッセージGitHubより
システムプロンプトは、モデルを賃貸物件のWhatsApp/SMS受付係に変身させます。各ゲストからのメッセージに対して、必要に応じてGoogleシートから適切な物件詳細を検索し、問題の深刻度(低/中/高)を判断し、常にWhatsApp(SMSフェイルオーバー付き)を介してゲストに短くフレンドリーな返信を返します。舞台裏では、中程度または高重度の問題についてはホストに通知または電話することもでき、2つのシンプルなタグ(LAST_ISSUEとLAST_SEVERITY)を追加することで、n8nはゲストに内部ロジックを公開することなく、何が起こっているかを追跡することができる。
Vonage MCP ツールの追加
モデルが選択されると、次のステップはエージェントが呼び出すことができるツールを与えることです。最初のツールは MCPクライアントノードノードです。正しい MCP エンドポイントを設定し、ベアラ・トークンを に設定したのと同じ値に設定します。に配置したのと同じ値に設定し、接続をテストします。利用可能なツールが表示されるはずです。 whatsapp-send-text-with-sms-failover, SMSそして アウトバウンドボイスメッセージ.エージェントはこれらの機能を利用し、実際のメッセージや通話を送信することができます!
get_property_infoツールの追加
つ目のツールは グーグル・シート・ノードから読み取る プロパティシートから読み込むノードです。 get_property_infoにリネームし、AIエージェントのコンフィギュレーションにツールとしてアタッチします。これにより、Wi-Fiの使用方法、チェックインとチェックアウトの時間、ハウスルール、緊急時の案内などの詳細をゲストが要求するたびにモデルが取得できるようになります。
コードノードによるエージェント出力のクリーンアップ
AIエージェントが終了すると、その出力は1つの大きな文字列となります:ゲストに向けた返答と2つの構造化されたタグライン(LAST_ISSUEとLAST_SEVERITY)です。Google Sheetsに何かを書き戻す前に、それをクリーンアップして、会話のきちんとした記録を組み立てたいと思います。タグ行を取り除き、タグ値を抽出し、履歴として保存するシンプルなテキストを作成します。
ノードを追加する JavaScriptのコード」ノードを追加するを追加します。コピー&ペースト JavaScriptスニペットをコピーして貼り付けます。
スニペット
エージェントの生出力を読み込む。
撤退 最終号と last_severityをを取り出す。 LAST_*の行にある。
クリーンな を生成します。文字列 (ゲストが実際に見たもの) を生成します。
このインタラクションをゲストの既存の履歴に追加します。
追加 last_seen_atと ゲスト番号を追加し、次のノードがゲスト行をアップサートできるようにします。
ゲストシートが必要とするすべてのフィールドを持つ、ゲストとのインタラクションごとに1つの項目です。
ゲストシートに新しいデータを書き込む
これで、そのメモリーを永続化できる。最後の Googleシートノードを追加し、アクションは "Append or update row in sheet "を選択します。このノードの仕事は、現在のゲストのチャット履歴を見つけ、最新のやり取りで更新することです。これがゲストの最初のメッセージの場合、新しい行を作成します。
ノードの構成:
リソース資料内シート
操作行の追加または更新
ドキュメント: (一覧から) n8n Airbnb DBの例またはシート名
シート(リストより) ゲスト
マッピング列モード:各列を手動でマッピング
マッチするカラム: ゲスト番号
送信する値:
ゲスト番号 (を使う):
{{ $('Inbound Message').item.json.body.from }}の歴史がある:
{{ $json.history }}last_seen_at:
{{ $json.last_seen_at }}last_issue:
{{ $json.last_issue }}last_severity:
{{ $json.last_severity }}
それで終わりだ!終わりです!
アプリのテスト
n8nのワークフローがすべてセットアップされたので、バーチャルレセプションをテストすることができます!WhatsAppを送信し、様々なケースをテストしてみましょう。テストデータはあえてパリに2件、ニューヨークに1件あります。エージェントをだましてみてください。システムプロンプトはあくまでも出発点です!
ログをチェックすれば、何が起こっているのかが順を追ってわかります。
n8n execution log showing a successful end-to-end run of an AI-powered WhatsApp receptionist workflow using OpenAI, Google Sheets, and the Vonage MCP Client.
結論
コアとなるワークフローが整っていれば、このエージェントを様々な方向に拡張することができます!複数の物件をよりよくサポートするためのスマートな次のステップは、受付担当者に プロパティIDを与え、ゲストの番号またはシートの別のフィールドに基づいたリレーションを作成することです。
また、Googleシートだけでなく、より堅牢なデータベース(Airtable、Notion、またはPostgres)をエージェントの動作を変えることなくプラグインすることもできます。ホスト側では、クリーニングのスケジューリング、サポートチケットの作成、キーボックスの指示のようなワンタイムリンクの送信のようなタスクのための追加ツールの導入は簡単です。また、より多くのチャンネルでゲストに対応したい場合、MCPサーバーは、RCS、Viber、MMSを同じワークフローに取り込む経路をすでに提供しています。その時点で、一つのエージェントが一つの統一されたロジックでWhatsApp、SMS、そして音声エスカレーションを処理することができます。
しかし、すべてのメッセージングとボイスアクションのためのたった1つのMCPエンドポイント、一握りのn8nノード、そしてデータベースとしてのシンプルなGoogleシートだけで、中小企業が今日実際に使用できる、現実的で拡張可能なAIレセプショニストを構築することができます。
このセットアップをクローンして、あなた自身のユースケース(レストラン、クリニック、サロン)に適応させるなら、どんなものを作るのかぜひ見てみたい!
ご質問がある場合、またはあなたが作っているものを共有したい場合は、こちらをクリックしてください。
登録する 開発者ニュースレター
フォローする X(旧ツイッター)最新情報
チュートリアルを見る YouTubeチャンネル
LinkedInの LinkedIn の Vonage デベロッパーページ
開発者体験の向上にご協力ください。以下の 「開発者の声」フィードバックにご協力ください
最新の開発者向けニュース、ヒント、イベント情報をお届けします。