https://a.storyblok.com/f/270183/1368x665/426e6f5220/python_sdk-updates_v4.png

Vonage Python SDK v4がリリースされました!

最終更新日 November 15, 2024

所要時間:1 分

全面的な書き直しの後、Vonage Python SDKのバージョン4が利用可能になりました。これは以前のSDKの完全な再設計で、すべてのユーザーに改善と拡張を提供します。

この投稿では、主要な機能を説明し、Vonage APIを呼び出すための新しいVonage Python SDKを使い始める方法を紹介します。

v3からの移行

現在SDK v3をお使いで、アップグレードをお考えの方は、以下のガイドをご覧ください。 v3からv4への移行ガイドが参考になるでしょう。

主な特徴

一から書き直したことで、いくつかの重要な構造的な改良を加え、ユーザーがSDKとどのようにやりとりすべきかを決める機会を得ることができました。

以下は、最も重要な変更点のリストである:

  1. 新しいモノレポ構造

  2. リクエストとレスポンスにおけるPydanticデータモデル

  3. インラインドキュメントの改善

  4. エラー処理の改善と情報量の増加

  5. Vonage Video APIをフルサポート

新しいモノレポ構造

Vonage Python SDK の v4 はモノレポ構造を採用し、異なる Vonage API を呼び出すための異なるパッケージはすべて共通のコードを使用しています。トップレベルの vonageパッケージだけをインストールすることで、必要なパッケージをすべて取り込むことができます。これにより、いつ何がリリースされるかをより柔軟に決めることができ、新しいAPIをより早くサポートし、異なるパッケージをより明確にバージョン分けすることができます。

リクエストとレスポンスにおけるPydanticデータモデル

v4 SDKは、以下のものを多用している。 Pydantic データモデルを多用し、Vonage API の呼び出しと結果の解析を容易にしています。

Pydantic モデルを使ってリクエストを形成することで正しい型付けが行われ、Vonage に正しいオブジェクトを渡すことが容易になります。レスポンスは完全にドキュメント化された Pydantic モデルにデシリアライズされるようになり、v3 のように辞書を返すよりも一貫性が増しました。 Pydantic モデルを辞書やJSON文字列に変換するには model.model_dumpmodel.model_dump_jsonで、Pydanticモデルを辞書やJSON文字列に変換することができます。

インライン・ドキュメントの改善

SDK全体のメソッドとデータモデルにDocstringsが追加されました。IDEで新しいオブジェクト/メソッドにマウスオーバーすると、それが何をするのか、どのように呼び出すのかについての情報が表示されます。

Screenshot showing the mouse-over display of a function from the new SDK in Visual Studio CodeThe help you now get in your IDE when using the new SDK

改善されたエラー処理とより多くの情報

v3では、ほとんどのHTTPクライアント・エラーは、一般的な例外である HttpClientError例外を発生させました。v4のエラーはより細かくなり、エラーメッセージはより多くの情報とコンテキストを与えるようになりました。

例えば HttpRequestErrorのような明確なサブタイプが作成された。 AuthenticationError, ForbiddenError, NotFoundErrorなど。HTTPエラーをキャッチしてその self.response属性を使うことでアクセスできる。

from vonage_http_client import HttpRequestError

try:
    response = client.application.create_application(params)

except HttpRequestError as e:
    print(e.message)  # Prints error message
    print(e.response.text)  # Prints the HTTP response text

APIパッケージによっては、特定のケースに対する独自のエラーもある。

常にHTTP 200を返す古いVonage APIについては、新しいAPIと同様の体験を提供するためにエラー処理ロジックが含まれています。

また、HTTPレスポンスに vonage.Vonage.http_client.last_responseで対応するHTTPリクエストにアクセスできるようになりました。 vonage.Vonage.http_client.last_requestでアクセスすることもできるようになった。

Vonage Video APIをフルサポート

すべての Vonage Video API機能のサポートが追加されました。v3 に追加された機能だけでなく、Live Captions、Audio Connector、Experience Composer API での作業を支援する新しいメソッドも追加されました。

これによりSDKはOpenTokパッケージと同等の機能を持つようになりました。OpenTokを使用している場合は、Pythonパッケージではなく、Vonage Python SDKのv4への移行を強くお勧めします。 opentokPythonパッケージではなく、Vonage Python SDKのv4への移行を強くお勧めします。参照 OpenTok -> Vonage Videoマイグレーションガイドを参照してください。

インストール

新しいSDKは新しい仮想環境にインストールする必要があります。コンソールを開き、新しい環境を作成し、以下のコマンドを使用して新しいSDKをpipでインストールします:

# Create the virtual environment
python3 -m venv venv

# Activate the virtual environment in Mac/Linux
. ./venv/bin/activate

# Or on Windows Command Prompt
venv\Scripts\activate

# Install the package
pip install vonage

Vonageに依存する他のパッケージ、たとえば vonage-http-clientもインストールされていることに気づくだろう。

