https://d226lax1qjow5r.cloudfront.net/blog/blogposts/announcing-python-sdk-version-v3/python_sdk_updates.png

Vonage Python SDKのバージョン3.0.0がリリースされました!

最終更新日 August 8, 2022

所要時間:1 分

Tl;dr: Python SDKのv3.0.0がリリースされた!PRのほとんどは将来の拡張のための基礎固めのための内部リファクタリングですが、SDKを最大限に活用するための新機能もいくつか追加しています。

私(マックス)は4ヶ月前にVonageに入社して以来、VonageのコアPython SDKのリファクタリングにかなりの時間を費やしてきた。 コア Python SDK.このリリースでは、技術的負債を減らし、可読性を高めるための改善に焦点を当てました。その結果、v3.0.0 リリースで行われた変更のほとんどは、後にクールな新機能を追加できるように基礎を固めるものでした。

この記事では、私がv3.0.0で行った変更のいくつかと、それぞれの動機について説明する。

概要

主な構造上の変更点は、各APIのメソッドを個別のクラスとモジュールに整理したことです。これにより、どのAPIを呼び出しているのかが明確になり、SDKを通じてリクエストを行う際に、各APIの認証タイプを設定できるようになりました。

重複も多かった。例えば、同じ基本的なPOSTリクエストをいくつかのバリエーションで行うメソッドが、3つの異なるファイルにわたって5つ別々に存在していました。これらすべてのメソッドを1つの関数に統合しました。 requestsパッケージでRESTコールを行う単一の関数に統合した。

v2とv3の主な違いは、多くの非推奨コードが削除されたことで、多くの変更点がある。そのため、いくつかの変更点がある。 Client実際に特定のAPIを呼び出していたクラスメソッドはすべて削除された。また、ずっと前に非推奨となり削除されるべきであった、あるいは追加されることのなかったメソッドもいくつかありました。

クラスにオプションのパラメータを追加しました。 Clientクラスにオプションのパラメータを追加し、Vonage クライアントとのセッション全体のタイムアウト、再試行、プーリングオプションをカスタマイズできるようにしました。また、Pricing APIに新しいメソッドとSMSまたは音声トラフィックに基づいたクエリ機能を追加しました。

見てみよう!

新作を入手する

新しいv3.0.0リリースをダウンロードするには、以下のコマンドを実行するだけだ(仮想環境内で実行したほうがいいかもしれない!):

python3 -m pip install --upgrade vonage

これは、新しいリリースをゼロからダウンロードするか、既存のバージョンのSDKを最新バージョンに更新します。

簡単なメモ

以前のリリースでは Messagesクラスを追加し、メソッドの呼び出し方を変更した。例えば、SMSを送信するには、以前はこうしなければならなかった:

client = vonage.Client(key='my_key', secret='my_secret')
sms = vonage.Sms(client)
sms.send_message([message_details_go_here])

これに対して、今はすべてのAPIコールに対してこれを行うことができる:

client = vonage.Client(key='my_key', secret='my_secret')
client.sms.send_message([message_details_go_here])

この記事で紹介するのは、後者のパターンである。

新しいクラス

当初、すべてのコードは単一の Clientクラスだった。それは、SDKで実行可能なリクエストのすべてのタイプに対応する、すべてのメソッドです。数年前、これらのリクエストを、呼び出すAPIに基づいてクラスにモジュール化するリファクタリングが開始された: Voice, Sms, Verifyなどです。このリファクタリングは完了しませんでした。 Clientクラスのメソッドを非推奨にし number_insight, messages, accountなどの新しいモジュールを追加した。現在では、特定のAPIに関連するメソッドは、その特定のモジュールから呼び出される。

例えば、基本的なナンバーインサイトのリクエストをする場合、このようにできるようになった:

client = vonage.Client(key='my_key', secret='my_secret')
client.number_insight.get_basic_number_insight(number=MY_NUMBER)

そのため、コードはモジュール化されているが、すべて単一のクライアント・クラスからアクセスできるようになっている。V3.0.0では、もともと Clientクラスにあったメソッドは削除されました。

新しいクライアント接続オプション

オブジェクトをインスタンス化する際に Clientオブジェクトをインスタンス化するときに、オプションで max_retries, timeout, pool_connectionsおよび pool_maxsizeオプションのキーワード引数を指定できるようになりました。 Clientを指定できるようになりました。オプションはこのように指定できる:

client = vonage.client(
key='my_key',
secret='my_secret',
timeout=10,  # timeout in seconds
pool_connections=10,
pool_maxsize=10,
max_retries=5
)

これらのオプションは、一度に多くのリクエストを送信する場合や、 リクエストがタイムアウトして再試行されるようにしたい場合に便利です。

デフォルトでは、リクエストはタイムアウトしませんが、秒単位で任意の 値を指定できます。デフォルトの最大再試行回数は 3 回ですが、任意の整数値が有効です。同様に、プール接続数と最大プールサイズにも任意の整数値を指定できます (どちらもデフォルトは10ですが)。

Pricing API の呼び出しにおける新しい価格設定キーワード引数

SMS APIを呼び出す際に、SMSまたはVoiceの価格を表示するかどうかを指定できるようになりました。SMSがデフォルトで、音声の価格はこのようにリクエストできます:

client.account.get_country_pricing(country_code='GB', type='voice')

すべての国の価格を取得するメソッドを追加

我々は get_all_countries_pricingメソッドを Accountメソッドを追加しました。これにより、SMSまたはVoiceのサポートされているすべての国の料金を見ることができます。

client.account.get_all_countries_pricing() # returns sms pricing for all countries
client.account.get_all_countries_pricing(type='voice') # returns voice pricing for all countries

メッセージ検索APIメソッドの削除

メッセージ検索APIはVonageによって削除されたので、それを呼び出すメソッドを削除しました。以下の このAPI仕様に関するお知らせを参照してください。

Vonage は Reports API への呼び出しを移行することを推奨します。これはベータ機能なので、Python SDKではサポートされていません。 このガイドでは Reports API への移行方法を説明しています。

クライアントの自動作成を削除

以前は、APIクラス(たとえば Smsを直接インスタンス化することが可能でした。クライアントを作成し、APIメソッドを呼び出すためにそれを使用することで、誰もがクラスを使用できるようにするためです。

VoiceおよびNumberInsightクラスから非推奨メソッドを削除

クラスには Voiceクラスにはメソッド (initiate_call, initiate_tts_callinitiate_tts_prompt_call) が含まれており、2017年にVonageによって廃止されたエンドポイントを公開していました!これらは現在SDKから削除されています。同様に request_number_insightメソッドが削除されました。 get_{basic/standard/advanced}_number_insightメソッドとエンドポイントに取って代わられたため、メソッドは削除されました。

秘密メソッドの名前の変更

メソッドは Account.delete_secretメソッドの名前を revoke_secretに変更しました。単純なミスマッチがあったので修正しました。

非推奨

私たちは ApplicationV2クラスを非推奨とし Applicationクラスを作成しました。切り替えは簡単です:

ApplicationV2.list_applications() # Old class
Application.list_applications() # New class

つの古いPricing APIメソッド(get_sms_pricingget_voice_pricing) は非推奨のエンドポイントを呼び出すため、非推奨となりました。

最後に、Redact API (redact_transaction) を呼び出すメソッドは、Vonage サーバー SDKs ではサポートされていない開発プレビュー製品であるため、非推奨となりました。

これらはすべて、後のリリースで削除される予定だ。

2.xからのアップグレード

v2.xから新しいリリースにアップグレードする場合、クライアント・クラスから直接APIメソッドを使用している場合は、関連するAPIクラスのメソッドを使用するようにしてください。

client.get_basic_number_insight(number=MY_NUMBER) # API methods have been removed from the client class - this won't work
client.number_insight.get_basic_number_insight(number=MY_NUMBER) # Call the methods using the relevant API classes instead

どこへ行くんだ?

ご覧の通り、今回のリリースではAPIの呼び出し方にかなりの変更を加えました。今後のリリースでは、SDKにVideo機能を追加する予定です。また、非推奨のメソッドを削除し、以下のサポートを追加する予定です。 asyncioそして最終的には、Pydanticのようなツールを使って入力の検証を行う予定です。

新バージョンをダウンロードして、ご意見をお聞かせください!他に何か見たいものや貢献したいものがあれば、SDK全体がオープンソースになっており、GitHubで見ることができます。 GitHub.無料クレジットで今すぐ始められます。 Vonage Developerウェブサイト.

シェア:

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

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