JP2008546325A - テレフォニーサービスアプリケーションのための呼制御エレメント、ダイアログエレメント、及びセッション開始プロトコルメッセージの生成、及び変換 - Google Patents

テレフォニーサービスアプリケーションのための呼制御エレメント、ダイアログエレメント、及びセッション開始プロトコルメッセージの生成、及び変換 Download PDF

Info

Publication number
JP2008546325A
JP2008546325A JP2008514941A JP2008514941A JP2008546325A JP 2008546325 A JP2008546325 A JP 2008546325A JP 2008514941 A JP2008514941 A JP 2008514941A JP 2008514941 A JP2008514941 A JP 2008514941A JP 2008546325 A JP2008546325 A JP 2008546325A
Authority
JP
Japan
Prior art keywords
dialog
session initiation
initiation protocol
call control
call
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008514941A
Other languages
English (en)
Other versions
JP2008546325A5 (ja
Inventor
メノン スニル
ティングレイ アラン
ニコルス レオン
ガウアー ヴィジャイ
パイ ガネシュ
レディ ユママヘスワー
ルクマンジ ブルハヌディン
Original Assignee
ソーナス ネットワークス, インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ソーナス ネットワークス, インコーポレイテッド filed Critical ソーナス ネットワークス, インコーポレイテッド
Publication of JP2008546325A publication Critical patent/JP2008546325A/ja
Publication of JP2008546325A5 publication Critical patent/JP2008546325A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/487Arrangements for providing information services, e.g. recorded voice services or time announcements
    • H04M3/493Interactive information services, e.g. directory enquiries ; Arrangements therefor, e.g. interactive voice response [IVR] systems or voice portals
    • H04M3/4938Interactive information services, e.g. directory enquiries ; Arrangements therefor, e.g. interactive voice response [IVR] systems or voice portals comprising a voice browser which renders and interprets, e.g. VoiceXML
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/10Architectures or entities
    • H04L65/102Gateways
    • H04L65/1043Gateway controllers, e.g. media gateway control protocol [MGCP] controllers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1096Supplementary features, e.g. call forwarding or call holding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1101Session protocols
    • H04L65/1104Session initiation protocol [SIP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • H04L65/401Support for services or applications wherein the services involve a main real-time session and one or more additional parallel real-time or time sensitive sessions, e.g. white board sharing or spawning of a subconference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q3/00Selecting arrangements
    • H04Q3/0016Arrangements providing connection between exchanges
    • H04Q3/0029Provisions for intelligent networking
    • H04Q3/0054Service creation techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M2203/00Aspects of automatic or semi-automatic exchanges
    • H04M2203/35Aspects of automatic or semi-automatic exchanges related to information services provided via a voice call
    • H04M2203/355Interactive dialogue design tools, features or methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13034A/D conversion, code compression/expansion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13389LAN, internet

Abstract

テレフォニーアプリケーションを生成することに対する1つの取り組み方は、グラフィカルユーザーインターフェースを使用して呼制御エレメント、及びダイアログエレメントを生成することである。1側面では、1つの方法が存在する。その方法は、グラフィカルユーザーインターフェースを提供すること、ユーザがグラフィカルユーザーインターフェースを使用して複数のエレメントから1つのエレメントを選択することを可能にすること、及びテレフォニーアプリケーションのためのモジュールをグラフィカルユーザーインターフェースを使用して生成することを含む。複数のエレメントは、少なくとも1つの呼制御エレメント、及び少なくとも1つのダイアログエレメントを含む。少なくとも1つの呼制御エレメントは、少なくとも1つのダイアログエレメントに関連する少なくとも1つの発呼イベントの制御を定める。

Description

本発明は一般に、グラフィカルユーザーインターフェースを使用してテレフォニーサービスアプリケーションのための呼制御エレメント、及びダイアログエレメントを生成するための、コンピュータプログラムプロダクトを含む、コンピュータに基づく方法と装置に関する。他の側面では、本発明は一般に、テレフォニーサービスアプリケーションのための呼制御エレメント、及びダイアログエレメントを中間言語から目的言語に変換するための、コンピュータプログラムプロダクトを含む、コンピュータに基づく方法と装置に関する。他の側面では、本発明は一般に、セッション開始プロトコルメッセージを第1フォーマットから第2フォーマットに変換するための、コンピュータプログラムプロダクトを含む、コンピュータに基づく方法と装置に関する。
最近、パケットベースのネットワークの急増が、従来の回線ベースのテレフォニーネットワークに対する代替案の出現をもたらした。パケットベースのネットワーク、例えば、インターネットプロトコル(IP)ネットワーク、がテレフォニー通信のデータコンテンツをパケット化して送信する機能を提供してきた。その種の構成は Voice over IP (VOIP)ネットワークと一般に呼ばれ、音声、画像、及び/又はデータコンテンツをサポートできる。VOIPの使用の増加に連動して、ユーザ対話をサポートして向上させるために種々のテレフォニーサービスが開発されてきた。IPマルチメディア・サブシステム(IMS)アーキテクチャは、新しいテレフォニーサービスの開発と配信を出来るだけ素早く簡単に行う方法で、新しいテレフォニーサービスを提供する、標準化された次世代ネットワーク(NGN)アーキテクチャである。基礎となるIMSアーキテクチャはセッション開始プロトコル(SIP)であり、インターネット技術タスクフォース(IETF)によるコメント要求(RFC)3261によって標準化される。SIPメッセージの基本構造はRFC3261に準拠するが、ネットワーク上の発信側装置のベンダによって使用されるフォーマットによって決まるSIPメッセージのフォーマットには種々の差異が存在する。
テレフォニーサービスの開発は2つの独立したステップを含む。即ち、呼制御サービスの生成、及びダイアログサービスの生成である。テレフォニーサービスは、それに対してテレフォニーサービスが実行される特定の目的言語で開発され生成される。同じテレフォニーサービスを他の目的言語で生成するために、別の開発プロセスが必要である。
テレフォニーアプリケーションを生成することに対する1つの取り組み方は、グラフィカルユーザーインターフェースを使用して呼制御エレメント、及びダイアログエレメントを生成することである。1側面では、1つの方法が存在する。その方法は、グラフィカルユーザーインターフェースを提供すること、ユーザがグラフィカルユーザーインターフェースを使用して複数のエレメントから1つのエレメントを選択することを可能にすること、及びテレフォニーアプリケーションのためのモジュールをグラフィカルユーザーインターフェースを使用して生成することを含む。複数のエレメントは、少なくとも1つの呼制御エレメント、及び少なくとも1つのダイアログエレメントを含む。少なくとも1つの呼制御エレメントは、少なくとも1つのダイアログエレメントに関連する少なくとも1つの発呼イベントの制御を定める。
他の側面では、1つのシステムが存在する。そのシステムは、サービス作成環境を含む。サービス作成環境は、グラフィカルユーザーインターフェースを提供するように適合されたサービス作成ツールを含み、ユーザがグラフィカルユーザーインターフェースを使用して複数のエレメントから1つのエレメントを選択することを可能にし、及びグラフィカルユーザーインターフェースを使用してテレフォニーアプリケーションのためのモジュールを生成する。複数のエレメントは、少なくとも1つの呼制御エレメント、及び少なくとも1つのダイアログエレメントを含む。少なくとも1つの呼制御エレメントは、少なくとも1つのダイアログエレメントに関連する少なくとも1つの発呼イベントの制御を定める。
他の側面では、1つのコンピュータプログラムプロダクトが存在する。コンピュータプログラムプロダクトは情報担体中で実体的に実施され、コンピュータプログラムプロダクトはデータ処理装置がグラフィカルユーザーインターフェースを提供することを可能にするように動作可能な命令を含み、ユーザがグラフィカルユーザーインターフェースを使用して複数のエレメントから1つのエレメントを選択することを可能にし、及びテレフォニーアプリケーションのためのモジュールをグラフィカルユーザーインターフェースを使用して生成する。複数のエレメントは、少なくとも1つの呼制御エレメント、及び少なくとも1つのダイアログエレメントを含む。少なくとも1つの呼制御エレメントは、少なくとも1つのダイアログエレメントに関連する少なくとも1つの発呼イベントの制御を定める。
他の実施例では、上記側面の何れかは次の特徴の1つ又は2つ以上を含み得る。また、その方法は、グラフィカルユーザーインターフェースを使用して、ダイアログエレメントを呼制御エレメントと結合させることも含み得る。ダイアログエレメントを呼制御エレメントと結合させることは、呼制御エレメント中のダイアログエレメントにリファレンスを挿入することを含み得る。ダイアログエレメントを呼制御エレメントと連結させることは、ダイアログエレメントを呼制御エレメントに埋め込むことを含み得る。複数のエレメントは、設計ファイル、ソースコード、実行可能ファイル、又はそれらの組み合わせの1つ又は2つ以上を含み得る。呼制御エレメントは、呼制御XML(CCXML)、呼処理言語(CPL)、又はそれらの組み合わせに基づき得る。呼制御エレメントは、 Java Server Page (JSP)の内部に埋め込まれ得る。また、その方法は、1又は複数の予め定められた呼制御エレメントの組を提供することも含み得る。呼制御エレメントは、その組に含まれ得る。ダイアログエレメントは、音声XML(VXML)、メディアサーバ制御マークアップ言語(MSCML)、メディアサーバマークアップ言語(MSML)、メディアオブジェクトマークアップ言語(MOML)、又はそれらの組み合わせに基づき得る。ダイアログエレメントは、 Java Server Page (JSP)の内部に埋め込まれ得る。また、その方法は、1又は複数の予め定められたダイアログエレメントの組を提供することも含み得る。ダイアログエレメント、その組に含まれ得る。呼制御エレメント、又はダイアログエレメントは、ECMAスクリプトに基づくエレメントを含み得る。モジュールを生成することは、呼制御エレメント、又はダイアログエレメントを構成することを含み得る。モジュールを生成することは呼フローを定めることを含み得て、呼フローは呼制御エレメント、又はダイアログエレメントを含む。また、その方法は、文字ユーザインターフェースを提供すること、及びモジュールを文字ユーザインターフェースを使用して構成することも含み得る。
上記実施例の何れかは、次の利点の1つ又は2つ以上を実現し得る。サービス作成ツールはグラフィカルユーザーインターフェースを提供し、グラフィカルユーザーインターフェースは、新しいアプリケーション、及びサービスを容易に早く生成するサービス開発者のためのドラッグ・アンド・ドロップ開発環境を使用するシンプルさを呈示する。呼制御エレメント、及びダイアログエレメントを含むグラフィカルユーザーインターフェースは、先進的な電気通信アプリケーションのための統合された呼制御サービス、及びダイアログサービスの迅速なサービス作成、テスト、及び配備を可能にする。アプリケーション開発を加速することによって、グラフィカルユーザーインターフェースはプログラミングコスト、及び開発コストを著しく減少させる。更に、プログラマは標準ベースのウェブツール知識を必要とし、独自のソフトウェア開発キットの知識は必要としない。
テレフォニーアプリケーションを生成することに対する1つの取り組み方は、呼制御エレメント、及びダイアログエレメントを中間言語から目的言語に変換することである。1側面では、1つの方法が存在する。その方法はテレフォニーアプリケーションのためのモジュールを生成することを含み、モジュールは複数のエレメントを含み、複数のエレメントの少なくとも第1のエレメントは呼制御エレメントであり、複数のエレメントの少なくとも第2のエレメントはダイアログエレメントである。呼制御エレメントは、ダイアログエレメントに関連する少なくとも1つの発呼イベントの制御を定める。また、その方法は中間設計ファイルにモジュールを記憶することも含む。中間設計ファイルは、1又は複数の中間言語に基づく。また、その方法は、変換規則を使用して、中間設計ファイルの少なくとも一部を1又は複数の目的設計ファイルに変換することも含む。1又は複数の目的設計ファイルは、1又は複数の目的言語に基づく。1又は複数の目的言語は、1又は複数の中間言語とは異なる。
他の側面では、1つのシステムが存在する。そのシステムは、サービス作成環境を含む。サービス作成環境は、テレフォニーアプリケーションのためのモジュールを生成するように適合されたサービス作成ツールを含む。モジュールは、複数のエレメントを含む。複数のエレメントの少なくとも第1のエレメントは呼制御エレメントであり、複数のエレメントの少なくとも第2のエレメントはダイアログエレメントである。呼制御エレメントは、ダイアログエレメントに関連する少なくとも1つの発呼イベントの制御を定める。また、サービス作成環境は、中間設計ファイル中でモジュールを記憶するようにも適合される。中間設計ファイルは、1又は複数の中間言語に基づく。また、サービス作成環境は、変換規則を使用して、中間設計ファイルの少なくとも一部を1又は複数の目的設計ファイルに変換するようにも適合される。1又は複数の目的設計ファイルは、1又は複数の目的言語に基づく。1又は複数の目的言語は、1又は複数の中間言語とは異なる。
他の側面では、1つのコンピュータプログラムプロダクトが存在する。コンピュータプログラムプロダクトは情報担体中で実体的に実施され、コンピュータプログラムプロダクトはデータ処理装置がテレフォニーアプリケーションのためのモジュールを生成することを可能にするように動作可能な命令を含む。モジュールは、複数のエレメントを含む。複数のエレメントの少なくとも第1のエレメントは呼制御エレメントであり、複数のエレメントの少なくとも第2のエレメントはダイアログエレメントである。呼制御エレメントは、ダイアログエレメントに関連する少なくとも1つの発呼イベントの制御を定める。また、コンピュータプログラムプロダクトは、中間設計ファイル中でモジュールを記憶するように動作可能な命令も含む。中間設計ファイルは、1又は複数の中間言語に基づく。また、コンピュータプログラムプロダクトは、変換規則を使用して、中間設計ファイルの少なくとも一部を1又は複数の目的設計ファイルに変換するように動作可能な命令も含む。1又は複数の目的設計ファイルは、1又は複数の目的言語に基づく。1又は複数の目的言語は、1又は複数の中間言語とは異なる。
他の実施例では、上記側面の何れかは次の特徴の1つ又は2つ以上を含み得る。1又は複数の中間言語は、呼制御XML(CCXML)、呼処理言語(CPL)、音声XML(VXML)、メディアサーバ制御マークアップ言語(MSCML)、メディアサーバマークアップ言語(MSML)、メディアオブジェクトマークアップ言語(MOML)、又はそれらの組み合わせを含み得る。1又は複数の中間言語は、拡張可能マークアップ言語(XML)を含み得る。1又は複数の中間言語は、汎用言語を含み得る。1又は複数の目的言語は、呼制御XML(CCXML)、呼処理言語(CPL)、音声XML(VXML)、メディアサーバ制御マークアップ言語(MSCML)、メディアサーバマークアップ言語(MSML)、メディアオブジェクトマークアップ言語(MOML)、又はそれらの組み合わせを含み得る。また、その方法は、 Java Server Page (JSP)の内部の1又は複数の目的設計ファイルの少なくとも1つをカプセル化することも含み得る。中間言語は1つのモデルに基づき得て、そのモデルは呼制御エレメントに関連する呼制御コンポーネント、及びダイアログエレメントに関連するダイアログコンポーネントを含む。呼制御コンポーネントは、発呼イベント関数を定めることができる。発呼イベント関数は、 start 関数、 end 関数、 log 関数、 action 関数、 call action 関数、 dialog 関数、又はそれらの組み合わせを含み得る。 call action 関数は、 answer 関数、 connect 関数、 disconnect 関数、 redirect 関数、 remove 関数、 create call 関数、 create conference 関数、又はそれらの組み合わせを含み得る。ダイアログコンポーネントは、 dialog 関数を定めることができる。 dialog 関数は、 start 関数、 end 関数、 log 関数、 action 関数、 play action 関数、 form 関数、 menu 関数、又はそれらの組み合わせを含み得る。 play action 関数は、 prompt 関数、 record 関数、又はそれらの組み合わせを含み得る。変換規則は、拡張スタイルシート言語変換(XSLT)に基づき得る。また、その方法は、1又は複数の目的設計ファイルを1又は複数のウェブアプリケーションにアセンブルすることも含み得る。1又は複数のウェブアプリケーションの少なくとも1つは、1又は複数の呼制御アプリケーション、又は1又は複数のダイアログアプリケーションの少なくとも1つを含み得る。
上記実施例の何れかは、次の利点の1つ又は2つ以上を実現し得る。中間言語を生成することによって、開発者は複数の目的言語に変換できる単一の設計ソース中のアプリケーションの設計情報を取り込むことができ、設計情報は以前に設計されたアプリケーションが1又は複数のプラットフォームで初期設計を変更することなく対象にされることを可能にする。
メッセージを相互に送信することに対する1つの取り組み方は、メッセージを第1フォーマットから第2フォーマットに変換することである。1側面では、1つの方法が存在する。その方法は、1又は複数の命令の第1の組を規則に関連付けること、及びセッション開始プロトコルメッセージを受信することを含み、セッション開始プロトコルメッセージは第1フォーマットに基づく。また、その方法は、規則を使用して、1又は複数の命令の第1の組がセッション開始プロトコルメッセージに適用可能であるか否かを決定すること、及び1又は複数の命令の第1の組がセッション開始プロトコルメッセージに適用可能であるとき命令の第1の組を使用して、セッション開始プロトコルメッセージを目的のセッション開始プロトコルメッセージに変換することも含む。目的のセッション開始プロトコルメッセージは、第1フォーマットとは異なる第2フォーマットに基づく。
他の側面では、セッション開始プロトコルに基づいてメッセージを相互作用させるための1つのシステムが存在する。そのシステムは、1又は複数の命令の第1の組を規則に関連付けること、及びセッション開始プロトコルメッセージを受信することに適合されたネットワーク装置を含み、セッション開始プロトコルメッセージは第1フォーマットに基づく。また、ネットワーク装置は、規則を使用して、1又は複数の命令の第1の組がセッション開始プロトコルメッセージに適用可能であるか否かを決定すること、及び1又は複数の命令の第1の組がセッション開始プロトコルメッセージに適用可能であるとき、命令の第1の組を使用して、セッション開始プロトコルメッセージを目的のセッション開始プロトコルメッセージに変換することにも適合される。目的のセッション開始プロトコルメッセージは、第1フォーマットとは異なる第2フォーマットに基づく。
他の側面では、1つのコンピュータプログラムプロダクトが存在する。コンピュータプログラムプロダクトは情報担体中で実体的に実施され、コンピュータプログラムプロダクトは、1又は複数の命令の第1の組を規則に関連付け、セッション開始プロトコルメッセージを受信するように動作可能な命令を含み、セッション開始プロトコルメッセージは、第1フォーマットに基づく。また、ネットワーク装置は、規則を使用して、1又は複数の命令の第1の組がセッション開始プロトコルメッセージに適用可能であるか否かを決定すること、及び1又は複数の命令の第1の組がセッション開始プロトコルメッセージに適用可能であるとき、命令の第1の組を使用して、セッション開始プロトコルメッセージを目的のセッション開始プロトコルメッセージに変換することにも適合される。目的のセッション開始プロトコルメッセージは、第1フォーマットとは異なる第2フォーマットに基づく。
他の実施例では、上記側面の何れかは次の特徴の1つ又は2つ以上を含み得る。セッション開始プロトコルメッセージは、開放型システム間相互接続(OSI)参照モデルによって定められるトランスポート層から受信され得る。また、その方法は、目的のセッション開始プロトコルメッセージをOSI参照モデルによって定められるアプリケーション層に転送することも含み得る。目的のセッション開始プロトコルメッセージは、正規化されたセッション開始プロトコルメッセージを含み得る。セッション開始プロトコルメッセージは、開放型システム間相互接続(OSI)参照モデルによって定められるアプリケーション層から受信され得る。また、その方法は、目的のセッション開始プロトコルメッセージをOSI参照モデルによって定められるトランスポート層に転送することも含み得る。また、その方法は、セッション開始プロトコルメッセージ中のパラメータを識別することも含み得て、パラメータは、予め定められたアドレス、予め定められたTCP又はUDPポート、伝送制御プロトコル(TCP)ID、セッション開始プロトコル方法、又はそれらの組み合わせを含む。予め定められたアドレスは、ソースIPアドレス、デスティネーションIPアドレス、又はそれらの組み合わせを含み得る。セッション開始プロトコル方法は、 INVITE, RE-INVITE, REGISTER, ACK, CANCEL, BYE, OPTIONS, INFO, NOTIFY, SUBSCRIBE, UNSUBSCRIBE, UPDATE, MESSAGE, REFER, PRACK, PUBLISH, 又はそれらの組み合わせを含み得る。また、その方法は、1又は複数の命令の第1の組がセッション開始プロトコルメッセージに適用可能であるか否かを決定することを含み得て、パラメータを対応する規則パラメータに合致させることを含み、規則は規則パラメータを含む。1又は複数の命令の第1の組は、 Practical Extraction and Report 言語(PERL)、 Tool Command 言語(TCL)、C言語、C++言語、又はそれらの組み合わせに基づき得る。また、その方法は、セッション開始プロトコルメッセージを目的のセッション開始プロトコルメッセージに変換することを含み得て、セッション開始プロトコルメッセージの内部の1又は複数のSIPヘッダを操作すること、追加すること、又は除去することを含む。また、その方法は、セッション開始プロトコルメッセージを目的のセッション開始プロトコルメッセージに変換することも含み得て、セッション開始プロトコルメッセージの内部のスタートラインを操作することを含む。また、その方法は、セッション開始プロトコルメッセージを目的のセッション開始プロトコルメッセージに変換することを含み得て、セッション開始プロトコルメッセージの内部で本体部分を操作することを含む。オブジェクトは規則を含み得て、オブジェクトはデータベースに記憶され得る。更に、オブジェクトは、名前、記述、1又は複数の命令の第1の組の名前、又はそれらの組み合わせを含み得る。
上記実施例の何れかは、次の利点の1つ又は2つ以上を実現し得る。相互作用シナリオ中のメッセージ・カスタマイズは、SIPメッセージに対してどのフォーマットを使用するかにかかわらず、まるで同じフォーマットを使用したかのように、エンドエージェントが継ぎ目なく互いに情報をやり取りすることを可能にする。加えて、類似の結果に到達するSIPプロトコルレベルにおいてコードを変更することと比較して、メッセージ・カスタマイズは、スクリプトを使用して、システムの設計が大幅に単純化されることを可能にする。加えて、SIPカスタマイズは、スクリプトを使用して、早い開発も可能にする。何故ならば、小スクリプトは容易に作成できるからである。文字列操作に適合したスクリプトは、SIPカスタマイズに特に適合する。何故ならば、SIPはテキストベースのプロトコルだからである。加えて、スクリプトは、より大きな柔軟性をユーザ(例えば、サービスプロバイダ)に提供する。何故ならば、ユーザは、パッチのリリースを待つ代わりに、相互作用シナリオ中のSIPカスタマイズに対するスクリプトを変更、及び/又は追加できるからである。また、スクリプトを使用することの単純さも、SIP処理システムの更に迅速な開発、テスト、及び/又は市場流通を可能にする。
本発明の他の側面、及び利点は、例示のみの手段として本発明の原理を示す添付の図面と関連する次の詳細な記述から明らかになるであろう。
IMSネットワークのようなVOIPネットワークでは、テレフォニーサービスは、音声呼出し/会議、ビデオ通話/会議、テキスト及び/又はインスタント・メッセージング、 push-to-talk over cellular (POC)、マルチパーティゲーム、データベースアクセス、ユーザが定めた呼出音、及び/又は他のネットワーク通信を含み得る。その種のテレフォニーサービスは、呼制御、ダイアログ制御、及び/又は他のテレフォニーサービス機能の各々を提供するために、テレフォニーサービスアプリケーションとして実施され得る。テレフォニーサービス呼制御は、呼設定、呼修正、ダイアログ呼び出し、及び/又は呼終了を制御することを含み得て、呼は2又は3以上の発呼者の間、及び/又は1発呼者と1又は複数のデータベースにアクセスするための1又は複数のサーバの間であり得る。呼制御は、例えば、呼制御拡張マークアップ言語(CCXML)、呼処理言語(CPL)、(フロリダ州オーランドにある Voxeo 社によって開発された)CallXML、及び/又は他の呼制御言語に基づく命令の組を含むアプリケーションを使用して実施され得る。また、テレフォニーサービスアプリケーションは、ユーザと1又は複数のデータベースの間のユーザ対話のためのダイアログ制御を提供し得る。例えば、ユーザ対話は、(例えば、音声、及び/又は dual-tone multifrequency (DTMF)対話によって)入力を要求すること、及び/又は情報を収集することを含み得る。例えば、ダイアログ制御は、音声拡張マークアップ言語(VXML)、メディアサーバ制御マークアップ言語(MSCML)、メディアサーバマークアップ言語(MSML)、メディアオブジェクトマークアップ言語(MOML)、 Speech Application Language Tags (SALT)、他の相互音声応答(IVR)言語、及び/又は他のダイアログ制御言語に基づく命令の組を含むアプリケーションを使用して実行され得る。また、テレフォニーサービスアプリケーションは、追加の機能、例えば、テレフォニーサービスによって要求されるデータの計算、を実行するためのスクリプト、例えば、ECMAベースのスクリプト、 JavaScripts、 JScripts 、及び/又は類似のスクリプトも含み得る。加えて、テレフォニーサービスは、1又は複数のリモートデータベースに対するユーザアクセスも提供し得て、リモートデータベースでは、ユーザは情報、例えば、個人のアドレス帳、個人のダイヤルプラン、個人秘書、接触リスト、部門情報、及び/又は類似の情報を検索、及び/又は更新し得る。
図1は、テレフォニーサービスの生成、提供、及び実行に関連する装置を有する例示的なネットワーク100を示すブロック図である。ネットワーク100は、パケットベースのネットワーク101、例えば、インターネット、キャリアIPネットワーク(LAN,WAN,又は類似のネットワーク)、構内IPネットワーク、及び/又は他のパケットベースのネットワークを含む。アプリケーションサーバ(AS)110、メディアサーバ(MS)120、ルーティングサーバ(RS)130、1又は複数のアクセスネットワーク140,150、及び1又は複数のユーザ165がネットワーク101に接続される。アプリケーションサーバ110、及びメディアサーバ120は、テレフォニーサービスアプリケーションを実行するためのプラットフォームを提供することを担う。プラットフォームは、アプリケーションサーバ110(例えば、CCXML)、及びメディアサーバ120(例えば、VXML)のスクリプト機能を含む。アプリケーションサーバ110は、 Linux, Solaris 又は Windows(登録商標) を動作させる標準的キャリアクラス Intel プラットフォームに配備され得る。この実施例では、メディアサーバ120はアプリケーションサーバ110から分離されるが、他の構成も使用でき、例えば、メディアサーバ120はアプリケーションサーバ110と同じノードに配置され得る。
サービス作成環境(SCE)111がアプリケーションサーバ110に接続され、SCE111は、テレフォニーサービスアプリケーションを生成することを担う。SCE111は、呼制御機能、及びダイアログ制御機能を用いてテレフォニーサービスアプリケーションを生成するためのグラフィカルユーザーインターフェースを提供する。この実施例では、SCE111はアプリケーションサーバ110に接続されるが、他の構成も使用され得る。例えば、SCE111はアプリケーションサーバ110に含まれ得るか、又はSCE111はネットワーク101のリモート位置においてアクセス可能に作成され得る。
生成されたテレフォニーサービスアプリケーションは1又は複数のデータベース(図示されない)、例えば、ウェブサーバにおいて提供され得て、1又は複数のデータベースは、アプリケーションサーバ110及び/又はメディアサーバ120によってローカル又はリモートにアクセスされ得る。ルーティングサーバ130は、1又は複数のアプリケーションサーバ110とのネットワークに対するルーティング及び/又はサービス選択を提供し得る。ルーティングサーバ130は、ネットワーク101の全てのアプリケーションサーバ110の状態、及び所定のアプリケーションサーバ110で実行され得るテレフォニーサービスアプリケーションの組についての情報を維持し得る。例えば、発呼エージェント(例えば、ユーザ165)はルーティングサーバ130にコンタクトし得て、ルーティングサーバ130はアプリケーションサーバ110のアドレスを発呼エージェントに戻す。
ゲートウェイ141,151は、アクセスネットワーク140,150をパケットベースのネットワーク101に各々結合させる。アクセスネットワーク140,150は、他のパケットベースのネットワーク、例えば、公衆交換電話網(PSTN)、無線アクセスネットワーク(RAN)、(従来の、又はIP)構内交換機(PBX)、及び/又は類似のネットワークであり得る。アクセスネットワーク140,150は、複数のユーザ装置145,155に各々結合され得る。ユーザ装置145,155,165は、コンピュータ、電話機、IP電話機、無線電話機(例えば、携帯電話、PDA装置、及び/又は類似の装置)、及び/又は他のテレフォニー装置であり得る。
図2は、テレフォニーサービスの生成、提供、及び実行を示すフローチャート200である。フローチャート200のエレメントは、図1の例示的なネットワーク100を使用して記述される。テレフォニーサービスは、SCE111において生成される(201)。テレフォニーサービスは、1又は複数のアプリケーション(例えば、呼制御に対するCCXMLドキュメント、及びダイアログ制御に対するVXMLドキュメント)であり得る。呼制御アプリケーションを用いて、ユーザ(例えば、サービス作成者)は呼フローを通して制御を完了し得て、アプリケーションサーバ110が連続するユーザエージェント(B2BUA)、プロキシサーバ、又はリダイレクトサーバとして振る舞うか否かを含む。また、呼制御はイベント処理も提供し得て、イベント処理は任意の時間に種々のソースから起こり得る。発呼イベントは呼制御アプリケーション(例えば、出呼要求、又はダイアログ要求)による動作を含み、呼制御アプリケーション(例えば、出呼要求に応答して呼がオフフックになるときのイベント指示、又はダイアログのイベント指示終了)によって、及び/又は外部ソース(例えば、応答すべき入呼)から以前の動作に応答し得る。呼制御アプリケーションは、ユーザ対話を使用してダイアログを制御し得る。ダイアログは情報を呼制御アプリケーションに戻し得て、呼制御アプリケーションはダイアログによって何が戻されたかによって次に何をするかを決定し得る。呼制御アプリケーションはダイアログを非同期イベントとして処理し得て、ダイアログが開始されるとき、制御は呼制御アプリケーションへ直ぐに戻り、呼制御アプリケーションはダイアログの結果を後で非同期イベントによって知らされ得る。テレフォニーサービスが要求されるまで、テレフォニーサービスは、1又は複数のデータベース(図示されない)に記憶のための1又は複数のアプリケーションとして提供され得る(202)。データベースはネットワークの何処でも、及び/又は1又は複数のウェブサーバを介してアクセスし得る。提供は、ファイル転送プロトコル(FTP)、セキュアシェルFTP(SFTP)、セキュアコピー(SCP)、及び/又は他の転送プロトコルを使用することを含み得る。テレフォニーサービスアプリケーションは、アプリケーションサーバ110、及び/又はメディアサーバ120において実行され得る(203)。実行はウェブモデルを使用して行われ得て、アプリケーションサーバ110、及び/又はメディアサーバ120は、1又は複数のウェブサーバからウェブアプリケーションとしてテレフォニーサービスアプリケーションを要求しているハイパーテキスト転送プロトコル(HTTP)クライアントとして動作する。
図3は、例えば、ユーザ165とメディアサーバ120の間の呼の設定のための呼フロー300を示す。呼は、例えば、データベース中の情報にアクセスすることをユーザが所望することであり得る。呼フロー300のエレメントは、セッション開始プロトコル (SIP)に基づく信号メッセージ、及び図1の例示的なネットワーク100を使用して記述される。しかし、他の信号プロトコル(例えば、H.323、又はSS7)も使用され得る。ユーザが INVITE メッセージをアプリケーションサーバ110に送信するとき、ラダー図が始まる。アプリケーションサーバ110は、適用可能な呼制御アプリケーション(例えば、特定のCCXMLドキュメント)を検索し実行する。アプリケーションサーバ110は 200 OK メッセージをユーザに送信し、ユーザにアプリケーションサーバ110が関連したテレフォニーサービスアプリケーションを正常に検索したことを知らせる。ユーザは、 ACK メッセージをアプリケーションサーバ110に送信する。アプリケーションサーバ110はメディアサーバ120が要求されたことを決定し、 INVITE メッセージをメディアサーバ120に送信する。メディアサーバ120は、 200 OK メッセージをアプリケーションサーバ110に送信する。アプリケーションサーバ110は、 ACK メッセージをメディアサーバ120に送信する。アプリケーションサーバ110は Re-INVITE メッセージを、メディアサーバ120を指示するセッション記述プロトコル(SDP)を用いてユーザに送信し、 Re-INVITE メッセージを、ユーザを指示するセッション記述プロトコル(SDP)を用いてメディアサーバ120に送信する。ユーザは、 200 OK メッセージをアプリケーションサーバ110に送信する。アプリケーションサーバ110は、 ACK メッセージをユーザに送信する。メディアサーバ120は、 200 OK メッセージをアプリケーションサーバ110に送信する。アプリケーションサーバ110は、 ACK メッセージをメディアサーバ120に送信する。ユーザは情報を、例えば、リアルタイム転送プロトコル(RTP)を使用してメディアサーバ120と交換する。メディアサーバ120は BYE メッセージを送信し、アプリケーションサーバ110に通信のやり取りが終了したことを知らせる。アプリケーションサーバ110は、 200 OK メッセージをメディアサーバ120に送信する。アプリケーションサーバ110は、 BYE メッセージをユーザに送信する。ユーザは、 200 OK メッセージをアプリケーションサーバ110に送信する。
サービス作成環境(実行時間の側面)
図4は、SCE111を使用してテレフォニーサービスの開発、アセンブリ、テスト、及び配備を示すプロセスフロー400である。SCE111は、ユーザ401、例えば、サービスプロバイダ、がアプリケーションサーバ110、及び/又はメディアサーバ120に対してテレフォニーサービスアプリケーションを開発、編集、構成、テスト、デバッグ、及び/又は配備できる開発環境である。テレフォニーサービスアプリケーションの生成は、アプリケーション開発(410)、アプリケーションアセンブリ(420)、アプリケーションテスト(430)、及び/又はアプリケーション配備(440)を含む。アプリケーション開発(410)、アプリケーションアセンブリ(420)、及び/又はアプリケーションテスト(430)は、不特定の順番で実行される反復プロセスであり得る。SCE111はグラフィカルユーザーインターフェース(GUI)を提供して、呼制御エレメント、及びダイアログエレメントを含むテレフォニーサービスアプリケーションの生成を容易にする。テレフォニーサービスアプリケーションは、ユーザ401によってグラフィカルユーザーインターフェースを使用して開発される(410)。グラフィカルユーザーインターフェースは、呼制御アプリケーションをビルドするためのドラッグ・アンド・ドロップ・インターフェースを提供し得て、呼制御アプリケーションは呼フロー、及び呼フローに関連する音声ダイアログを定める。加えて、SCE111は、グラフィカルユーザエディタと関連して使用されるテレフォニーサービスアプリケーションの編集のためのテキストユーザエディタを提供し得る。アプリケーション開発の間、呼制御エレメント、及びダイアログエレメントのパレットを提供するデータベース405は、ユーザ401に対して利用可能にされ得る。データベース405は、アプリケーション開発を開始するのに用いる1組の基本エレメント、又はビルディングブロックを提供し得る。これらのエレメントは、ユーザ401によってカスタマイズ、編集、及び/又は新しいビルディングブロックと一体化され得て、並びに新しいアプリケーション呼フローで使用するための新しいエレメントとしてデータベース405に記憶され得る。また、データベース405は、アプリケーション開発をブートストラップするための予めバンドルされた、予め構成された、及び/又はテンプレート呼アプリケーション(即ち、「スタータキット」)も提供し得る。スタータキットは、種々の基本機能に対して呼制御、及びダイアログアプリケーションが如何にして実施され得るかを実演し得る。スタータキット中のファイルは、アプリケーション開発者によって直接的に使用され得るか、及び/又は新しい呼制御、及びダイアログアプリケーションを生成するための起点として機能し得る。データベース405によって提供された呼制御エレメント、及びダイアログエレメントは、1又は複数の特定の言語、例えば、CCXML、及び/又はVXML基づき得るか、又は汎用言語、例えば、汎用サービス作成マークアップ言語(GSCML)、若しくはXML図に基づく言語に基づき得て、それらは技術にとらわれない。産業の中には、SCMLと呼ばれることもある、サービス作成マークアップ言語を使用してきたものもある。ここでのサービス作成マークアップ言語の使用は、産業が定めたサービス作成マークアップ言語との関係を暗示しない。また、データベース405は、開発された呼制御ダイアログアプリケーション、及び/又はダイアログアプリケーションをカプセル化するための1組の Java Server Page (JSP)テンプレートを提供できる。JSPページは、ダイナミックコンテンツ生成を可能にする。また、データベース405は、データ検索のためのバックエンドシステムに接続するための呼制御アプリケーション、及び/又はダイアログアプリケーションによって使用される1組のデータベース記憶域クラスを提供し得る。データベース記憶域クラスは、その種の機能、例えば、カスタムプロンプト検索、口座確認、部門ディレクトリ・ルックアップ、 find-me/follow me 構成、及び/又は類似の構成を実行するためのアプリケーションによって使用される。SCE111は、開発されたアプリケーションを1又は複数の設計ファイルとしてデータベース415に記憶する。設計ファイルは、1又は複数の特定の言語、例えば、CCXML及び/又はVXMLに基づき得るか、又は汎用言語(例えば、GSCML)、若しくはXML図に基づく言語に基づき得て、それらは技術にとらわれない。
設計ファイルは、テスト及び/又は配備のためにユーザ401によってアプリケーションにアセンブルされ得る(420)。1又は複数の設計ファイルの呼制御部分は呼制御ウェブアプリケーションにアセンブルされ得て、呼制御ウェブアプリケーションは、テレフォニーサービスアプリケーションの呼制御部分を実施する ready-to-run ウェブアプリケーションである。1又は複数の設計ファイルのダイアログ部分はダイアログウェブアプリケーションにアセンブルされ得て、ダイアログウェブアプリケーションは、呼制御アプリケーションによって使用されるダイアログを実施する ready-to-run ウェブアプリケーションである。呼制御ウェブアプリケーション及び/又はダイアログウェブアプリケーションは、1又は複数のウェブアプリケーション・アーカイブファイル(warfile)にアセンブルされ得る。テレフォニーサービスアプリケーションの一部である全てのファイルは、(例えば、 warfile として)パッケージ化された形態で一緒にアセンブルされ得る。JSPファイル中で実施される任意のアプリケーションは、パッケージ化された形態にアセンブルされる前にコンパイルされ得る。コンパイル前のJSPファイルは、アプリケーションがアクセスされる間のコンパイルの実行時間オーバーヘッドを回避する。アセンブルされたアプリケーションは、設計ファイルとしてデータベース425に記憶され得る。
テレフォニーサービスアプリケーションは、ユーザ401によってテストされ得る(430)。テストはローカルウェブサーバを使用して実行され得て、例えば、統合開発環境(IDE)を使用してアプリケーションをデバッグすることを含み得る。例えば、アプリケーションはローカルウェブサーバに配備され得て、ウェブブラウザ中のアプリケーションに対して適切な Uniform Resource Locator (URL)を入力することによって実行され得る。まるでテレフォニーサービスアプリケーションが現実の環境に配備されるように、任意のサーバ側ロジックが実行され得る。戻されたアプリケーション、例えば、CCXML及び/又はVXMLテキスト、がウェブブラウザ中に表示され得る。もし所望するなら、IDEはウェブサーバで動作中のアプリケーションをリモートでデバッグするために使用され得て、アプリケーションのスクリプト(例えば、 Java ソース)コンポーネントのソースレベル・デバッグを容易にする。メディアサーバ及びソフトフォンは、適切なダイアログURLを用いてメディアサーバを呼び出すことによって、ダイアログを直接的にテストするために使用され得る。これは、まるでアプリケーションサーバによってそうするように命令されたように、メディアサーバにダイアログアプリケーションを検索させる。同様に、呼制御アプリケーションのテストも容易にされ得る。呼制御インタープリタプロセスでオープンされたリモートデバッグ・セッション、例えば、サービスロジック実行エンジンは、アプリケーションサーバで命令された呼の実行を遮断し得る。もし更なる開発のために必要なら、編集された、又はデバッグされた設計ファイルは、配備のためのデータベース425及び/又はデータベース415に戻され得る。
SCE111によって生成されたテレフォニーサービスアプリケーションは、例えば、ウェブサーバによってアクセス可能なウェブアプリケーションとして、データベースにユーザ401によって配備され得る(440)。テレフォニーサービスアプリケーションは、HTTPクライアント(例えば、アプリケーションサーバ110及び/又はメディアサーバ120)から受信した要求によって駆動され得る。配備は、ウェブアプリケーション・アーカイブファイル (warfile) を目的のアプリケーションサーバ110にコピーすることを含み得て、アプリケーションを起動することを含み得る。アプリケーションが目的のアプリケーションサーバ110にコピーされ得る機構は、FTP,SFTP,SCP、及び/又は他の転送プロトコルを含み得る。アプリケーションは、データベース425から目的のアプリケーションサーバ110のアプリケーション・ルートディレクトリ、及び/又は他のデータベースにコピーされ得る。アプリケーションサーバ110の管理機構は、テレフォニーサービスアプリケーションをそのサーバにインストールして起動するために使用され得る。例えば、 Jakarta の Tomcat サーバは、アプリケーションが配備され、撤去され、開始され、停止等される管理アプリケーションを提供する。目的のアプリケーションサーバ110は、生成されたテレフォニーサービスアプリケーションのホストとして機能し得る。アプリケーションサーバ110は、 Java Servlet 仕様(2.3/2.4)に準拠し得る。定められた目的のアプリケーションサーバは、 JBoss 4.0.x/4.1であり得る。
また、アプリケーション・アセンブリプロセス(420)及び/又は配備プロセス(440)は、変換規則を使用して中間言語から1又は複数の目的言語に1又は複数の設計ファイルを変換するプロセスも含み得る。データベース415及び/又は425に記憶された中間設計ファイル中のSCE111によって取り込まれた情報は、中間言語とは異なる1又は複数の目的言語のテレフォニーサービスアプリケーションの呼制御エレメント、及びダイアログエレメントの全体のトポロジを定めるのに充分であり得る。中間言語は、例えば、特定の言語、及び/又は汎用言語であり得る。目的言語は、特定の言語である。特定の言語は、例えば、CCXML,CPL,他の呼制御言語,VXML,MSCML,MSML,MOML,SALT,他のIVR言語、及び/又は他のダイアログ制御言語を含み得る。以下に記載するように、汎用言語は、UMLモデルの任意のクラスを表し得る。汎用言語は、例えば、GSCML、XML図に基づく言語、及び/又は他の技術にとらわれない言語を含み得る。中間設計ファイルは、例えば、拡張スタイルシート言語変換(XSLT)に基づき、変換規則を使用して目的設計ファイルに変換され得る。変換規則は、中間言語に基づく中間設計ファイルの少なくとも一部を目的言語に基づく目的設計ファイルに変換するための1又は複数の命令を指定し得る。変換規則は「テンプレート規則」に基づき得て、「テンプレート規則」は中間設計ファイル中の特定のノード、又はパターンと一致し、目的設計ファイルのための特定の出力を生成する。
本願明細書に添付の付録Aには、汎用中間言語を使用して呈示される中間設計ファイルを示すGSCMLのサンプル設計ファイルがリストアップされる。付録Aにリストアップされた設計ファイルは、入呼に適用されるアプリケーションを示す。アプリケーションはオフ・プラットフォーム・ウェブリソースを呼び出して、何れの呼出し音が発呼者を表すかを決定する。データベース中の発呼者番号をルックアップすること、及び関連する呼出し音ファイル名を返すことによって、呼出し音が決定される。アプリケーションは、メディアサーバで実行されるVXMLダイアログを呼び出す。メディアサーバは、選択された呼出し音を鳴らす。被呼者が応答するとき、呼出し音は終了し(即ち、ダイアログが終了し)、発呼者と被呼者は通話で接続される。
付録Aに示される中間設計ファイルは、XSLT 変換規則を使用してCCXML目的言語に変換され得る。付録Bにリストアップされるのは、変換後に付録AにリストアップされるGSCMLドキュメントに対応するCCXMLに基づく目的設計ファイルである。
以下は、汎用中間言語を使用して表される中間設計ファイルを示すGSCMLに基づく他のサンプル設計ファイルである。次の設計ファイルは、上記のCCXMLアプリケーションに関連するダイアログアプリケーションを表す。

<?xml version="1.0" encoding="UTF-8" ?>
<design xmlns="http://www.sonusnet.com/sce" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" id="playmusic" type="dialog" version="V01.01.00R005">
<prolog>
<decls/>
</prolog>
<components>
<comp xsi:type="Start" id="Start8">
<extension>
<graphic xsi:type="anyType" x="153" y="92"/>
</extension>
<outputs/>
<exits>
<exit name="next" target="music"/>
</exits>
</comp>
<comp xsi:type="Prompt" id="music">
<extension>
<graphic xsi:type="anyType" x="179" y="276"/>
</extension>
<outputs/>
<exits>
<exit name="next" target="End10"/>
</exits>
<prompts>
<audio src="prompt" file="static" scope="param">TTS prompt text</audio>
</prompts>
</comp>
<comp xsi:type="End" id="End10">
<extension>
<graphic xsi:type="anyType" x="177" y="413"/>
</extension>
<outputs/>
</comp>
</components>
<epilog/>
</design>
上記の中間設計ファイルは、XSLT変換規則を使用してVXML目的言語に変換され得る。付録Cにリストアップされたのは、VXMLに基づき、変換後に上記のGSCMLドキュメントに対応するJSPページの内部で実施される目的設計ファイルである。
図4では、データベース405,415,425は互いに分離されるが、他の構成も使用され得る。例えば、データベース405,415,425の1又は複数が同じデータベースであり得る。
上記のように、中間設計ファイルを表すための汎用言語は、必要な呼制御の全て、及び1又は複数の特定の目的言語の生成を容易にするために必要なダイアログ情報を含むように設計され得る。図5A及び図5Bは、汎用言語モデルの呼制御エレメント、及びダイアログエレメントを表す例示的な Universal Modeling Language (UML)を示すブロック図500及びブロック図550である。ブロック図500及びブロック図550で示されるクラスは、アプリケーションを構成する呼制御、及びダイアログ呼フローで使用される利用可能なエレメントに対する定義のソースとして使用し得る。このモデルは利用可能な設計コンポーネントを定め得るだけでなく、SCE111によって生成された設計ファイルの構造も指定し得る。
UMLクラス図500は、呼制御クラス及びダイアログクラスの例示的なベースコンポーネント構造の関連関係を示す。 Design クラス501は、設計ファイルに対する全体のコンテナである。 Design クラス501に関連するのは、 Prolog クラス502、1又は複数の Component クラス503、及び/又 Epilog クラス504であり得る。 Prolog クラス502は、例えば、アプリケーションによって使用される広域変数宣言のようなエレメントを含み得る。1又は複数の Component クラス503は、設計ファイルを構成するコンポーネントに対する全体のコンテナであり得る。各 Component クラス503は、 Inputs 505、Outputs 506 及び Exits 507の空でない組の任意の収集を有する。 Inputs 505は、コンポーネントによって利用され得るデータを定め得る。 Outputs 506は、コンポーネントによって生成されたデータを定め得る。 Exits 507はコンポーネントの範囲外の変化を定め得て、実行中の変化に対する「次の」コンポーネントに関連付けられる。「End」クラス及び「Abort」クラスを除く各 Component クラス503は、少なくとも1つの出口を有するべきである。UMLクラス図500は、汎用言語を表す利用可能な呼制御コンポーネント、及びダイアログ設計コンポーネントをカプセル化する高レベル構造である。
UMLクラス図550は、テレフォニーサービスアプリケーションの呼制御部分、及びダイアログ部分を表すために使用される Component クラス503の一般化された関係を示す。 Component クラス503は、呼制御クラス510、及びダイアログクラス530を含み得る一般化されたクラスである。呼制御クラス510は、次のクラス、 Start 511、 End 512、 Log 513、 Dialog 514、 CallAction 515及び/又は類似のクラスの1又は複数を含み得る一般化されたクラスである。 Start クラス511は、アプリケーションの起点を定め得る。 End クラス512は、アプリケーションの終点を定め得る。 Log クラス513は、プラットフォーム・ログ・メッセージを発し得る。 Dialog クラス514は、ユーザ対話ダイアログを呼び出し得る。 CallAction クラス515は、 Answer 521、Connect 522、Redirect 523、Remove 524、Disconnect 525、CreateCall 526、CreateConference 527、及び/又は類似の関数を含む、全ての呼に関連する管理関数に対するベースクラスである。 Answer クラス521は、入呼に応え得る。 Connect クラス522は、 call leg を他の call leg 又は conference に接続し得る。例えば、 Connect クラス522は、 <join> を定める。 Redirect クラス523は、入呼をリダイレクトし得る。 Remove クラス524は、他の call leg 又は conference から call leg を除去し得る。例えば、 Remove クラス524は、 <unjoin> を定め得る。 Disconnect クラス525は、 call leg 又は dialog を切断し得る。 CreateCall クラス526は、新しい call leg を創出し得る。 CreateConference クラス527は、新しい conference を創出し得る。また、 CallAction クラス515は、図示されない追加のクラスも含み得る。例えば、 Reject 及び/又は RemoveConference である。 Reject クラスは、入呼を拒否し得る。 RemoveConference クラスは、 conference を破棄し得る。
また、呼制御クラス510は、図示されない追加のクラスも含み得る。例えば、 Decision, Error, Event, Assignment, Script, Timer, 及び/又は Action である。その出力が関連する条件によって2以上の変化を起こすとき、 Decision クラスはコンポーネントの「ファンアウト」特定出力として使用され得る。 Error クラスは、広域エラーハンドラであり得る。 Event クラスは、統計カウンタをインクリメントするための機構であり得る。 Assignment クラスは、表現式を変数に割り当て得る。 Script クラスは、ECMAスクリプト・プログラミングを容易にし得る。 Timer クラスはスタートタイマ、及びキャンセルタイマとして使用し得て、キャンセルされたタイマは経過した時間をキャンセルされる前に戻し得る。 Action クラスは、他のシステムと通信するために使用され得る。例えば、Action クラスは、 <send> を定める。 Dialog クラスは PlayPrompt クラスのためのベースクラスであり得て、 PlayPrompt クラスは予測される、又は可能なユーザ対話なしにオーディオ出力だけを再生し得る。
Dialog クラス530は、次のクラス Start 531, End 532, Log 533, Form 534, Menu 535, Play 536, 及び/又は類似のクラスの1又は複数を含み得る一般化されたクラスである。 Start クラス531は、アプリケーションの起点を定め得る。 End クラス532は、アプリケーションの終点を定め得る。 Log クラス533は、プラットフォーム・ログ・メッセージを発し得る。 Form クラス534は、複数の PromptCollect/PlayPrompt コンポーネントを管理するためのコンテナであり得る。 Menu クラス535は、入力に依存する多くのデスティネーションの1つに対して変化し得る単一の(複数選択の)入力を有する Form クラスであり得る。例えば、ユーザ対話が予測されない、又は可能でないとき、 Play クラス535はオーディオ出力を再生する。 Play クラス535は PromptCollect クラス540に対するベースクラスであり、 PromptCollect クラス540は、ユーザ入力を可能にすることによって「Play」を拡張し得る。 PromptCollect クラス540は Record クラス541に対するベースクラスであり得て、後の再生、又はサーバ側処理のための口述入力を録音することによって、 Record クラス541は PromptCollect クラス540を拡張し得る。
また、 Dialog クラス530は、図示されない追加のクラスも含み得る。例えば、 Abort, Decision, Error, Event, Assignment, Script, External, Timer, Action, PromptCollect, 及び/又は CallAction である。 Abort クラスは、アプリケーションのエラー状態終点を定め得る。その出力が 関連する条件によって2以上の変化を起こすとき、 Decision クラスはコンポーネントの「ファンアウト」特定出力に対して使用し得る。 Error クラスは、広域エラーハンドラであり得る。 Event クラスは、統計カウンタをインクリメントするための機構であり得る。 Assignment クラスは、表現式を変数に割り当て得る。 Script クラスは、ECMAスクリプト・プログラミングを容易にし得る。 External クラスは、ダイアログコンポーネントの外部実施であり得る。例えば、 External クラスは、 <subdialog> 呼を定め得る。 Timer クラスはスタートタイマ、及びキャンセルタイマに対して使用い得て、キャンセルされたタイマは経過した時間をキャンセルされる前に戻し得る。 Action クラスは、他のシステムと通信するために使用され得る。例えば、 Action クラスは <subdialog>, <submit>, 及び/又は <goto> を定め得る。 PromptCollect クラスは、ユーザ入力を促して集めるユーザ対話を定め得る。 CallAction クラスは Transfer クラスを含む全ての呼に関連する管理関数に対するベースクラスであり得て、 Transfer クラスは呼を転送し得る。
図6Aは、SCE111によってテレフォニーサービスを生成することに関連する例示的なグラフィカルユーザーインターフェース600を示すブロック図である。SCE111は、呼制御アプリケーション、及び関連するダイアログ制御アプリケーションをグラフィカルに開発するためのツールのパレットを提供し得る。グラフィカルユーザーインターフェース600は、メインウィンドウ601、ナビゲータウィンドウ602、ダイアログエレメントウィンドウ603、呼制御エレメントウィンドウ604、及びアウトラインウィンドウ605を含む。ナビゲータウィンドウ602は、開発中の、及び/又は他のアプリケーションディレクトリへのアクセスを提供するアプリケーションのワーキングディレクトリをリストアップし得る。図6Bに示されるダイアログエレメントウィンドウ603は、テレフォニーサービスアプリケーションの開発のための基本的なダイアログエレメントのパレットを提供し得る。基本的なダイアログエレメントは、 Abort 関数、 Assign 関数、 Counter 関数、 Decision 関数、1又は複数の Dialog Action 関数、 Dispatch Action 関数、1又は複数の Dispatch Target 関数、 End 関数、 Error Return 関数、 External Action 関数、1又は複数の Prompt 関数、 Return 関数、 Start 関数、及び/又は他のダイアログ関連関数を含み得る。ウィンドウ603に示される基本的なダイアログエレメントの各々は、ブロック図550に示されるような各UMLダイアログコンポーネントによって呈示され得る。図6Cに示される呼制御エレメントウィンドウ604は、テレフォニーサービスアプリケーションの開発のための基本的な呼制御エレメントのパレットを提供し得る。基本的な呼制御エレメントは、 Abort 関数、 Assign 関数、 Call Action 関数、 Counter 関数、 Decision 関数、1又は複数の Dialog Action 関数、 Dispatch Action 関数、1又は複数の Dispatch Target 関数、 End 関数、 External Action 関数、 Start 関数、及び/又は他の呼制御関連関数を含み得る。ウィンドウ604の各々に示される基本的な呼制御エレメントは、ブロック図550に示されるような各UML呼制御コンポーネントによって呈示され得る。
図6Dに示されるメインウィンドウ601は、発呼者に暗証番号の入力を促す例示のテレフォニーサービスアプリケーションの開発をグラフィカルに示す。呼フローは Start エレメント610から始まり、 Start エレメント610は呼セッションを開始する呼制御エレメントであり得る。呼フローは Main Menu エレメント620に進み、 Main Menu エレメント620は、例えば、ユーザにオプションのリストを表示し得る。ユーザ入力に応答して、例えば、呼フローは Get Number エレメント630に進む。もし Get Number エレメント630がエラーに遭遇したら、呼フローは Exit エレメント690に進む。もし Get Number エレメント630が正常に実行されたら、呼フローは Register Number Action dialog エレメント640に進み、 Register Number Action dialog エレメント640は収集された番号をデータベースに登録する。もし Register Number Action dialog エレメント640がユーザの暗証番号を正常に登録したら、呼フローは Main Menu エレメント620に戻る。もし Register Number Action dialog エレメント640が障害に遭遇したら、 Retry Decision エレメント660に進む前に、呼フローは Counter エレメント650に進む。もし Retry Decision 関数660が真を返したら、呼フローは proceeds to a Wrong Number Prompt エレメント670に進み、 Wrong Number Prompt エレメント670はユーザに番号を再入力する必要があることを知らせ、 Get Number エレメント630に戻る。もし Retry Decision エレメント670が偽を返したら(例えば、カウンタの値が予め定められた値を超えたとき)、 Exit エレメント690に進む前に、呼フローは Hang-up Prompt エレメント680に進む。
アプリケーションサーバ(実行時間の側面)
図7は、図1の例示的なネットワーク100で示されるアプリケーションサーバ110のコンポーネントを示すブロック図700である。アプリケーションサーバ110は、サービスロジック実行エンジン(SLEE)710、呼セッションマネージャ(CSM)720、ダイアログマネージャ(DM)730、SIPアダプタ740、及びSIPアクセス層750を含む。SLEE710は呼のセッションコントローラであり、テレフォニーサービスアプリケーションの呼フローを制御するためのスクリプト可能な環境(例えば、CCXML)を提供するように適合される。CSM720は、呼状態情報を維持することによってテレフォニーサービスに参加している個別の呼セッションを管理する。テレフォニーサービスは、任意の時点の呼に参加している1又は複数のセッションを有し得る。CSM720は、各セッションに対する状態変化に従事している有限状態機械を有し得る。また、CSM720は、 call leg を結合し、呼を切断し、呼をキャンセルするためのサポート、及び/又は他の呼セッション関数も提供し得る。CSM720は、SLEE710とSLEEアプリケーションプログラムインターフェース(SAPI)712を介してインターフェースする。DM730は、SLEE710によって実行されるテレフォニーサービスアプリケーションに含まれ得るダイアログ要求を処理する。DM730は、適用可能なダイアログアプリケーションがロケート、及び/又は実行され得るメディアサーバ120を決定し得る。また、DM730は、フローの処理のためのサポートに関連するダイアログを提供することを担い得る。DM730は、SLEE710とSAPI711を介してインターフェースする。SAPI711,712は、SLEE710が呼フロー、及びダイアログを容易にすることを要求する1組のプリミティブを提供し得る。ダイアログを開始するためのメディアサーバ120を用いてセッションを設定するために、DM730はCSM720とアプリケーションプログラムインターフェース(API)713を介してインターフェースする。
SIPアダプタ740は、ネットワーク101を通してアプリケーションサーバ110に送信されたSIPメッセージを逐次解釈し、信号メッセージをCSM720に呈示する。また、SIPアダプタ740は、ネットワーク101を通して送信されるCSM720から受信するSIPメッセージも構成し得る。SIPアダプタ740は、CSM720にインターフェース714を介して結合される。SIPアクセス層750は、例えば、 User Datagram Protocol (UDP)、 Transmission Control Protocol (TCP)、 Stream Control Transmission Protocol (SCTP)、及び/又は他の転送プロトコルに準拠するパケットからの、ネットワーク101から入ってくるSIPメッセージを構文解析する。また、SIPアクセス層750は、例えば、UDP、TCP、SCTP、及び/又は他の転送プロトコルに準拠するパケット中の送出SIPメッセージのカプセル化も提供し得る。また、SIPアクセス層750は、着信、及び/又は送出SIPメッセージのフォーマットをカスタマイズ、及び/又は操作し得る。カスタマイズ、及び/又は操作は、異なるSIPエージェントが異なるSIPフォーマットを使用する相互作用シナリオにおいて有用であり得る。SIPアダプタ740、及びSIPアクセス層750は、SIPのプロトコルレベルの詳細からCSM720をシールドする。また、SIPアダプタ740、及びSIPアクセス層750は、SIPメッセージに対する転送、及び受信エンジンも形成する。
図8は、例えば、ユーザ165とメディアサーバ120の間の呼を設定するためのテレフォニーサービスアプリケーションの実行を表す呼フロー800を示す。呼は、例えば、データベース中のユーザがアクセスを所望する情報であり得る。呼フロー800のエレメントは、SIP、図7のアプリケーションサーバ110のコンポーネント、及び図1の例示的なネットワーク100に基づく信号メッセージを使用して記述される。しかし、他の信号プロトコルも使用され得る。ユーザが INVITE メッセージをアプリケーションサーバ110に送信するとき、ラダー図が始まる。 INVITE メッセージは、SIPアダプタ740によって受信される。SIPアダプタ740は、 INVITE メッセージを逐次解釈し、 INVITE メッセージから得られた関連情報を保持するCSM720にセッション設定指示メッセージを送信する。SIPアダプタ740は、 100 TRYING メッセージをユーザに送信する。CSM720は、接続設定通メッセージをSLEE710に送信する。SLEE710は、接続設定通メッセージから、どのアプリケーション(例えば、特定のCCXMLキュメント)が要求されているかを決定し、関連したアプリケーションを適切なデータベース(図示されない)、例えば、ウェブサーバからHTTPを使用して検索する。SLEE710は、接続回答命令メッセージをCSM720に送信する。CSM720は、セッション設定応答メッセージをSIPアダプタ740に送信する。SIPアダプタ740は 200 OK メッセージをユーザに送信し、ユーザにアプリケーションサーバ110が関連したテレフォニーサービスアプリケーションを正常に検索したことを知らせる。ユーザは、 ACK メッセージをSIPアダプタ740に送信する。SIPアダプタ740は、セッション設定確認メッセージをCSM740に送信する。CSM740は、接続回答返信メッセージをSLEE710に送信する。SLEE710によって実行中のテレフォニーサービスアプリケーションによって定められ制御される呼フローは、ダイアログアプリケーションが要求され、ダイアログ開始命令メッセージをDM730に送信することを決定する。DM730は、ダイアログアプリケーション(例えば、VXMLドキュメント)がメディアサーバ120において利用可能であることを決定する。DM730は接続設定命令メッセージをCSM720に送信し、メディアサーバ120と接続することを要求する。CSM720はセッション設定要求メッセージをSIPアダプタ740に送信する。SIPアダプタ740は、 INVITE メッセージをメディアサーバ120に送信する。メディアサーバ120は、 200 OK メッセージをSIPアダプタ740に送信して、アプリケーションサーバ110に関連したテレフォニーサービスアプリケーションが正常に検索されたことを知らせる。SIPアダプタ740は、 ACK メッセージをメディアサーバ120に送信する。SIPアダプタ740は、セッション設定確認メッセージをCSM720に送信する。CSM720は、接続設定返信メッセージをDM730に送信する。DM730は、ユーザとメディアサーバ120の間の接続が確立されるべきであることを決定する。DM730は、接続結合命令メッセージをCSM720に送信する。CSM720は、セッション変更要求メッセージをSIPアダプタ740に送信して、ユーザとの結合を要求する。SIPアダプタ740は、メディアサーバ120を指示するセッション記述プロトコル(SDP)を用いて、 INVITE メッセージをユーザに送信する。ユーザは、 200 OK メッセージをSIPアダプタ740に送信する。SIPアダプタ740は、 ACK メッセージをユーザに送信する。SIPアダプタ740は、セッション変更応答メッセージをCSM720に送信する。CSM720は、セッション変更要求メッセージをSIPアダプタ740に送信し、メディアサーバ120に結合することを要求する。SIPアダプタ740は、ユーザを指示するセッション記述プロトコル(SDP)を用いて、 INVITE メッセージをメディアサーバ120に送信する。メディアサーバ120は、 200 OK メッセージをSIPアダプタ740に送信する。SIPアダプタ740は、 ACK メッセージをメディアサーバ120に送信する。SIPアダプタ740は、セッション変更応答メッセージをCSM720に送信する。CSM720は、接続結合返信メッセージをDM730に送信する。DM730はダイアログ開始返信をSLEE710に送信し、ユーザとメディアサーバ120の間のダイアログ対話が開始されたことを示す。ユーザは、例えば、リアルタイム転送プロトコル(RTP)を使用して、情報をメディアサーバ120と交換する。
図9は、図7のSIPアクセス層750のコンポーネントを示すブロック図である。SIPアクセス層750は、SIPカスタマイザ910、トランスポート層920、及びソケットインターフェース930を含む。ソケットインターフェース930は、パケット中でカプセル化されたSIPメッセージをパケットネットワーク101と送受信するためのソケット層機能を提供し得る。ソケットインターフェース930は、UDP、TCP、SCTP、及び/又は他の転送プロトコルに対する物理層サービスを提供し得る。1つのSIPメッセージは、UDPパケット、又は1若しくは複数のTCPパケットとして送信、又は受信され得る。何故ならば、TCPは転送プロトコルに基づくストリームだからである。トランスポート層920は、SIPカスタマイザ910から受信される送出SIPメッセージからパケットを形成し得て、パケットネットワーク101を通した伝送のためのソケットインターフェース930まで通過させる。また、トランスポート層920は、1又は複数のパケットでカプセル化されたソケットインターフェース930から受信された着信SIPメッセージからメッセージ境界も識別できる。着信SIPメッセージはバッファ中に収集され得て、バッファはSIPカスタマイザ910まで通過させられて受信される。着信SIPメッセージに加えて、トランスポート層920は、SIPメッセージに関連する追加のパラメータをSIPカスタマイザ910まで通過させ得る。また、SIPカスタマイザ910は、パケットネットワーク101に送信されるSIPアダプタ740から送出SIPメッセージも受信し得る。SIPメッセージに関連するパラメータは、(ソース、及び/又はデスティネーション)IPアドレス、IPポート番号、接続ID(TCPのみ)、SIPメソッド、及び/又は他のSIPパラメータを含み得る。SIPメソッドは、 INVITE, RE-INVITE, REGISTER, ACK, CANCEL, BYE, OPTIONS, INFO, NOTIFY, SUBSCRIBE, UNSUBSCRIBE, UPDATE, MESSAGE, REFER, PRACK, PUBLISH, 他のSIPメッセージ型、又はそれらの組み合わせを含み得る。
SIPカスタマイザ910は、着信、及び/又は送出SIPメッセージを、1つのフォーマットから他のフォーマットへ、例えば、1又は複数の命令を含むスクリプトを使用して変換し得る。着信SIPメッセージは、SIPカスタマイザ910によってトランスポート層920から受信され、送出SIPメッセージは、SIPカスタマイザ910によってSIPアダプタ740から受信される。SIPメッセージのエレメントは、第1のライン、1又は複数のヘッダ、及び本体部分を含み得る。相互作用シナリオでは、エンドエージェント、及び/又はベンダの中には、SIPメッセージの任意のエレメントに対して異なるフォーマットを実施するものもある。認識されないフォーマットでSIPメッセージを受信するエンドエージェントは、信号メッセージの処理中にエラーをもたらし得る。SIPメッセージに対してどのフォーマットを使用するかにかかわらず、相互作用シナリオのメッセージ・カスタマイズは、エンドエージェントが互いの相互運用を容易にすることを可能にする。メッセージ・カスタマイズ・スクリプトを使用することは利点である。何故ならば、SIPプロトコルレベル自体においてコードを変更することと比較して、システム設計が大幅に単純化されるからである。また、スクリプトを使用することの単純さも、SIP処理システムの更に迅速な開発、テスト、及び/又は市場流通を可能にする。例えば、スクリプトは Practical Extraction and Report 言語(PERL)、 Tool Command 言語(TCL)、C言語、C++言語、及び/又は他のプログラミング言語を含み得る。また、SIPカスタマイズ スクリプトを使用することは、早い開発も可能にする。何故ならば、スクリプトは容易に創出し得るからである。文字列操作に適合したスクリプト(例えば、PERL)は、SIPカスタマイズに特に適合する。何故ならば、SIPはテキストベースのプロトコルだからである。加えて、スクリプトは、更に大きな柔軟性をユーザ(例えば、サービスプロバイダ)に提供する。何故ならば、ユーザは、パッチのリリースを待つ代わりに、相互作用シナリオ中のSIPカスタマイズに対するスクリプトを変更、及び/又は追加できるからである。また、SIPカスタマイズは、SIPパラメータ、及びメッセージ本体が、SIPメッセージに挿入、またはSIPメッセージから抽出される特化したアプリケーションの配信に対して有用であることを可能にし得る。
SIPカスタマイザ910は、受信したSIPメッセージを変換するためにどのスクリプトを使用するか決定するための1又は複数の規則、及び/又は基準の組を使用し得る。規則、及び/又は基準は、データベースに記憶され得る。規則は、SIPメッセージの1又は複数のパラメータ、及び/又はSIPメッセージが着信、又は送出であるか否かに基づき得る。規則、及びスクリプトの例示の関連は、次の表に示される。

着信 送出
規則 基準 スクリプト 基準 スクリプト

10.1.1.1 InCr_IP1.pl InSc_IP1.pl OutCr_IP1.pl OutSc_IP1.pl
10.1.1.2 InCr_IP2.pl InSc_IP2.pl OutCr_IP2.pl OutSc_IP2.pl
10.1.1.3 INVITE InSc_IP3.pl INVITE OutSc_IP3.pl

この実施例では、予め構成された規則、及びスクリプトは、 10.1.1.1, 10.1.1.2, 及び 10.1.1.3 のIPアドレスを有するエンドエージェントとの相互運用を容易にするように創出されてきた。例えば、サービスプロバイダは、これらのエージェントが、それらのSIPメッセージに対して異なるフォーマットを実施するSIPベンダを使用することを認識する。規則は、SIPメッセージに関連する着信、及び/又は送出IPアドレスに基づいて定められる。例えば、SIPメッセージがIPアドレス 10.1.1.1 を有するエンドエージェントから着信するとき、SIPカスタマイザ910は、着信基準ファイル InCr_IP1.pl を用いてSIPメッセージを処理する。基準ファイルは、例えば、SIPメソッドのような他の規則であり得るか、又はPERLに基づくスクリプトでもあり得る。着信基準ファイルは、SIPメッセージに関連する他のパラメータに基づいて、どのスクリプトがメッセージ・カスタマイズに対して適用可能であるかを決定し得る。この実施例では、着信スクリプトファイル InSc_IP1.pl が検索され、このファイルを使用してSIPメッセージがカスタマイズされる。SIPアダプタ740によって認識可能なフォーマットにSIPメッセージが変換された後、着信SIPメッセージはSIPアダプタ740まで通過する。同様に、 10.1.1.1 に向けられる送出SIPメッセージは、 10.1.1.1 におけるSIPエージェントによって使用されるフォーマットにSIPカスタマイザ910によって変換され得て、トランスポート層920まで通過し得る。
上記の情報を使用する規則、及びスクリプトの他の例示の関連は、次の表に示される。

欄 定義

名前 メッセージ・カスタマイズ・オブジェクトに対する名前
記述 オブジェクトを記述するテキスト欄
IPアドレス 着信、又は送出メッセージに対するソース、
又はデスティネーションIPアドレス/ネットマスクを定める。
ポート番号 着信、又は送出メッセージに対するソース、
又はデスティネーション・ポートを定める。
ポート番号を0と指定することによって、
ポートとの整合が開始され得る。
SIPメソッド このメッセージ・カスタマイズが適用される
SIPメソッドを選択する。
可能な選択は、次のようである。
INVITE SIP/2.0
INFO CANCEL
OPTIONS BYE
ACK SUBSCRIBE
NOTIFY REFER
SIP ALL
メッセージ方向 これが着信、又は送出メッセージ・カスタマイズの
何れであるかを定める。
スクリプト名 メッセージ・カスタマイズ・スクリプトの名前

この実施例では、カスタマイズ・オブジェクトが定められ、名前欄、オプション記述欄、1又は複数の規則(例えば、IPアドレス)、及びSIPメッセージをカスタマイズするための対応スクリプトの名前を含む。
下記は、第1フォーマットに準拠するサンプルSIPメッセージである。SIPメッセージは 受信したSIP INVITE メッセージに対応し、SIPメッセージが、2つの発呼者の間の音声経路が非活動状態であると誤って示す。

INVITE sip:9788461032@208.45.178.195:5060 SIP/2.0
Via: SIP/2.0/UDP 208.45.178.155:5060;branch=z9hG4bK008f42648f4cc33f
From: <sip:imx@208.45.178.155:5060>;tag=gK0000324b
To: "SipClient" <sip:9788461032@208.45.178.195:5060>;tag=gK0a8038c7
Call-ID: b855bb74-ffff-ffff-8000-000e0c9f6001_136880601@208.45.178.155
CSeq: 1441885107 INVITE
Max-Forwards: 70
Allow: INVITE,ACK,CANCEL,BYE,INFO
Accept: multipart/mixed, application/sdp, application/isup, application/dtmf, application/dtmf-relay
Contact: <sip:imx@208.45.178.155:5060>
Content-Length: 183
Content-Disposition: session; handling=optional
Content-Type: application/sdp
v=0
o=Sonus_UAC 25893 19024 IN IP4 208.45.178.195
s=SIP Media Capabilities
c=IN IP4 208.45.178.163
t=0 0
m=audio 5430 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=inactive
a=maxptime:20
下記の第2フォーマットに準拠する目的SIPメッセージを生成するために、上記のSIPメッセージはカスタマイズされ得る。この場合、カスタマイズ・スクリプトは音声経路の誤った非活動状態を認識し得て、経路を再イネーブルし得る。

INVITE sip:9788461032@208.45.178.195:5060 SIP/2.0
Via: SIP/2.0/UDP 208.45.178.155:5060;branch=z9hG4bK008f42648f4cc33f
From: <sip:imx@208.45.178.155:5060>;tag=gK0000324b
To: "SipClient" <sip:9788461032@208.45.178.195:5060>;tag=gK0a8038c7
Call-ID: b855bb74-ffff-ffff-8000-000e0c9f6001_136880601@208.45.178.155
CSeq: 1441885107 INVITE
Max-Forwards: 70
Allow: INVITE,ACK,CANCEL,BYE,INFO
Accept: multipart/mixed, application/sdp, application/isup, application/dtmf, application/dtmf-relay
Contact: <sip:imx@208.45.178.155:5060>
Content-Length: 183
Content-Disposition: session; handling=optional
Content-Type: application/sdp
v=0
o=Sonus_UAC 25893 19024 IN IP4 208.45.178.195
s=SIP Media Capabilities
c=IN IP4 208.45.178.163
t=0 0
m=audio 5430 RTP/AVP 0
a=rtpmap:0 PCMU/8000
a=sendrecv
a=maxptime:20
下記のように、上記で使用されるカスタマイズ・スクリプトは、PERLスクリプトであり得る。

#!/usr/bin/perl
# this simple example changes the string "inactive" to the string "sendrecv"
# when the input line is of the form 'string1=inactive'
sub Embed::Persistent::manipBuffer {
my $outbuf="";
my @lines = split( '\n', $_[0] );
foreach ( @lines ) {
if ( $_ =~ /(\w+)(=)(.*)(inactive)(.*)/ ) {
$outbuf = $outbuf. "$1$2$3sendrecv$5\n";
} else {
$outbuf = $outbuf."$_\n";
}
}
return $outbuf;
}
上記の技術は、ディジタル電子回路で、又はコンピュータ・ハードウェア、ファームウェア、ソフトウェア、若しくはそれらの組み合わせで実施され得る。実施は、コンピュータプログラムプロダクト、即ち、データ処理装置、例えば、プログラム可能なプロセッサ、1又は複数のコンピュータの動作によって実行するための(又は、データ処理装置、例えば、プログラム可能なプロセッサ、1又は複数のコンピュータの動作の動作を制御するための)情報担体、例えば、機会読み取り可能な記憶装置、又は伝搬信号で実体的に実施されるコンピュータプログラムであり得る。コンピュータプログラムはコンパイル、又は逐次解釈された言語を含む任意の形態のプログラミング言語で書き得て、コンピュータプログラムは、スタンドアロン・プログラム、又はサブルーチン、エレメント、若しくはコンピュータ環境での仕様に適する他のユニットを含む任意の形態で配備され得る。コンピュータプログラムは、1つのサイトにおいて1又は複数のコンピュータで実行されるように配備され得る。
方法ステップは、入力データで動作すること、及び出力を生成することによって本発明の機能を実行するためのコンピュータプログラムを実行する1又は複数のプログラム可能なプロセッサによって実行され得る。また、方法ステップ、及び装置は、特定目的の論理回路、例えば、FPGA(field programmable gate array)又はASIC(application-specific integrated circuit)として実施され得る。サブルーチンは、コンピュータプログラム、及び/又はその機能を実施するプロセッサ/特別回路の一部を呼び得る。
コンピュータプログラムの実行に適するプロセッサは、一例として、一般用途、及び特定用途のマイクロプロセッサの両方、並びに任意の種類のディジタルコンピュータの1又は複数のプロセッサを含む。一般に、プロセッサは、命令、及びデータを読み出し専用メモリ、ランダムアクセスメモリ、又は両方から受信する。コンピュータの基本要素は、命令を実行するためのプロセッサ、並びに命令、及びデータを記憶するための1又は複数のメモリ装置である。一般に、コンピュータは、データを記憶するための1又は複数の大容量記憶装置、例えば、磁気ディスク、光磁気ディスク、若しくは光ディスクも含むか、又はデータを送信、受信、若しくは両方のために動作可能なように結合される。また、データ伝送、及び命令は、通信ネットワークを通して起こり得る。コンピュータプログラム命令、及びデータを実施するのに適した情報担体は、全ての形態の不揮発性メモリ、一例として、半導体メモリ装置(例えば、 EPROM, EEPROM, 及びフラッシュメモリ装置)、磁気ディスク(例えば、内蔵ハードディスク、又はリムーバブル・ディスク)、光磁気ディスク、CD−ROMディスク、及びDVD−ROMディスクを含む。プロセッサ、及びメモリは、特定目的の論理回路によって追加されるか、又は特定目的の論理回路に内蔵される。
対話をユーザに提供するために、情報をユーザに表示するためのディスプレイ装置、例えば、CRT(cathode ray tube)又はLCD(liquid crystal display)モニタ、キーボード、及びユーザが入力をコンピュータに提供し得る(例えば、ユーザ・インターフェース・エレメントと相互作用する)ポインティング装置、例えば、マウス、又はトラックボールを有するコンピュータ上で上記の技術は実施し得る。同様に、他の種類の装置も、対話をユーザに提供するために使用され得る。例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックであり得てユーザからの入力は、聴覚、口述、又は触覚入力を含む任意の形態で受信され得る。
上記の技術は、例えば、データサーバとしてバックエンド・コンポーネント、及び/又はミドルウェア・コンポーネントとして、例えば、アプリケーションサーバ、及び/又はフロントエンド・コンポーネントとして、例えば、グラフィカルユーザーインターフェース、及び/又はユーザが実施例と相互作用するウェブブラウザを有するクライアント・コンピュータ、又はバックエンド・コンポーネント、ミドルウェア・コンポーネント、又はフロントエンド・コンポーネントの任意の組み合わせを含む分布コンピュータシステムで実施され得る。システムのコンポーネントは、ディジタルデータ通信の任意の形態、又は媒体、例えば、通信ネットワークによって相互接続され得る。通信ネットワークの実施例は、ローカルエリアネットワーク(「LAN」)、及びワイドエリアネットワーク(「WAN」)、例えば、インターネットを含み、有線ネットワーク、及び無線ネットワークの両方を含む。
コンピュータシステムは、クライアント、及びサーバを含み得る。クライアント、及びサーバは一般に互いに離れており、典型的には通信ネットワークを通して相互作用する。クライアントとサーバの関係は、各コンピュータで動作し、クライアント−サーバ関係を互いに有するコンピュータプログラムによって生じる。
以上、本発明の好ましい実施例について図示し記載したが、特許請求の範囲によって定められる本発明の範囲から逸脱することなしに種々の変形および変更がなし得ることは、当業者には明らかであろう。
付録A

<?xml version="1.0" encoding="UTF-8" ?>
<design xmlns="http://www.sonusnet.com/sce" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" id="ringback" type="callcontrol" version="V01.01.00R006">
<prolog>
<decls>
<decl expr="'http://10.6.35.63:8080'" id="webServerUrl"/>
<decl expr="'/ringback'" id="appName"/>
<decl expr="'ringback'" id="logLabel"/>
</decls>
</prolog>
<components>
<comp xsi:type="Start" id="start">
<extension>
<graphic xsi:type="anyType" x="17" y="10"/>
</extension>
<outputs/>
<exits>
<exit name="ringing" target="fetchPromptId"/>
</exits>
</comp>
<comp xsi:type="Action" id="fetchPromptId">
<extension>
<graphic xsi:type="anyType" x="230" y="25"/>
</extension>
<outputs>
<output expr="session.connections[evt.connectionid].remote" id="incallingnum"/>
<output expr="evt.connectionid" id="ingressid"/>
<output expr="session.connections[evt.connectionid].local" id="incallednum"/>
</outputs>
<exits>
<exit name="response" target="fetchmusic"/>
</exits>
<logbefore category="logLabel" msg="'Calling web server to get prompt id...'"/>
<invocation>
<uri targetexpr="webServerUrl+appName+'/dynapromptid.jsp'"/>
<parameters>
<param expr="incallednum" name="callednumber"/>
<param expr="incallingnum" name="callingnumber"/>
</parameters>
</invocation>
</comp>
<comp xsi:type="DialogFetch" id="fetchmusic" fetchid="ringbackdialogid">
<extension>
<graphic xsi:type="anyType" x="273" y="114"/>
</extension>
<outputs>
<output expr="evt.prompt" id="prompt"/>
<output expr="evt.url" id="callednum"/>
</outputs>
<exits>
<exit name="failure" target="fetchFailed"/>
<exit name="success" target="sendsig"/>
</exits>
<logbefore category="logLabel" msg="'Fetching prompt...'"/>
<connectionref ref="ingressid"/>
<invocation>
<uri targetexpr="webServerUrl+appName+'/playPrompt.do'"/>
<parameters>
<param expr="evt.prompt" name="prompt"/>
</parameters>
</invocation>
</comp>
<comp xsi:type="Log" id="fetchFailed" category="logLabel" msg="'Dialog fetch failed'">
<extension>
<graphic xsi:type="anyType" x="596" y="228"/>
</extension>
<outputs/>
<exits>
<exit name="next" target="endFetchFailed"/>
</exits>
</comp>
<comp xsi:type="Abort" id="endFetchFailed">
<extension>
<graphic xsi:type="anyType" x="577" y="349"/>
</extension>
<outputs/>
</comp>
<comp xsi:type="Signal" id="sendsig" hints="mediaid=ringbackdialogid" signal="progress">
<extension>
<graphic xsi:type="anyType" x="253" y="222"/>
</extension>
<outputs/>
<exits>
<exit name="next" target="playmusic"/>
</exits>
<connectionref ref="ingressid"/>
</comp>
<comp xsi:type="Dialog" id="playmusic" fetchid="ringbackdialogid">
<extension>
<graphic xsi:type="anyType" x="183" y="318"/>
</extension>
<outputs/>
<exits>
<exit name="started" target="egresscall"/>
</exits>
<logbefore category="logLabel" msg="'Playing prompt...'"/>
<connectionref ref="ingressid"/>
</comp>
<comp xsi:type="CreateCall" id="egresscall" dest="callednum">
<extension>
<graphic xsi:type="anyType" x="33" y="413"/>
</extension>
<outputs>
<output expr="evt.connectionid" id="failedid"/>
</outputs>
<exits>
<exit name="success" target="endmusic"/>
<exit name="failure" target="stopms"/>
</exits>
<logbefore category="logLabel" msg="'Creating call...'"/>
<connection ref="egressid"/>
</comp>
<comp xsi:type="DialogEnd" id="endmusic" dialogid="ringbackdialogid">
<extension>
<graphic xsi:type="anyType" x="317" y="408"/>
</extension>
<outputs/>
<exits>
<exit name="success" target="accept"/>
</exits>
<logbefore category="logLabel" msg="'End music...'"/>
</comp>
<comp xsi:type="Answer" id="accept">
<extension>
<graphic xsi:type="anyType" x="567" y="458"/>
</extension>
<outputs/>
<exits>
<exit name="success" target="connectparties"/>
</exits>
<logbefore category="logLabel" msg="'Answer ingress call...'"/>
<connectionref ref="ingressid"/>
</comp>
<comp xsi:type="Join" id="connectparties">
<extension>
<graphic xsi:type="anyType" x="526" y="544"/>
</extension>
<outputs/>
<exits>
<exit name="hangup" target="hangup"/>
</exits>
<logbefore category="logLabel" msg="'Join ingress and egress call legs...'"/>
<connectionref ref="ingressid"/>
<connectionref2 ref="egressid"/>
</comp>
<comp xsi:type="Decision" id="hangup">
<extension>
<graphic xsi:type="anyType" x="279" y="541"/>
</extension>
<inputs>
<input expr="evt.connectionid"/>
</inputs>
<outputs>
<output expr="evt.reason" id="reason"/>
</outputs>
<exits>
<exit name="done" target="egressdisconnect">
<cond>evt.connectionid == ingressid</cond>
</exit>
<exit name="otherwise" target="ingressdisconnect"/>
</exits>
</comp>
<comp xsi:type="Disconnect" id="egressdisconnect">
<extension>
<graphic xsi:type="anyType" x="144" y="724"/>
</extension>
<outputs/>
<exits>
<exit name="success" target="endringback"/>
</exits>
<logbefore category="logLabel" msg="'Disconnect egress...'"/>
<connectionref ref="egressid"/>
</comp>
<comp xsi:type="End" id="endringback">
<extension>
<graphic xsi:type="anyType" x="374" y="818"/>
</extension>
<outputs/>
<logbefore category="logLabel" msg="'Exiting...'"/>
</comp>
<comp xsi:type="Disconnect" id="ingressdisconnect">
<extension>
<graphic xsi:type="anyType" x="488" y="721"/>
</extension>
<outputs/>
<exits>
<exit name="success" target="endringback"/>
</exits>
<logbefore category="logLabel" msg="'Disconnect ingress...'"/>
<connectionref ref="ingressid"/>
</comp>
<comp xsi:type="DialogEnd" id="stopms" dialogid="ringbackdialogid">
<extension>
<graphic xsi:type="anyType" x="46" y="512"/>
</extension>
<outputs/>
<exits>
<exit name="success" target="stoppedms"/>
</exits>
</comp>
<comp xsi:type="Decision" id="stoppedms">
<extension>
<graphic xsi:type="anyType" x="24" y="629"/>
</extension>
<outputs/>
<exits>
<exit name="done" target="egressdisconnect">
<cond>failedid == ingressid</cond>
</exit>
<exit name="otherwise" target="ingressdisconnect"/>
</exits>
</comp>
</components>
<epilog/>
</design>
付録B

<?xml version="1.0" encoding="UTF-8"?>
<!--
Generated by Sonus Networks Service Creation Environment.
Script ID: ringback
GSCML Version: V01.01.00R006
-->
<ccxml xmlns="http://www.w3.org/2002/09/ccxml" version="1.0">
<script>
var ingressCall=new Object();
ingressCall.connId=null;
ingressCall.localNumber=null;
ingressCall.remoteNumber=null;
</script>
<var name="webServerUrl" expr="'http://10.6.35.63:8080'"/><!--Prolog Decl-->
<var name="appName" expr="'/ringback'"/><!--Prolog Decl-->
<var name="logLabel" expr="'ringback'"/><!--Prolog Decl-->
<var name="ringbackdialogid"/><!--Dialog Fetch ID: fetchmusic.ringbackdialogid-->
<var name="egressid"/><!--Connection ID: egresscall.egressid-->
<var name="incallingnum"/><!--Output: fetchPromptId.incallingnum-->
<var name="ingressid"/><!--Output: fetchPromptId.ingressid-->
<var name="incallednum"/><!--Output: fetchPromptId.incallednum-->
<var name="prompt"/><!--Output: fetchmusic.prompt-->
<var name="callednum"/><!--Output: fetchmusic.callednum-->
<var name="failedid"/><!--Output: egresscall.failedid-->
<var name="reason"/><!--Output: hangup.reason-->


<var name="currentstate" expr="'start'"/>
<eventprocessor statevariable="currentstate">
<transition state="start" event="connection.alerting" name="evt"><!--Exit "ringing" from component "start"-->

<assign name="currentstate" expr="'fetchPromptId'"/>
<!--Component "fetchPromptId", type="Action"-->
<assign name="incallingnum" expr="session.connections[evt.connectionid].remote"/>
<assign name="ingressid" expr="evt.connectionid"/>
<assign name="incallednum" expr="session.connections[evt.connectionid].local"/>
<script>
ingressCall.connId=evt.connectionid;
ingressCall.localNumber=evt.connection.local;
ingressCall.remoteNumber=evt.connection.remote;
</script>
<log label="logLabel" expr="'Calling web server to get prompt id...'"/>
<var name="callednumber" expr="incallednum"/>
<var name="callingnumber" expr="incallingnum"/>
<send target="webServerUrl+appName+'/dynapromptid.jsp'" targettype="'x-http'" data="'fetchPromptId.response'" delay="'0s'" namelist="callednumber callingnumber"/>
</transition>
<transition state="fetchPromptId" event="fetchPromptId.response" name="evt"><!--Exit "response" from component "fetchPromptId"-->

<assign name="currentstate" expr="'fetchmusic'"/>
<!--Component "fetchmusic", type="DialogFetch"-->
<assign name="prompt" expr="evt.prompt"/>
<assign name="callednum" expr="evt.url"/>
<log label="logLabel" expr="'Fetching prompt...'"/>
<dialogprepare type="'application/voicexml+xml'" dialogid="ringbackdialogid" connectionid="ingressid" src="webServerUrl+appName+'/playPrompt.do'+'?'+'prompt='+evt.prompt"/>
</transition>
<transition state="fetchmusic" event="error.dialog.notprepared" name="evt"><!--Exit "failure" from component "fetchmusic"-->
<!--Component "fetchFailed", type="Log"-->
<log label="logLabel" expr="'Dialog fetch failed'"/><!--Exit "next" from component "fetchFailed"-->
<!--Component "endFetchFailed" (recursive), type="Abort"-->
<exit/>

</transition>
<transition state="fetchmusic" event="dialog.prepared" name="evt"><!--Exit "success" from component "fetchmusic"-->
<!--Component "sendsig", type="Signal"-->
<sendsig connectionid="ingressid" type="'progress'" hints="mediaid=ringbackdialogid"/><!--Exit "next" from component "sendsig"-->

<assign name="currentstate" expr="'playmusic'"/>
<!--Component "playmusic" (recursive), type="Dialog"-->
<log label="logLabel" expr="'Playing prompt...'"/>
<dialogstart type="'application/voicexml+xml'" prepareddialogid="ringbackdialogid" connectionid="ingressid"/>

</transition>
<transition state="playmusic" event="dialog.started" name="evt"><!--Exit "started" from component "playmusic"-->

<assign name="currentstate" expr="'egresscall'"/>
<!--Component "egresscall", type="CreateCall"-->
<assign name="failedid" expr="evt.connectionid"/>
<log label="logLabel" expr="'Creating call...'"/>
<createcall dest="callednum" connectionid="egressid"/>
</transition>
<transition state="egresscall" event="connection.connected" name="evt"><!--Exit "success" from component "egresscall"-->

<assign name="currentstate" expr="'endmusic'"/>
<!--Component "endmusic", type="DialogEnd"-->
<log label="logLabel" expr="'End music...'"/>
<dialogterminate dialogid="ringbackdialogid"/>
</transition>
<transition state="endmusic" event="dialog.exit" name="evt"><!--Exit "success" from component "endmusic"-->

<assign name="currentstate" expr="'accept'"/>
<!--Component "accept", type="Answer"-->
<log label="logLabel" expr="'Answer ingress call...'"/>
<accept connectionid="ingressid"/>
</transition>
<transition state="accept" event="connection.connected" name="evt"><!--Exit "success" from component "accept"-->

<assign name="currentstate" expr="'connectparties'"/>
<!--Component "connectparties", type="Join"-->
<log label="logLabel" expr="'Join ingress and egress call legs...'"/>
<join id1="ingressid" id2="egressid"/>
</transition>
<transition state="connectparties" event="connection.disconnected" name="evt"><!--Exit "hangup" from component "connectparties"-->
<!--Component "hangup", type="Decision"-->
<assign name="reason" expr="evt.reason"/>
<if cond="evt.connectionid == ingressid"><!--Exit "done" from component "hangup"-->

<assign name="currentstate" expr="'egressdisconnect'"/>
<!--Component "egressdisconnect" (recursive), type="Disconnect"-->
<log label="logLabel" expr="'Disconnect egress...'"/>
<disconnect connectionid="egressid"/>
<else/><!--Exit "otherwise" from component "hangup"-->

<assign name="currentstate" expr="'ingressdisconnect'"/>
<!--Component "ingressdisconnect" (recursive), type="Disconnect"-->
<log label="logLabel" expr="'Disconnect ingress...'"/>
<disconnect connectionid="ingressid"/>
</if>
</transition>
<transition state="egressdisconnect" event="connection.disconnected" name="evt"><!--Exit "success" from component "egressdisconnect"-->
<!--Component "endringback", type="End"-->
<log label="logLabel" expr="'Exiting...'"/>
<exit/>
</transition>
<transition state="ingressdisconnect" event="connection.disconnected" name="evt"><!--Exit "success" from component "ingressdisconnect"-->
<!--Component "endringback", type="End"-->
<log label="logLabel" expr="'Exiting...'"/>
<exit/>
</transition>
<transition state="egresscall" event="connection.failed" name="evt"><!--Exit "failure" from component "egresscall"-->

<assign name="currentstate" expr="'stopms'"/>
<!--Component "stopms", type="DialogEnd"-->
<dialogterminate dialogid="ringbackdialogid"/>
</transition>
<transition state="stopms" event="dialog.exit" name="evt"><!--Exit "success" from component "stopms"-->
<!--Component "stoppedms", type="Decision"-->
<if cond="failedid == ingressid"><!--Exit "done" from component "stoppedms"-->

<assign name="currentstate" expr="'egressdisconnect'"/>
<!--Component "egressdisconnect" (recursive), type="Disconnect"-->
<log label="logLabel" expr="'Disconnect egress...'"/>
<disconnect connectionid="egressid"/>
<else/><!--Exit "otherwise" from component "stoppedms"-->

<assign name="currentstate" expr="'ingressdisconnect'"/>
<!--Component "ingressdisconnect" (recursive), type="Disconnect"-->
<log label="logLabel" expr="'Disconnect ingress...'"/>
<disconnect connectionid="ingressid"/>
</if>
</transition>
<transition event="error.*" name="evt">
<log label="'ringback'" expr="'Unhandled error event: '+evt.name+', current state='+currentstate+', reason='+evt.reason"/>
<exit/>
</transition>
</eventprocessor>
</ccxml>
付録C

<?xml version="1.0" encoding="UTF-8"?>

<%@ page language="java" import="java.util.*" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean"%>
<%@ taglib uri="/tags/jstl-core" prefix="c"%>
<%@ taglib uri="/tags/jstl-functions" prefix="fn"%>


<c:choose>
<c:when test="${!empty sessionScope.promptLoc}">
<c:set var="promptBase" value="${sessionScope.promptLoc}"/>
</c:when>
<c:otherwise>
<c:choose>
<c:when test="${fn:startsWith(initParam.promptURLRoot,\"/\")}">
<c:if test="${initParam.promptsRelative=='true'}">
<c:set var="promptBase" value="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}${initParam.promptURLRoot}"/>
</c:if>
<c:if test="${initParam.promptsRelative=='false'}">
<c:set var="promptBase" value="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${initParam.promptURLRoot}"/>
</c:if>
</c:when>
<c:otherwise>
<c:set var="promptBase" value="${initParam.promptURLRoot}"/>
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>

<c:choose>
<c:when test="${!empty requestScope.modelbean}">
<c:set var="modelBean" value="${requestScope.modelbean}"/>
</c:when>
<c:otherwise>
<c:set var="modelBean" value="''"/>
</c:otherwise>
</c:choose>

<vxml xmlns="http://www.w3.org/2001/vxml" version="2.0">
<property name="inputmodes" value="dtmf"/>
<!--global dialog result variable-->
<var name="result_" expr="'false'"/>
<catch event="connection.disconnect.hangup">
<submit next="<%=response.encodeURL(request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/exit.do")%>" namelist=" result_"/>
</catch>
<!--prolog-->

<!--local declarations-->

<!--Outputs of all design elements-->

<!--Beginning of form/menu elements-->
<form id="music">
<block>
<prompt>
<audio src="<c:out value="${promptBase}"/>${param["prompt"]}"/></prompt>
<goto next="#End10"/>
</block>
</form>
<form id="End10">
<block>
<assign name="result_" expr="'true'"/>
<submit next="<%=response.encodeURL(request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/exit.do")%>" namelist=" result_"/>
</block>
</form>
</vxml>
テレフォニーサービスの生成、提供、及び実行に関連する装置を有する例示的なネットワークを示すブロック図である。 テレフォニーサービスの生成、提供、及び実行を示すフローチャートである。 テレフォニーサービスの実行を示す呼フロー図である。 サービス作成環境中のテレフォニーサービスの開発、アセンブリ、テスト、及び配備を示すプロセスフローである。 中間言語の呼制御エレメント、及びダイアログエレメントの例示的なUMLモデルを示すブロック図である。 テレフォニーサービス生成に関連する例示的なグラフィカルユーザーインターフェースを示すブロック図である。 アプリケーションサーバのコンポーネントを示すブロック図である。 テレフォニーサービスの実行を示す他の呼フロー図である。 SIPアクセス層のコンポーネントを示すブロック図である。
符号の説明
100 ネットワーク
101 パケットベースのネットワーク
110 アプリケーションサーバ
111 サービス作成環境(SCE)
120 メディアサーバ
130 ルーティングサーバ
140,150 アクセスネットワーク
141,151 ゲートウェイ
145,155 ユーザ装置
165 ユーザ
401 ユーザ
405,415,425 データベース