すでに旧バージョンのSDKをお持ちの場合は --upgradeオプションを使用して最新バージョンを入手してください:

pip install vonage --upgrade

はじめに

v4 SDKを使い始めるには、APIメソッドにアクセスするための vonage.Vonageクラスのインスタンスを初期化する必要があります。そして、認証情報を提供する必要があります。これを分解する前に、新しい Vonageアプリケーションを作成する方法を示す完全な例です:

from vonage import Vonage, Auth
from vonage_application import ApplicationConfig

vonage_client = Vonage(auth=Auth(api_key='your_api_key', api_secret='your_api_secret'))

application_data = vonage_client.application.create_application(
    ApplicationConfig(name='My Basic Application')
)

print(application_data)

さて、これを分解してみよう。

認証

使用するVonage APIによって、認証の方法は異なります。API キーとシークレット、または Vonage アプリケーションの ID とそれに対応する秘密鍵を提供する必要があります。これは vonage.Auth.

from vonage import Auth

# API key/secret authentication
auth = Auth(
    api_key='your_api_key', api_secret='your_api_secret'
)

# Application ID/private key authentication
auth = Auth(
    application_id='your_vonage_application_id', private_key='your_application_private_key'
)

これは authのインスタンスを初期化するときに使用できます。 vonage.Vonage.のインスタンスを初期化するときに使用できる。 vonage.Vonageクラスのインスタンスを設定して Vonage API を呼び出すには、次のようにします:

from vonage import Vonage, Auth

# Create an Auth instance
auth = Auth(
    api_key='your_api_key', api_secret='your_api_secret'
)

# Create a Vonage client instance
vonage_client = Vonage(auth=auth)

APIメソッドへのアクセス

Vonage APIに関連するメソッドにアクセスするには、そのクラスのインスタンスを作成し、名前付き属性を使ってアクセスします。 vonage.Vonageクラスのインスタンスを作成し、名前付き属性を使ってアクセスします。 vonage.Vonageのインスタンスがある場合 vonage_clientのインスタンスがある場合は、この構文を使用します:

vonage_client.vonage_api.api_method(...)

# For example:
vonage_client.video.create_session(...)

これは以前のv3と非常によく似ている。

APIデータモデルへのアクセス

各Vonage APIを呼び出すメソッドとは異なり、各APIに固有のデータモデルやエラーは、パッケージを通じてアクセスされるのではなく、特定のAPIパッケージを通じてアクセスされます。 vonageパッケージを通してアクセスされるのではなく、特定の API パッケージを通してアクセスされます。

ほとんどのAPIでは、データモデルとエラーはAPIパッケージのトップレベルからアクセスできる:

from vonage_verify import VerifyRequest, SmsChannel

sms_channel = SmsChannel(to='1234567890')
verify_request = VerifyRequest(
    brand='Vonage', workflow=[sms_channel]
)

response = vonage_client.verify.start_verification(
    verify_request
)
print(response)

しかし、多くのモデルを持つAPIの中には、例えば <vonage_api_package>.modelsパッケージの下にある。 vonage-messages, vonage-voicevonage-video.これらにアクセスするには、単純に <vonage_api_package>.models例えば、Facebookメッセンジャーで画像を送るにはこうする:

from vonage_messages.models import ( 
    MessengerImage, 
    MessengerOptions, 
    MessengerResource,
)

messenger_image_model = MessengerImage(
    to='messenger_id_to',
    from_='messenger_id_from',
    image=MessengerResource(
        url='https://example.com/image.jpg'
    ),
    messenger=MessengerOptions(
        category='message_tag', tag='my_message_tag'
    ),
)

vonage_client.messages.send(message)

先ほどの完全なコード例に戻り、各パーツがどのように動作するかを見てみよう。

# Import objects for the Vonage client
from vonage import Vonage, Auth

# Import a data model
from vonage_application import ApplicationConfig

# Create a Vonage client instance
vonage_client = Vonage(auth=Auth(api_key='your_api_key', api_secret='your_api_secret'))

# Make the request using the ApplicationConfig data model
application_data = vonage_client.application.create_application(
    ApplicationConfig(name='My Basic Application')
)

# Print the response
print(application_data)

概要

以上、Vonage Python SDK v4での新機能、変更点、機能強化について簡単にご紹介しました。 v3からv4への移行ガイドへのリンクはこちらです。へのリンクです。

新しいSDKをお試しいただき、ご感想をお聞かせください。また、Vonageを使ってどのようなものを構築されるのか、楽しみにお待ちください!

その他のリソース

シェア:

https://a.storyblok.com/f/270183/400x400/92109caf6a/max-kahan.png
Max KahanVonage 元チームメンバー

マックスはPythonデベロッパー・アドボケイトであり、通信API、機械学習、デベロッパー・エクスペリエンス、ダンスに興味を持つソフトウェア・エンジニアだ!物理学を専攻していたが、現在はオープンソースのプロジェクトに携わり、開発者の生活をより良くするためのものを作っている。