私は7年前に同様のクエストを経験しましたが、組み込みのCバージョンを探していました. oSIPライブラリを調べました。これは、SIP パケットを構造体に変換したり、構造体に戻したりするすべての作業を行いました。
ただし、ドキュメントの 1 つの点が私を悩ませました。著者は、ライブラリを効果的に使用するために、SIP 仕様 ( RFC 3261 )に精通することをお勧めします。仕様を何度か読んだ後、私は独自のパーサーと呼び出し制御アプリケーションを作成することになりました。
SIP はまだ発展途上の標準であることに注意してください。現在、SIP サービス プロバイダー (Vonage など) と SIP-PBX 間のインターフェイスを標準化するSIPConnect 1.1を開発しているアクティブなSIPForumグループがあります。ユーザー エージェント間で SIP 機能を実装するための "ベスト プラクティス" を定義するためのBLISSと呼ばれる活動もあります。
相互運用性は難しいです。SIP に関連する RFC は数百あります。異なるエンドポイントは異なるものを使用し、仕様の解釈は常に互換性があるとは限りません。いくつかの異なる相互運用性「テスト イベント ( SIPit など) があり、実装が他の実装と連携して動作することを確認します。
何を選択するにしても、実装する機能の仕様を十分に理解していることを確認してください。さらに、仕様とライブラリはパケット側に役立ちますが、「呼制御」ライブラリ (SIP 要求/応答の処理方法を決定するためのより高いレベルの「頭脳」) が必要です。アプリケーションが純粋な SIP プロキシでない限り、オーディオを処理するためのメディア レイヤーも必要です。
とはいえ、いくつかのインターネット テレフォニー サービス プロバイダー (ITSP) は、サービスのフロントエンド プロキシとしてSIP Express Routerを使用しています。非常に構成可能で、互換性の高い成功率があります。