この製品のマニュアルセットは、偏向のない言語を使用するように配慮されています。このマニュアルセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザーインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブランゲージに対する取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
このマニュアルでは、Cisco Unified CM- Session Management(SME)の SIP メッセージのカスタマイズに使用されるインターフェイス仕様について説明します。また、Cisco Unified CM-SME および API で使用可能な、SIP の透過性機能および正規化機能をサポートするための Lua 環境の詳細についても説明します。
• 概要
• スクリプト環境
この章では、特定の配置環境での、Session Management(SM; セッション管理)の動作のカスタマイズに使用されるインターフェイスである、Lua 環境について説明します。Lua は、一般的な、動作が軽いスクリプト言語です。このマニュアルの対象読者は、Lua スクリプト言語の基礎知識があることを前提としています。
Cisco Unified CM では、SIP の正規化および透過性と呼ばれる機能のセットが提供され、SIP メッセージがカスタマイズされます。
• 正規化:着信メッセージと発信メッセージを変換する処理です。
– 着信メッセージでは、正規化は、ネットワークからメッセージを受信した後に発生します。着信メッセージの正規化は、メッセージを Cisco Unified CM により適するようにするために、使用されます。たとえば、Cisco Unified CM では、リダイレクト番号情報を伝達するための Diversion ヘッダーがサポートされます。Cisco Unified CM に接続される一部の SIP デバイスでは、この目的で History-Info ヘッダーが使用されます。着信の最適化では、Cisco Unified CM でリダイレクト情報が認識されるよう、History-Info ヘッダーが Diversion ヘッダーに変換されます。
– 発信メッセージでは、正規化は、ネットワークにメッセージを送信する直前に発生します。したがって、発信メッセージの正規化は、メッセージが外部 SIP デバイス(例:別の SIP 対応 PBX)により適するようにするために使用されます。たとえば、発信の正規化は、外部 SIP デバイスでリダイレクト情報が認識されるよう、Diversion ヘッダーを History-Info ヘッダーに変換するために使用できます。
• 透過性:これを使用すると、Cisco Unified CM が Back to Back User Agent(B2BUA)の場合でも、1 つのコール レッグから別のコール レッグに SIP 情報を渡すことができます。
正規化と透過性の機能は、SIP トランクに関連付けられているスクリプトによって示されます。スクリプトは、発着信 SIP メッセージで動作するメッセージ ハンドラのセットとして示されます。正規化では、スクリプトによって、次のものを含む SIP メッセージのほとんどの状態が操作されます。
透過性では、スクリプトによって、次のものを含む SIP メッセージのほとんどの情報が渡されます。
このマニュアルでは、SIP メッセージ情報を操作し、渡すために使用される、スクリプト環境および API について説明します。
Cisco Unified CM SIP Trunk の動作をカスタマイズするインターフェイスは、Lua と呼ばれるスクリプト言語によって提供されます。Lua は、オープン ソースの、動作が軽いスクリプト言語です。
Cisco Unified CM(SM)で使用できる Lua 環境は、Lua の限定的なサブセットです。Lua では、次のような基本機能が提供されます。
ただし、SM で使用可能な Cisco SIP Lua 環境では、ベース ライブラリの全体およびサブセットの文字列ライブラリのみがサポートされます。他のライブラリはサポートされません。
Cisco SIP Lua 環境では、スクリプトで使用されるグローバル環境が提供されます。スクリプトに対して、デフォルトの Lua グローバル環境(_G など)は示されません。
Lua スクリプトでは、 メッセージ ハンドラ と呼ばれるコール バック機能のセットが提供され、SM 環境のコンテキストで SIP メッセージが操作されます。メッセージ ハンドラの名前は、特定の SIP メッセージに対して起動されるハンドラを示します。たとえば、スクリプトの「inbound_INVITE」メッセージハンドラは、Cisco Unified CM で着信 INVITE を受信したときに、起動されます。メッセージ ハンドラでは、SIP メッセージを表す msg と呼ばれる 1 つのパラメータを受信します。Lua スクリプトでは、Cisco SIP Message ライブラリで定義されている API を使用して、 msg パラメータが操作されます。
以下では、 メッセージ ハンドラ の構造の詳細について説明します。次の項では、Cisco SIP Message ライブラリ API の詳細について説明します。
ここでは、発信 INVITE で「Cisco-Guid」ヘッダーを削除するスクリプトの例を示します。スクリプトの説明を簡単にするため、スクリプトの左側に行番号を示します。
1. モジュールの初期化:スクリプトの最初の行で、「M」と呼ばれる Lua テーブルが作成され、空に初期化されます。このテーブルには、このスクリプトによって提供されるコールバック関数のセットが含まれます。変数 M は Lua テーブルで、モジュールの名前でもあります。
2. メッセージ ハンドラ定義:行 2 ~ 4 では、着信 INVITE メッセージ ハンドラ が定義されます。このスクリプトの SIP トランクで着信 INVITE を受信したときに、このコールバック関数が実行されます。この例では、メッセージ ハンドラによって API が起動され、History-Info ヘッダーが Diversion ヘッダーに変換されます。
行 5 ~ 6 では、発信 INVITE メッセージ ハンドラ が定義されます。このスクリプトの SIP トランクで発信 INVITE が送信されたときに、このコールバック関数が実行されます。この例では、メッセージ ハンドラによって API が起動され、「Cisco-Guid」ヘッダーが削除されます。
スクリプトによって、複数のメッセージ ハンドラを定義できます。メッセージ ハンドラの名前によって、指定された SIP メッセージに対して起動されるメッセージ ハンドラが(ある場合には)示されます。
3. モジュールに戻る:最後の行で、モジュールの名前が返されます。この行は、絶対に必要です。これが、Cisco SIP Lua 環境で、スクリプトに関連付けられているメッセージ ハンドラが見つけられる方法です。
Lua スクリプトでは、メッセージ ハンドラと呼ばれるコール バック機能のセットが提供され、SM 環境のコンテキストで SIP メッセージが操作されます。メッセージ ハンドラの名前は、特定の SIP メッセージに対して起動されるハンドラを示します。
メッセージ ハンドラの命名規則によって、指定された SIP メッセージに対して起動されるメッセージが示されます。仕様による多様な SIP メッセージは、 要求 と 応答 にわかれます。
• 要求 では、メッセージ ハンドラは、メッセージの方向と SIP 要求のメソッド名に従って命名されます。メソッド名は、SIP メッセージの「要求行」にあるものです。
• 応答 では、メッセージ ハンドラは、メッセージの方向、応答コード、および SIP メソッドに従って命名されます。応答では、SIP メッセージの CSeq ヘッダーから、メソッド名が取得されます。
Cisco Unified CM-SME が 2 つのトランクを介して PBX-A および PBX-B に接続される場合について考えます。モジュール A を返すスクリプトは、PBX-A に接続されているトランクに接続されます。同様に、モジュール B を返すスクリプトは、PBX-B に接続されているトランクに接続されます。
次のハンドラが、INVITE ダイアログに対して実行されます。
メッセージ ハンドラでは、サポートされるワイルドカードも命名されます。ワイルド カードのサポートは、メッセージが 要求 SIP メッセージか 応答 SIP メッセージかに依存します。
ワイルド カード ANY は、<method> の場所に使用できます。<direction> では、ワイルド カードはサポートされません。
有効な要求メッセージ ハンドラ名については、表 1-1 を参照してください。
|
|
---|---|
このメッセージ ハンドラは、初期 INVITE および reINVITE を含むすべての着信 INVITE メッセージに対して起動されます。 |
|
ワイルドカード ANY は、<method> と <response code> のいずれか一方または両方の場所に使用できます。<direction> では、ワイルド カードはサポートされません。さらに、ワイルド カード文字 X は <response code> で使用できます。
有効な応答メッセージ ハンドラ名については、表 1-2 を参照してください。
|
|
---|---|
このメッセージ ハンドラは、すべての 18X、2XX、3XX、4XX、5XX、および 6XX の応答を含む INVITE 要求のすべての着信応答に対して起動されます。 |
|
Cisco Unified CM では、次のルールを使用して、該当するメッセージの メッセージ ハンドラ が見つけられます。
1. メッセージ ハンドラでは、大文字と小文字が区別されます。
(注) メッセージの方向は、SIP のダイアログの方向から完全に独立しています。
inbound_INVITE は有効なハンドラ名です。InBound_INVITE は有効なハンドラ名ではありません。
5. SIP メッセージから取得されるメソッド名は、スクリプトで適切なメッセージ ハンドラを見つける目的で、小文字に変換されます。
6. CUCM-SME では、 最長一致 基準を使用して、正しいメッセージ ハンドラが見つけられます。
スクリプトに、inbound_ANY_ANY と inbound_183_INVITE の 2 つのメッセージ ハンドラがあるとします。Cisco Unified CM で 183 の応答を受信すると、これは最も明示的な一致のため、inbound_183_INVITE ハンドラが実行されます。
(注) 着信または発信は ANY(応答コード)および ANY(メソッド)でサポートされますが、特定の応答コードでの ANY(メソッド)ワイルド カードは、現在、サポートされません。
つまり、次のメッセージ ハンドラが有効です。inbound_ANY_ANY
outbound_ANY_ANY
しかし、次のものは無効です。inbound_401_ANY
など
outbound_200_ANY