Claims (53)

  1. 統合された呼制御、及びダイアログアプリケーションを生成するための方法であって、
    グラフィカルユーザーインターフェースを提供すること、
    ユーザに、前記グラフィカルユーザーインターフェースを使用して、複数のエレメントから1つのエレメントを選択させ、前記複数のエレメントが少なくとも1つの呼制御エレメント、及び少なくとも1つのダイアログエレメントを含み、前記少なくとも1つの呼制御エレメントが前記少なくとも1つのダイアログエレメントに関連する少なくとも1つの発呼イベントの制御を定めること、並びに
    テレフォニーアプリケーションのためのモジュールを前記グラフィカルユーザーインターフェースを使用して生成することの諸ステップを含むことを特徴とする方法。
  2. 前記グラフィカルユーザーインターフェースを使用して、前記ダイアログエレメントを前記呼制御エレメントと結合させることを更に含む、請求項1に記載の方法。
  3. 前記ダイアログエレメントを前記呼制御エレメントと結合させることが、前記呼制御エレメント中の前記ダイアログエレメントにリファレンスを挿入することを含む、請求項2に記載の方法。
  4. 前記ダイアログエレメントを前記呼制御エレメントと結合させることが、前記ダイアログエレメントを前記呼制御エレメントに埋め込むことを含む、請求項2に記載の方法。
  5. 前記複数のエレメントが、設計ファイル、ソースコード、実行可能ファイル、又はそれらの組み合わせの1つ又は2つ以上を含む、請求項1に記載の方法。
  6. 前記呼制御エレメントが、呼制御XML(CCXML)、呼処理言語(CPL)、又はそれらの組み合わせに基づき得る、請求項1に記載の方法。
  7. 前記呼制御エレメントが Java Server Page (JSP)の内部に埋め込まれる、請求項6に記載の方法。
  8. 1又は複数の予め定められた呼制御エレメントの組を提供することを更に含み、前記呼制御エレメントが前記組に含まれる、請求項1に記載の方法。
  9. 前記ダイアログエレメントが、音声XML(VXML)、メディアサーバ制御マークアップ言語(MSCML)、メディアサーバマークアップ言語(MSML)、メディアオブジェクトマークアップ言語(MOML)、又はそれらの組み合わせに基づく、請求項1に記載の方法。
  10. 前記ダイアログエレメントが、 Java Server Page (JSP)の内部に埋め込まれる、請求項9に記載の方法。
  11. 1又は複数の予め定められたダイアログエレメントの組を提供することを更に含み、前記ダイアログエレメントが前記組に含まれる、請求項1に記載の方法。
  12. 前記呼制御エレメント、又は前記ダイアログエレメントが、ECMAスクリプトに基づくエレメントを含む、請求項1に記載の方法。
  13. 前記モジュールを生成することが、前記呼制御エレメント、又は前記ダイアログエレメントを構成することを含む、請求項1に記載の方法。
  14. 前記モジュールを生成することが呼フローを定めることを含み、前記呼フローが前記呼制御エレメント、又は前記ダイアログエレメントを含む、請求項1に記載の方法。
  15. 文字ユーザインターフェースを提供すること、及び
    前記モジュールを前記文字ユーザインターフェースを使用して構成することを更に含む、請求項1に記載の方法。
  16. 情報担体中で実体的に実施されるコンピュータプログラムプロダクトであって、データ処理装置に以下のこと、即ち、
    グラフィカルユーザーインターフェースを提供すること、
    ユーザに、前記グラフィカルユーザーインターフェースを使用して、複数のエレメントから1つのエレメントを選択させ、前記複数のエレメントが少なくとも1つの呼制御エレメント、及び少なくとも1つのダイアログエレメントを含み、前記少なくとも1つの呼制御エレメントが前記少なくとも1つのダイアログエレメントに関連する少なくとも1つの発呼イベントの制御を定めること、並びに
    テレフォニーアプリケーションのためのモジュールを前記グラフィカルユーザーインターフェースを使用して生成することを可能にするように動作可能な命令を前記コンピュータプログラムプロダクトが含むことを特徴とする、コンピュータプログラムプロダクト。
  17. サービス作成ツールを含むシステムであって、以下のこと、即ち、
    グラフィカルユーザーインターフェースを提供すること、
    ユーザに、前記グラフィカルユーザーインターフェースを使用して、複数のエレメントから1つのエレメントを選択させ、前記複数のエレメントが少なくとも1つの呼制御エレメント、及び少なくとも1つのダイアログエレメントを含み、前記少なくとも1つの呼制御エレメントが前記少なくとも1つのダイアログエレメントに関連する少なくとも1つの発呼イベントの制御を定めること、並びに
    テレフォニーアプリケーションのためのモジュールを前記グラフィカルユーザーインターフェースを使用して生成することに適合されることを特徴とするシステム。
  18. テレフォニーアプリケーションのためのモジュールを生成することであって、前記モジュールが複数のエレメントを含み、前記複数のエレメントの少なくとも第1のエレメントが呼制御エレメントであり、前記複数のエレメントの少なくとも第2のエレメントがダイアログエレメントであり、前記呼制御エレメントが前記ダイアログエレメントに関連する少なくとも1つの発呼イベントの制御を定め、
    前記モジュールを中間設計ファイルに記憶することであって、前記中間設計ファイルは1又は複数の中間言語に基づき、及び
    変換規則を使用して、前記中間設計ファイルの少なくとも一部を1又は複数の目的設計ファイルに変換することであって、前記1又は複数の目的設計ファイルが1又は複数の目的言語に基づき、前記1又は複数の目的言語が前記1又は複数の中間言語とは異なる諸ステップを含むことを特徴とする方法。
  19. 前記1又は複数の中間言語が、呼制御XML(CCXML)、呼処理言語(CPL)、音声XML(VXML)、メディアサーバ制御マークアップ言語(MSCML)、メディアサーバマークアップ言語(MSML)、メディアオブジェクトマークアップ言語(MOML)、又はそれらの組み合わせを含む、請求項18に記載の方法。
  20. 前記1又は複数の中間言語が、拡張可能マークアップ言語(XML)を含む、請求項18に記載の方法。
  21. 前記1又は複数の中間言語が汎用言語を含む、請求項18に記載の方法。
  22. 前記1又は複数の目的言語が、呼制御XML(CCXML)、呼処理言語(CPL)、音声XML(VXML)、メディアサーバ制御マークアップ言語(MSCML)、メディアサーバマークアップ言語(MSML)、メディアオブジェクトマークアップ言語(MOML)、又はそれらの組み合わせを含む、請求項18に記載の方法。
  23. Java Server Page (JSP)の内部の前記1又は複数の目的設計ファイルの少なくとも1つをカプセル化することを更に含む、請求項22に記載の方法。
  24. 前記中間言語は1つのモデルに基づき、前記モデルが、前記呼制御エレメントに関連する呼制御コンポーネント、及び前記ダイアログエレメントに関連するダイアログコンポーネントを含む、請求項18に記載の方法。
  25. 前記呼制御コンポーネントが発呼イベント関数を定める、請求項24に記載の方法。
  26. 前記発呼イベント関数が、 start 関数、 end 関数、 log 関数、 action 関数、 call action 関数、 dialog 関数、又はそれらの組み合わせを含む、請求項25に記載の方法。
  27. 前記 call action 関数が、 answer 関数、 connect 関数、 disconnect 関数、 redirect 関数、 remove 関数、 create call 関数、 create conference 関数、又はそれらの組み合わせを含む、請求項26に記載の方法。
  28. 前記ダイアログコンポーネントが dialog 関数を定める、請求項24に記載の方法。
  29. 前記 dialog 関数が、 start 関数、 end 関数、 log 関数、 action 関数、 play action 関数、 form 関数、 menu 関数、又はそれらの組み合わせを含む、請求項28に記載の方法。
  30. 前記 play action 関数が、 prompt 関数、 record 関数、又はそれらの組み合わせを含む、請求項29に記載の方法。
  31. 前記変換規則が、拡張スタイルシート言語変換(XSLT)に基づく、請求項18に記載の方法。
  32. 前記1又は複数の目的設計ファイルを1又は複数のウェブアプリケーションにアセンブルすることを更に含む、請求項18に記載の方法。
  33. 前記1又は複数のウェブアプリケーションの少なくとも1つが、
    1又は複数の呼制御アプリケーション、又は
    1又は複数のダイアログアプリケーションの少なくとも1つを含む、請求項32に記載の方法。
  34. 情報担体中で実体的に実施されるコンピュータプログラムプロダクトであって、データ処理装置に以下のこと、即ち、
    テレフォニーアプリケーションのためのモジュールを生成することであって、前記モジュールが複数のエレメントを含み、前記複数のエレメントの少なくとも第1のエレメントが呼制御エレメントであり、前記複数のエレメントの少なくとも第2のエレメントがダイアログエレメントであり、前記呼制御エレメントが前記ダイアログエレメントに関連する少なくとも1つの発呼イベントの制御を定め、
    前記モジュールを中間設計ファイルに記憶することであって、前記中間設計ファイルは1又は複数の中間言語に基づき、及び
    変換規則を使用して、前記中間設計ファイルの少なくとも一部を1又は複数の目的設計ファイルに変換することであって、前記1又は複数の目的設計ファイルが1又は複数の目的言語に基づき、前記1又は複数の目的言語が前記1又は複数の中間言語とは異なることを可能にするように動作可能な命令を前記コンピュータプログラムプロダクトが含むことを特徴とする、コンピュータプログラムプロダクト。
  35. サービス作成ツールを含むシステムであって、以下のこと、即ち、
    テレフォニーアプリケーションのためのモジュールを生成することであって、前記モジュールが複数のエレメントを含み、前記複数のエレメントの少なくとも第1のエレメントが呼制御エレメントであり、前記複数のエレメントの少なくとも第2のエレメントがダイアログエレメントであり、前記呼制御エレメントが前記ダイアログエレメントに関連する少なくとも1つの発呼イベントの制御を定め、
    前記モジュールを中間設計ファイルに記憶することであって、前記中間設計ファイルは1又は複数の中間言語に基づき、及び
    変換規則を使用して、前記中間設計ファイルの少なくとも一部を1又は複数の目的設計ファイルに変換することであって、前記1又は複数の目的設計ファイルが1又は複数の目的言語に基づき、前記1又は複数の目的言語が前記1又は複数の中間言語とは異なることに適合されることを特徴とするシステム。
  36. セッション開始プロトコルに基づいてメッセージを相互作用させるための方法であって、
    1又は複数の命令の第1の組を規則に関連付けること、
    第1のフォーマットに基づくセッション開始プロトコルメッセージを受信すること、
    前記規則を使用して、1又は複数の命令の前記第1の組が前記セッション開始プロトコルメッセージに適用可能であるか否かを決定すること、及び
    1又は複数の命令の前記第1の組が前記セッション開始プロトコルメッセージに適用可能であるとき、命令の前記第1の組を使用して、前記セッション開始プロトコルメッセージを目的のセッション開始プロトコルメッセージに変換し、前記目的のセッション開始プロトコルメッセージは、前記第1フォーマットとは異なる第2フォーマットに基づく諸ステップを含むことを特徴とする方法。
  37. 前記セッション開始プロトコルメッセージは、開放型システム間相互接続(OSI)参照モデルによって定められるトランスポート層から受信される、請求項36に記載の方法。
  38. 目的の前記セッション開始プロトコルメッセージをOSI参照モデルによって定められるアプリケーション層に転送することを更に含む、請求項37に記載の方法。
  39. 目的のセッション開始プロトコルメッセージが、正規化されたセッション開始プロトコルメッセージを含む、請求項38に記載の方法。
  40. 前記セッション開始プロトコルメッセージが、開放型システム間相互接続(OSI)参照モデルによって定められるアプリケーション層から受信される、請求項36に記載の方法。
  41. 前記目的のセッション開始プロトコルメッセージをOSI参照モデルによって定められるトランスポート層に転送することを更に含む、請求項40に記載の方法。
  42. 前記セッション開始プロトコルメッセージ中のパラメータを識別することを更に含み、前記パラメータは、予め定められたアドレス、予め定められたTCP又はUDPポート、伝送制御プロトコル(TCP)ID、セッション開始プロトコル方法、又はそれらの組み合わせを含む、請求項36に記載の方法。
  43. 前記予め定められたアドレスが、ソースIPアドレス、デスティネーションIPアドレス、又はそれらの組み合わせを含む、請求項42に記載の方法。
  44. 前記セッション開始プロトコル方法が、 INVITE, RE-INVITE, REGISTER, ACK, CANCEL, BYE, OPTIONS, INFO, NOTIFY, SUBSCRIBE, UNSUBSCRIBE, UPDATE, MESSAGE, REFER, PRACK, PUBLISH 又はそれらの組み合わせを含む、請求項42に記載の方法。
  45. 1又は複数の命令の前記第1の組が前記セッション開始プロトコルメッセージに適用可能であるか否かを決定することが、前記パラメータを対応する規則パラメータに合致させることを含み、前記規則は規則パラメータを含む、請求項42に記載の方法。
  46. 1又は複数の命令の前記第1の組が、 Practical Extraction and Report 言語(PERL)、 Tool Command 言語(TCL)、C言語、C++言語、又はそれらの組み合わせに基づく、請求項36に記載の方法。
  47. 前記セッション開始プロトコルメッセージを前記目的のセッション開始プロトコルメッセージに変換することが、前記セッション開始プロトコルメッセージの内部の1又は複数のSIPヘッダを操作すること、追加すること、又は除去することを含む、請求項36に記載の方法。
  48. 前記セッション開始プロトコルメッセージを前記目的のセッション開始プロトコルメッセージに変換することが、前記セッション開始プロトコルメッセージの内部のスタートラインを操作することを含む、請求項36に記載の方法。
  49. 前記セッション開始プロトコルメッセージを前記目的のセッション開始プロトコルメッセージに変換することが、前記セッション開始プロトコルメッセージの内部の本体部分を操作することを含む、請求項36に記載の方法。
  50. オブジェクトが前記規則を含み、前記オブジェクトがデータベースに記憶される、請求項36に記載の方法。
  51. 前記オブジェクトが、名前、記述、1又は複数の命令の前記第1の組の名前、又はそれらの組み合わせを更に含む、請求項50に記載の方法。
  52. 情報担体中で実体的に実施されるコンピュータプログラムプロダクトであって、データ処理装置に以下のこと、即ち、
    1又は複数の命令の第1の組を規則に関連付けること、
    第1のフォーマットに基づくセッション開始プロトコルメッセージを受信すること、
    前記規則を使用して、1又は複数の命令の前記第1の組が前記セッション開始プロトコルメッセージに適用可能であるか否かを決定すること、及び
    1又は複数の命令の前記第1の組が前記セッション開始プロトコルメッセージに適用可能であるとき、命令の前記第1の組を使用して、前記セッション開始プロトコルメッセージを目的のセッション開始プロトコルメッセージに変換し、前記目的のセッション開始プロトコルメッセージは、前記第1フォーマットとは異なる第2フォーマットに基づくことを可能にするように動作可能な命令を前記コンピュータプログラムプロダクトが含むことを特徴とする、コンピュータプログラムプロダクト。
  53. セッション開始プロトコルに基づいてメッセージを相互作用させるためのシステムであって、以下のこと、即ち、
    1又は複数の命令の第1の組を規則に関連付けること、
    第1のフォーマットに基づくセッション開始プロトコルメッセージを受信すること、
    前記規則を使用して、1又は複数の命令の前記第1の組が前記セッション開始プロトコルメッセージに適用可能であるか否かを決定すること、及び
    1又は複数の命令の前記第1の組が前記セッション開始プロトコルメッセージに適用可能であるとき、命令の前記第1の組を使用して、前記セッション開始プロトコルメッセージを目的のセッション開始プロトコルメッセージに変換し、前記目的のセッション開始プロトコルメッセージは、前記第1フォーマットとは異なる第2フォーマットに基づくことに適合されるネットワーク装置を含むことを特徴とするシステム。
