開発者用 SIP 透過性および正規化ガイド Cisco Unified Communications Manager Release 9.1(1)
SIP パススルー API
SIP パススルー API
発行日;2013/04/10 | 英語版ドキュメント(2012/12/20 版) | ドキュメントご利用ガイド | ダウンロード ; この章pdf , ドキュメント全体pdf (PDF - 2MB) | フィードバック

目次

SIP パススルー API

addHeader

addHeaderValueParameter

addHeaderUriParameter

addRequestUriParameter

addContentBody

SIP パススルー API

Cisco Unified CM は、SIP コール処理の点ではビジネス ツー ビジネス ユーザ アプリケーション(B2BUA)です。パススルー オブジェクトでは、コール レッグからコール レッグに情報の受け渡しを可能にする一連の API を提供します。

次の SIP パススルー API が使用できます。

addHeader

addHeaderValueParameter

addHeaderUriParameter

addRequestUriParameter

addContentBody

addHeader

addHeader(header-name, header-value)

 

このメソッドは、ヘッダーの文字列名および値が指定された場合、その情報をトリガーされた発信メッセージに含めるためにパススルー オブジェクトに追加します。

透過性がない場合、Cisco Unified CM は着信 x-nt-corr-id ヘッダーを認識していないため、これを無視します。実際に、これは着信 INVITE から削除され、発信 INVITE には含まれません。

このヘッダーのパススルーを有効にするには、このヘッダーをスクリプトの先頭にある allowHeaders テーブルに含める必要があります。さらに、メッセージ処理の中でパススルー オブジェクトに明示的に追加する必要があります。

スクリプト

M = {}
M.allowHeaders = {"x-nt-corr-id"}
function M.inbound_INVITE(msg)
local ntcorrid = msg:getHeader("x-nt-corr-id")
if ntcorrid
then
pt = msg:getPassThrough()
pt:addHeader("x-nt-corr-id", ntcorrid)
end
end
return M
 

着信メッセージ

INVITE sip:1234@10.10.10.1 SIP/2.0
.
x-nt-corr-id: 000002bf0f15140a0a@000075447daf-a561119
.

発信メッセージ

INVITE sip:1234@10.10.10.2 SIP/2.0
.
x-nt-corr-id: 000002bf0f15140a0a@000075447daf-a561119
.

addHeaderValueParameter

addHeaderValueParameter(header-name, parameter-name [,parameter-value])
 

このメソッドは、ヘッダーの名前、パラメータ名、およびパラメータ値が指定された場合、その情報をトリガーされた発信メッセージに含めるためにパススルー オブジェクトに追加します。

ヘッダー名とパラメータ名は、必須引数です。parameter-value は、省略可能です。


) デフォルトでは、Contact ヘッダー値のパラメータは、スクリプトのロジックとは無関係に渡されます。ただし、次の場合は例外で、コール レッグ固有であり、Cisco Unified CM で適切に生成されたものと見なされます。
- audio
- video


透過性がない場合、Cisco Unified CM は、 From ヘッダー内の着信 x-tag を認識していないため、これを無視します。実際に、これは着信 INVITE から削除され、発信 INVITE には含まれません。

このヘッダー パラメータのパススルーを有効にするには、メッセージ処理の中でこれを明示的にパススルー オブジェクトに追加する必要があります。

スクリプト

M = {}
function M.inbound_INVITE(msg)
local xtag = msg:getHeaderValueParameter("From", "x-tag")
if xtag
then
pt = msg:getPassThrough()
pt:addHeaderValueParameter("From", "x-tag", xtag)
end
end
return M

着信メッセージ

INVITE sip:1234@10.10.10.1 SIP/2.0
.
From: <sip:1000@10.10.10.58>;tag=0988bf47-df77-4cb4;x-tag=42
.
 

発信メッセージ

INVITE sip:1234@10.10.10.2 SIP/2.0
.
From: <sip:1000@10.10.10.1>;tag=abcd;x-tag=42
.

addHeaderUriParameter

addHeaderUriParameter(header-name, parameter-name [,parameter-value])

 

このメソッドは、ヘッダーの名前、URI パラメータ名、およびパラメータ値が指定された場合、その情報をトリガーされた発信メッセージに含めるためにパススルー オブジェクトに追加します。

ヘッダー名とパラメータ名は、必須引数です。パラメータ値は、省略可能です。

 

透過性がない場合、Cisco Unified CM は、Contact ヘッダー URI 内の着信 cca-id パラメータを認識していないため、これを無視します。実際に、これは着信 INVITE から削除され、発信 INVITE には含まれません。

