https://a.storyblok.com/f/270183/1368x665/e245ed97e7/26jan_dev-blog_conference-call-python.jpg

Pythonで電話会議システムを構築する

最終更新日 February 5, 2026

所要時間:8 分

このチュートリアルでは、Pythonを使って電話会議システムを構築する方法を学びます。 Vonage Voice API を使います。.電話会議とは、3人以上が接続された1つの電話通話のことです。電話会議は、2人以上の人が同期して、グループテキストチャットよりも即座に通信する必要がある場合に便利です。会議通話は、複数の人が直前に計画を変更したり、緊急のグループ決定を行う必要がある場合に便利です。

このチュートリアルが終わるころには、Python FastAPIであるVonageを使った電話会議の実装に成功していることでしょう。 FastAPIアプリと ngrokを使って、ローカルにホストされたサーバーから公衆インターネットへの接続をトンネリングします。

このチュートリアルは、さまざまな読み方や学習スタイルに対応できるように構成されています。各セクションはアトミックな内容になっていますので、どのような順番で読んでもかまいません:

Vonage Voice APIによる電話会議の仕組み

Voice APIを使用した電話会議は、次のように実装されます。 r着信コールの受信.通話相手に音声合成を再生する talkアクションを使用します。 conversationアクションを使用します。 のアクションを使用します。(NCCO)のアクションを使用します。NCCO NCCOは、Voice API が音声通話のフローを指示するために使用する JSON 配列です。言い換えれば、柔軟で洗練された音声アプリケーションを構築するために使用できるビルディングブロックです。このチュートリアルでは、NCCOを TalkConversationアクションを使って電話会議システムを作成します。このフローを使用すると、最初にその番号に電話をかけた人が電話会議を開始し、それ以 降の発信者が電話会議に追加されます。 Conversationを開始し、それ以降の発信者がそれに追加される。詳しくは Voice API ドキュメント.

概要ウェブフック、ウェブアプリ、トンネリング

このチュートリアルを完成させるために、Vonage以外の技術的なコンセプトやツールに頼りますが、それはソフトウェア開発の他の分野で役に立つかもしれません。

Webhookとは?

ウェブフックとは、あるウェブベースのアプリケーションがデータやイベント通知を別のアプリケーションにプッシュする方法のことで、一方のアプリケーションがもう一方のアプリケーションに常にアップデートをポーリングする代わりに、自動的な通信を可能にします。一般的に、これはHTTPリクエストを使ってAPI経由でウェブ上でやりとりすることを意味します。このチュートリアルでは、Webhook を使って、誰かがあなたのバーチャル番号に電話をかけてきたことを Web アプリケーションに通知し、NCCO を返します。 talkconversationアクションを返します。

Python FastAPI Web アプリケーションとは?

FastAPIは、PythonでHTTPベースのサービスAPIを構築するための高性能なWebフレームワークです。FastAPIが他のPython Webフレームワークと異なる点は、Pythonと密接に連携していることです。 Pydanticと密接に連携していることです。この連携により、FastAPIはデータの検証、シリアライズ、デシリアライズを行うことができます。これにより、HTTPボディや送信レスポンスなどの受信リクエストに対して、より宣言的な方法でデータの構造やタイプを指定することができます。また、FastAPI は自動的に OpenAPI仕様も自動的に生成します。これらの機能を組み合わせることで、最新のREST API、マイクロサービス開発、リアルタイム機能を必要とするアプリケーションに特に適しています。

トンネリングとは何か?

このチュートリアルでは、ウェブアプリケーションを作成し、あなたのマシン上でローカルに実行します。ローカルで実行するため、公共のインターネットからアクセスすることはできません。もしウェブアプリにアクセスできなければ、Vonageはウェブフックにリクエストを出すことができません。そこでトンネリングの登場です。トンネリングは、一時的または静的なパブリックURLを通じて、ローカルサーバーをパブリックインターネットに公開します。 ngrokはこのサービスを提供するソフトウェア・プラットフォームだ。

要約すると、Webhookを持つPython FastAPI Webアプリを作成し、ngrokを使用して、パブリックURLへのトンネリング経由でローカルアプリケーションにアクセスできるようにします。

チュートリアル電話会議システムの構築

このチュートリアルでは、FastAPIを使用して、誰かがあなたのバーチャル番号に電話をかけたときにVoice APIがリクエストできるWebhookを定義します。ngrokを使ってWebhookを公衆インターネットに公開します。そして、Vonage を使ってバーチャル番号を購入し、Voice API を使って電話会議を行います。

前提条件

このチュートリアルを完了するには、以下のものが必要です:

チュートリアルのセットアップ

組み立てを始める前に、すべてのことを整理しておこう。

Vonageアカウントの作成と番号の購入

このチュートリアルを完了するには Vonage APIアカウントとバーチャル電話番号が必要です。電話番号は 開発者ダッシュボード.必ず国番号と Voice 機能のある番号を購入してください。

ngrokのアカウントを作成し、インストールする。

Voice APIはWebhookにリクエストできるようにアクセスできなければならないため、エンドポイントのURLは公衆インターネット経由でアクセスできなければなりません。

このチュートリアルでは、そのために ngrok.私たちの チュートリアルをご覧ください。

プロジェクト・ディレクトリの作成

ターミナル・ウィンドウで、以下を実行して新しいプロジェクト・ディレクトリを作成し、その中に移動する:

mkdir vonage-confcall && cd vonage-confcall

建築を始めよう

すべての準備が整ったところで、いよいよビルド開始だ。