JP2008514941A 2005-06-03 2006-06-05 テレフォニーサービスアプリケーションのための呼制御エレメント、ダイアログエレメント、及びセッション開始プロトコルメッセージの生成、及び変換 Pending JP2008546325A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US68713505P 2005-06-03 2005-06-03
PCT/US2006/021634 WO2006133033A2 (en) 2005-06-03 2006-06-05 Generating and transforming call control elements, dialog elements and session initiation protocol messages

Publications (2)

Publication Number Publication Date
JP2008546325A true JP2008546325A (ja) 2008-12-18
JP2008546325A5 JP2008546325A5 (ja) 2009-07-23

Family

ID=37000116

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008514941A Pending JP2008546325A (ja) 2005-06-03 2006-06-05 テレフォニーサービスアプリケーションのための呼制御エレメント、ダイアログエレメント、及びセッション開始プロトコルメッセージの生成、及び変換

Country Status (7)

Country Link
US (3) US20070041369A1 (ja)
EP (1) EP1886467B1 (ja)
JP (1) JP2008546325A (ja)
AT (1) ATE476822T1 (ja)
CA (1) CA2610700A1 (ja)
DE (1) DE602006015946D1 (ja)
WO (1) WO2006133033A2 (ja)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6104802A (en) 1997-02-10 2000-08-15 Genesys Telecommunications Laboratories, Inc. In-band signaling for routing
US7031442B1 (en) 1997-02-10 2006-04-18 Genesys Telecommunications Laboratories, Inc. Methods and apparatus for personal routing in computer-simulated telephony
US6480600B1 (en) 1997-02-10 2002-11-12 Genesys Telecommunications Laboratories, Inc. Call and data correspondence in a call-in center employing virtual restructuring for computer telephony integrated functionality
US6711611B2 (en) 1998-09-11 2004-03-23 Genesis Telecommunications Laboratories, Inc. Method and apparatus for data-linking a mobile knowledge worker to home communication-center infrastructure
US6985943B2 (en) 1998-09-11 2006-01-10 Genesys Telecommunications Laboratories, Inc. Method and apparatus for extended management of state and interaction of a remote knowledge worker from a contact center
USRE46528E1 (en) 1997-11-14 2017-08-29 Genesys Telecommunications Laboratories, Inc. Implementation of call-center outbound dialing capability at a telephony network level
US7907598B2 (en) * 1998-02-17 2011-03-15 Genesys Telecommunication Laboratories, Inc. Method for implementing and executing communication center routing strategies represented in extensible markup language
US6332154B2 (en) 1998-09-11 2001-12-18 Genesys Telecommunications Laboratories, Inc. Method and apparatus for providing media-independent self-help modules within a multimedia communication-center customer interface
USRE46153E1 (en) 1998-09-11 2016-09-20 Genesys Telecommunications Laboratories, Inc. Method and apparatus enabling voice-based management of state and interaction of a remote knowledge worker in a contact center environment
US7929978B2 (en) 1999-12-01 2011-04-19 Genesys Telecommunications Laboratories, Inc. Method and apparatus for providing enhanced communication capability for mobile devices on a virtual private network
US20050190706A1 (en) * 2004-02-26 2005-09-01 Henderson Eric A. Automatic conferencing service
EP1886467B1 (en) * 2005-06-03 2010-08-04 Sonus Networks, Inc. Generating and transforming call control elements, dialog elements, and session initiation protocol messages for telephony service applications
EP1943801A1 (en) * 2005-10-31 2008-07-16 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Transfer of part of a push to talk session
US20070150442A1 (en) * 2005-12-20 2007-06-28 Chin Frances M Library services in communication networks
US9008075B2 (en) 2005-12-22 2015-04-14 Genesys Telecommunications Laboratories, Inc. System and methods for improving interaction routing performance
CN100428755C (zh) * 2006-01-24 2008-10-22 华为技术有限公司 一种电路域终端实现业务自助的方法及实体
WO2007140812A1 (en) * 2006-06-02 2007-12-13 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatuses for establishing a session between a client terminal and a media supply system to transport a unicast media stream over an ip network
US20080016181A1 (en) * 2006-07-13 2008-01-17 Erik John Burckart Method and system for providing remote media
WO2008019045A2 (en) * 2006-08-03 2008-02-14 Bluenote Networks, Inc. Unified session detail records
US20080155492A1 (en) * 2006-12-22 2008-06-26 International Business Machines Corporation Development tool for creating converged applications that include sip and web components
US8027446B2 (en) * 2007-01-23 2011-09-27 Ubiquity Software Corporation Limited System and method for providing service mediation and orchestration for external telephony applications
KR100908192B1 (ko) * 2007-04-12 2009-07-16 현재봉 사용자 정의 소프트 폰을 이용한 인터넷 전화 시스템 및 인터넷 전화 서비스 방법
US8301757B2 (en) 2007-06-11 2012-10-30 Enghouse Interactive Inc. System and method for obtaining in-use statistics for voice applications in interactive voice response systems
US8423635B2 (en) * 2007-06-11 2013-04-16 Enghouse Interactive Inc. System and method for automatic call flow detection
EP2007105A1 (en) * 2007-06-22 2008-12-24 Accenture Global Services GmbH Session initiation protocol adaptor
JP2009033258A (ja) * 2007-07-24 2009-02-12 Nippon Telegr & Teleph Corp <Ntt> 通信装置、通信方法および通信プログラム
US20090147932A1 (en) * 2007-09-19 2009-06-11 Genesis Financial Solutions, Inc. Enhanced programming model and controller for ivr
US9003049B1 (en) * 2008-01-28 2015-04-07 Avaya Inc. Interactive voice response object
EP2134058B1 (en) * 2008-06-12 2012-11-21 Alcatel Lucent Method for protecting a packet based network and border node protection system
US9736207B1 (en) * 2008-06-13 2017-08-15 West Corporation Passive outdial support for mobile devices via WAP push of an MVSS URL
EP2150067B1 (en) * 2008-07-31 2013-06-26 Accenture Global Services Limited Trigger mediation system
US10015267B2 (en) * 2008-09-02 2018-07-03 Constantin Staykoff Generic multichannel center for network applications and services
EP2350865A4 (en) * 2008-09-30 2014-12-31 Avfinity Llc COMPUTER-READABLE MEDIUM FOR TRANSLATING PROTOCOLS
US8117538B2 (en) * 2008-12-19 2012-02-14 Genesys Telecommunications Laboratories, Inc. Method for dynamically converting voice XML scripts into other compatible markup language scripts based on required modality
EP2209283A1 (en) * 2009-01-20 2010-07-21 Vodafone Group PLC Node failure detection system and method for SIP sessions in communication networks.
JP4920052B2 (ja) * 2009-03-11 2012-04-18 株式会社日立製作所 通信システム及びサーバ
US8219683B2 (en) * 2009-03-31 2012-07-10 International Business Machines Corporation Enabling creation of converged internet protocol multimedia subsystem services by third-party application developers using session initiation protocol support
US9172803B2 (en) * 2009-08-23 2015-10-27 Aspect Software, Inc. System and method for integrating runtime usage statistics with developing environment
US8416780B2 (en) * 2009-11-03 2013-04-09 Research In Motion Limited System and method for session initiation protocol header modification
US8416781B2 (en) * 2009-11-03 2013-04-09 Research In Motion Limited System and method for session initiation protocol header modification
FR2971658A1 (fr) * 2011-02-14 2012-08-17 Altervoice Systeme de controle de mise en œuvre d'un service multimedia
US9767195B2 (en) * 2011-04-21 2017-09-19 Touchstream Technologies, Inc. Virtualized hosting and displaying of content using a swappable media player
CN103795958B (zh) * 2012-10-30 2017-10-13 中国电信股份有限公司 多媒体呼叫协商方法、系统及视频互通网关、多媒体终端
US10348778B2 (en) * 2013-02-08 2019-07-09 Avaya Inc. Dynamic device pairing with media server audio substitution
US10320972B2 (en) * 2015-07-23 2019-06-11 Avaya Inc. Enhanced session initiation protocol recording
US10599402B2 (en) * 2017-07-13 2020-03-24 Facebook, Inc. Techniques to configure a web-based application for bot configuration
US11700526B2 (en) * 2018-06-12 2023-07-11 Samsung Electronics Co., Ltd. Method and apparatus for identifying in-call capability features

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001268229A (ja) * 2000-03-17 2001-09-28 Ntt Comware Corp 電話サービス装置、電話サービス方法及びその記録媒体
US20020169776A1 (en) * 2000-09-01 2002-11-14 Nokia Corporation Network architecture and methods for service script execution and management
EP1343287A2 (en) * 2002-03-06 2003-09-10 Alcatel System providing a graphical user interface to telephones

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463682A (en) * 1992-08-25 1995-10-31 Bell Communications Research, Inc. Method of creating user-defined call processing procedures
US5455853A (en) * 1992-08-25 1995-10-03 Bell Communications Research, Inc. Method of creating a telecommunication service template
US6778651B1 (en) * 1997-04-03 2004-08-17 Southwestern Bell Telephone Company Apparatus and method for facilitating service management of communications services in a communications network
US6002941A (en) * 1997-12-17 1999-12-14 Motorola, Inc. Method and apparatus for implementing a service in a wireless communication system
US6678735B1 (en) * 2000-01-26 2004-01-13 Nortel Networks Limited Method and apparatus for a sip client manager
US6763104B1 (en) * 2000-02-24 2004-07-13 Teltronics, Inc. Call center IVR and ACD scripting method and graphical user interface
US6944150B1 (en) * 2000-02-28 2005-09-13 Sprint Communications Company L.P. Method and system for providing services in communications networks
US20020120746A1 (en) * 2001-02-23 2002-08-29 Basavaraj Patil Method and system for providing a service
US7283519B2 (en) * 2001-04-13 2007-10-16 Esn, Llc Distributed edge switching system for voice-over-packet multiservice network
US20040042593A1 (en) * 2002-05-17 2004-03-04 Suren Gulrajani Web-based telephony services creation, deployment and maintenance method and system
US20030236892A1 (en) * 2002-05-31 2003-12-25 Stephane Coulombe System for adaptation of SIP messages based on recipient's terminal capabilities and preferences
US7103156B2 (en) * 2002-12-04 2006-09-05 International Business Machines Corporation Telephony voice server
US20050027536A1 (en) * 2003-07-31 2005-02-03 Paulo Matos System and method for enabling automated dialogs
US20050080628A1 (en) * 2003-10-10 2005-04-14 Metaphor Solutions, Inc. System, method, and programming language for developing and running dialogs between a user and a virtual agent
US7593980B2 (en) * 2004-11-30 2009-09-22 Cisco Technology, Inc. Application server system and method
EP1886467B1 (en) * 2005-06-03 2010-08-04 Sonus Networks, Inc. Generating and transforming call control elements, dialog elements, and session initiation protocol messages for telephony service applications

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001268229A (ja) * 2000-03-17 2001-09-28 Ntt Comware Corp 電話サービス装置、電話サービス方法及びその記録媒体
US20020169776A1 (en) * 2000-09-01 2002-11-14 Nokia Corporation Network architecture and methods for service script execution and management
EP1343287A2 (en) * 2002-03-06 2003-09-10 Alcatel System providing a graphical user interface to telephones