このヘッダー URI パラメータのパススルーを有効にするには、メッセージ処理の中でこれを明示的にパススルー オブジェクトに追加する必要があります。


) この例で、パラメータは、発信メッセージでは別の名前を持ちます(つまり、発信メッセージ内の発信 cca-id と、着信メッセージ内の cca-id )。


スクリプト

M = {}
function M.inbound_INVITE(msg)
local occaid = msg:getHeaderUriParameter("Contact", "cca-id")
if occaid
then
pt = msg:getPassThrough()
pt:addHeaderUriParameter("Contact", "originating-cca-id", occaid)
end
end
return M

着信メッセージ

INVITE sip:1234@10.10.10.1 SIP/2.0
.
Contact: <sip:1000@10.10.10.58;cca-id=LSC.dsn.mil>
.

発信メッセージ

INVITE sip:1234@10.10.10.2 SIP/2.0
.
Contact: <sip:1000@10.10.10.1;originating-cca-id=LSC.dsn.mil>
.
 

addRequestUriParameter

addRequestUriParameter(parameter-name [,parameter-value])
 

このメソッドは、URI パラメータ名とパラメータ値が指定された場合、その情報をトリガーされた発信メッセージに含めるためにパススルー オブジェクトに追加します。

パラメータ名は、必須引数です。パラメータ値は、省略可能です。


) デフォルトでは、スクリプトのロジックとは関係なく、初期 INVITE 内の要求 URI パラメータが渡されます。ただし、次の場合は例外で、コール レッグ固有であり、CUCM で適切に生成されたものと見なされます。
- phone-context
- trunk-context
- tgrp
- user


例:着信レッグでパラメータを生成し、発信要求 URI 内に格納するために受け渡します。

スクリプト

M = {}
function M.inbound_INVITE(msg)
pt = msg:getPassThrough()
pt:addRequestUriParameter("from-network", "service-provider")
end
return M

着信メッセージ

INVITE sip:1234@10.10.10.1 SIP/2.0

発信メッセージ

INVITE sip:1234@10.10.10.2;from-network=service-provider SIP/2.0

addContentBody

addContentBody(content-type, content-body [,content-disposition [,content-encoding ,[content-language]]])
 
 

このメソッドは、content-type、content-body、content-disposition、content-encoding、および content-language が指定された場合、その情報をトリガーされた発信メッセージに含めるためにパススルー オブジェクトに追加します。

content-type および content-body は、必須引数です。content-disposition、content-encoding、および content-language は、省略可能なパラメータです。これらの値のいずれかが空または nil に指定された場合、ヘッダーがコンテンツの一部として含まれなくなります。

 

透過性がない場合、Cisco Unified CM は着信 INFO メッセージとコンテンツ本文を無視します。透過性を使用して、Cisco Unified CM は Nortel PBX によって送信された独自のコンテンツ本文を抽出します。さらにコンテンツ本文から DTMF ディジットを抽出して、新しい dtmf-relay コンテンツ本文を作成し、それを受け渡します。

スクリプト

M = {}
function M.inbound_INFO(msg)
local body = msg:getContentBody("application/vnd.nortelnetworks.digits")
if body
then
local digits = string.match(body, "d=(%d+)")
if digits
then
pt = msg:getPassThrough()
body = string.format("Signal=%d\r\nDuration=100\r\n", digits)
pt:addContentBody("application/dtmf-relay", body)
end
end
end
return M

着信メッセージ

INFO sip: 1000@10.10.10.1 SIP/2.0
Via: SIP/2.0/UDP 10.10.10.57:5060
From: <sip:1234@10.10.10.57>;tag=d3f423d
To: <sip:1000@10.10.10.1>;tag=8942
Call-ID: 312352@10.10.10.57
CSeq: 5 INFO
Content-Type: application/vnd.nortelnetworks.digits
Content-Length: 72
 
p=Digit-Collection
y=Digits
s=success
u=12345678
i=87654321
d=4

発信メッセージ

INFO sip: 1000@10.10.10.58 SIP/2.0
Via: SIP/2.0/UDP 10.10.10.1:5060
From: <sip:1234@10.10.10.1>;tag=ef45ad
To: <sip:1000@10.10.10.58>;tag=1234567
Call-ID: 475623@10.10.10.1
CSeq: 5 INFO
Content-Type: application/dtmf-relay
Content-Length: 26
 
Signal=4
Duration=100