ここでは、このチュートリアルを完了するために取る手順の概要を説明します:

  1. Python仮想環境の作成と有効化

  2. 依存関係をインストールする

  3. インバウンドコール用のWebhookエンドポイントを定義し、アプリケーションを実行します。

  4. ウェブフックにアクセスできるようにする

  5. Voice APIアプリケーションを作成し、電話番号をリンクする。

  6. さあ、試してみよう!

1.Python仮想環境を作成し、アクティベートする

Python 仮想環境を使うと、システムの他の部分から隔離された場所にパッケージをインストールすることができます。これはシステム全体の混乱を防ぎ、異なる Python バージョンやパッケージとの衝突を防ぐのに役立ちます。仮想環境については を参照してください。.

プロジェクト・ディレクトリで、以下のコマンドを実行して仮想環境を作成し、仮想環境をアクティブにします:

python3 -m venv venv && source venv/bin/activate

これでターミナルのプロンプトの先頭に (venv).仮想環境を停止するには deactivateコマンドを実行してください。

2.依存関係のインストール

このチュートリアルで必要な依存関係をインストールするために、以下を実行する:

pip install vonage 'fastapi[standard]'

3.インバウンドコール用のウェブフックエンドポイントを定義し、アプリケーションを実行する。

という名前のファイルを作成する。 confcall.pyという名前のファイルを作成する:

import os
from fastapi import FastAPI
from vonage_voice import Conversation, NccoAction, Talk

VOICE_CONFERENCE_NAME = “confcall”

app = FastAPI()

@app.get('/webhooks/answer')
async def answer_call():

	ncco: list[NccoAction] = [Talk(text="Please wait while we connect you to the conference"), Conversation(name=VOICE_CONFERENCE_NAME),]

	return [action.model_dump(by_alias=True, exclude_none=True) for action in ncco]

このコードは /webhooks/answerエンドポイントを作成します。このエンドポイントは Voice API からのリクエストを受信すると NCCOリストを TalkConversationアクションを持つNCCOリストを作成し、反復します。これは、発信者が番号にダイヤルしたときに聞く音声合成と、その発信者を会議(変数 VOICE_CONFERENCE_NAME変数で識別)。Voice APIを使った電話会議については、こちらを参照してください。 こちら.

ターミナル・ウィンドウで実行する:

fastapi dev --port 3000 confcall.py

これは、ポート3000にあなたのウェブフックエンドポイントを持つローカルサーバーをスピンアップします。

4.ウェブフックにアクセスできるようにする

Voice APIは、あなたのWebhookにリクエストできるようにアクセスできなければなりません。そのため、エンドポイントURLは公共のインターネットに公開されていなければならない。これがngrokの目的だ。

別のターミナル・ウィンドウで実行する:

ngrok http 3000

このコマンドは、ローカルサーバーがポート3000にトンネリングする公開URLを生成します。公開転送URLに注意してください:

Forwarding https://0a6ec0a950eb.ngrok-free.app -> http://localhost:3000

ngrokの有料プランを使用していない限り、生成された公開URLは永続的ではないことに注意してください。つまり ngrokコマンドを実行するたびに、結果の URL は変更され、Vonage アプリケーションの設定を更新する必要があります。これを防ぐには、このチュートリアルの間、ngrokを実行したままにしておきます。

5.Voice APIアプリケーションを作成し、電話番号をリンクする。

Voice API アプリケーションを作成する必要があります。ここで言う「アプリケーション」は、このチュートリアルの前半でコードを書いた FastAPI Web アプリケーションとは異なります。この特定のコンテキストでは、アプリケーションは次のとおりです。 Voice API に必要な設定とセキュリティ情報のコンテナです。.

開発者ダッシュボードで 開発者ダッシュボードでアプリケーションを作成する。左側のメニューから Applications ウィンドウに移動し、"Create new application" ボタンをクリックします。アプリケーション作成メニューが開きます。アプリケーションに「confcall」という名前を付けます。

Capabilities] セクションで、[Voice] オプションを切り替えると、テキストフィールドのリストが表示されます。Answer URL "というテキストフィールドに、FastAPI アプリで定義したウェブフックで修正した ngrok 公開 URL を入力します。以下のようになります: https://0a6ec0a950eb.ngrok-free.app/webhooks/answer

新規アプリケーションの作成」ボタンをクリックします。

A screenshot of the "Create an application" menu in the Vonage developer dashboard.アプリケーションの作成が完了したら、利用可能な番号の表にある「リンク」ボタンをクリックして、自分の番号をアプリケーションにリンクさせることができます。

6.さあ、試してみよう!

何人かの友人と、あるいは何人かの異なる電話番号で、Vonageのバーチャル番号に電話して電話会議を始める。Pythonコードで入力したテキストが表示されます。電話会議が開始されると、他の人も同じVonageバーチャル番号に電話をかけることができ、全員が同時に同じ通話でお互いに話すことができるはずです。

これはほんの始まりに過ぎません!Voice APIは、複数参加者の通話を管理するために、司会付き会議の作成、通話開始前の保留音楽の再生、特定の参加者のミュートなど、さらに多くのオプションを提供します。詳しくは下記のドキュメントをご覧ください!

さらに読む

ご質問がある場合、またはあなたが作っているものを共有したい場合は、こちらをクリックしてください。

最新の開発者向けニュース、ヒント、イベント情報をお届けします。

シェア:

https://a.storyblok.com/f/270183/400x400/2c4345217d/liz-acosta.jpeg
Liz Acostaデベロッパー・アドボケイト

Liz AcostaはVonageのDeveloper Advocateです。映画学生からマーケター、エンジニア、デベロッパー・アドボケイトという彼女のキャリア・パスは型破りに見えるかもしれないが、デベロッパー・リレーションズにとってはごく一般的なものだ!ピザ、植物、パグ、Pythonが大好き。