Also Published As

Publication number Publication date
WO2006133033A3 (en) 2007-05-10
EP1886467A2 (en) 2008-02-13
ATE476822T1 (de) 2010-08-15
CA2610700A1 (en) 2006-12-14
WO2006133033A2 (en) 2006-12-14
US20070041528A1 (en) 2007-02-22
DE602006015946D1 (de) 2010-09-16
US20070041525A1 (en) 2007-02-22
US20070041369A1 (en) 2007-02-22
EP1886467B1 (en) 2010-08-04

Similar Documents

Publication Publication Date Title
EP1886467B1 (en) Generating and transforming call control elements, dialog elements, and session initiation protocol messages for telephony service applications
US10154118B2 (en) System and method for telephony and communication services with message-based API
JP6348926B2 (ja) 電話通信アプリケーションサービス
US8467354B1 (en) Systems and methods for software-implemented telephony devices in a voice over internet protocol (VoIP) system
US7184534B2 (en) Using a telephony application server for call control with a voice server
US8139730B2 (en) Integrating an IVR application within a standards based application server
US8214503B2 (en) Factoring out dialog control and call control
US10127020B2 (en) Paradigm in multimedia services creation methodology, and new service creation and service execution environments
EP2561439B1 (en) Unified framework and method for call control and media control
EP1808004B1 (en) Providing a service framework at an endpoint
Glitho et al. Creating value added services in Internet telephony: an overview and a case study on a high-level service creation environment
Bond et al. An open architecture for next-generation telecommunication services
JP2008523730A (ja) ローカルノードで実行される集中的に提供される電話通信サービス
WO2006047111A2 (en) Providing a proxy server feature at an endpoint
Cisco Cisco VoiceXML Features
Appari Customized IVR Implementation Using Voicexml on SIP (Voip) Communication Platform
Chan et al. Modeling IETF Session Initiation Protocol and its services in SDL
Amyot et al. Combining VoiceXML with CCXML: A Comparative Study
Cheung et al. Experience with modularity in an advanced teleconferencing service deployment
EP1552672B1 (en) Providing telephony services using intelligent end points
WO2001035594A2 (en) Telecommunications control protocol processing
Back et al. Voice Mail System for IP Multimedia Sub-system
Bond ClickToDial with ECharts for SIP Servlets: A Case Study

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081017

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20081017

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090521

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090521

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110927

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111227

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120110

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120127

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120203

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120522