tcl ivr 2.0 プログラミング ガイド - cisco...contents vii tcl ivr 2.0 プログラミング...

266
TCL IVR 2.0 プログラミング ガイド Cisco IOS リリース 12.3(14)T Doc Release Date 3/28/2005 Text Part Number: OL-0505-02-J

Upload: others

Post on 18-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

TCL IVR 2.0 プログラミング ガイドCisco IOS リリース 12.3(14)T Doc Release Date 3/28/2005

Text Part Number: OL-0505-02-J

Page 2: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

このマニュアルに記載されている仕様および製品に関する情報は、予告なしに変更されることがあります。このマニュアルに記載されている表現、情報、

および推奨事項は、すべて正確であると考えていますが、明示的であれ黙示的であれ、一切の保証の責任を負わないものとします。このマニュアルに記

載されている製品の使用は、すべてユーザ側の責任になります。

対象製品のソフトウェア ライセンスおよび限定保証は、製品に添付された『Information Packet』に記載されています。見当たらない場合には、代理店にご連絡ください。

シスコが採用している TCP ヘッダー圧縮機能は、UNIX オペレーティング システムの UCB(University of California, Berkeley)パブリック ドメイン バージョンとして、UCB が開発したプログラムを最適化したものです。All rights reserved.Copyright © 1981, Regents of the University of California.

ここに記載されている他のいかなる保証にもよらず、すべてのマニュアルおよび上記各社のソフトウェアは、障害も含めて「現状のまま」として提供さ

れます。シスコおよび上記各社は、商品性や特定の目的への適合性、権利を侵害しないことに関する、または取り扱い、使用、または取り引きによって

発生する、明示されたまたは黙示された一切の保証の責任を負わないものとします。

いかなる場合においても、シスコおよびその代理店は、このマニュアルの使用またはこのマニュアルを使用できないことによって起こる制約、利益の損

失、データの損傷など間接的で偶発的に起こる特殊な損害のあらゆる可能性がシスコまたは代理店に知らされていても、それらに対する責任を一切負い

かねます。

CCIP, the Cisco Powered Network mark, the Cisco Systems Verified logo, Cisco Unity, Follow Me Browsing, FormShare, Internet Quotient, iQ Breakthrough, iQExpertise, iQ FastTrack, the iQ Logo, iQ Net Readiness Scorecard, Networking Academy, ScriptShare, SMARTnet, TransPath, and Voice LAN are trademarks of CiscoSystems, Inc.; Changing the Way We Work, Live, Play, and Learn, Discover All That’s Possible, The Fastest Way to Increase Your Internet Quotient, and iQuick Studyare service marks of Cisco Systems, Inc.; and Aironet, ASIST, BPX, Catalyst, CCDA, CCDP, CCIE, CCNA, CCNP, Cisco, the Cisco Certified Internetwork Expertlogo, Cisco IOS, the Cisco IOS logo, Cisco Press, Cisco Systems, Cisco Systems Capital, the Cisco Systems logo, Empowering the Internet Generation,Enterprise/Solver, EtherChannel, EtherSwitch, Fast Step, GigaStack, IOS, IP/TV, LightStream, MGX, MICA, the Networkers logo, Network Registrar, Packet, PIX,Post-Routing, Pre-Routing, RateMUX, Registrar, SlideCast, StrataView Plus, Stratm, SwitchProbe, TeleRouter, and VCO are registered trademarks of Cisco Systems,Inc. and/or its affiliates in the U.S. and certain other countries.

All other trademarks mentioned in this document or Web site are the property of their respective owners.The use of the word partner does not imply a partnershiprelationship between Cisco and any other company.

TCL IVR 2.0 プログラミング ガイドCopyright © 2004, Cisco Systems, Inc.All rights reserved.

Page 3: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

C O N T E N T S

iiiTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて  xiii

改訂履歴  xiii

コマンド履歴  xiv

対象読者  xxi

マニュアルの構成  xxi

関連資料  xxii

表記法  xxiii

技術情報の入手方法  xxiv

World Wide Web  xxiv

Documentation CD-ROM(英語版)  xxiv

マニュアルの発注方法(英語版)  xxiv

シスコシステムズマニュアルセンター  xxiv

テクニカル サポート  xxv

Cisco.com  xxv

TAC(Technical Assistance Center)  xxv

Cisco TAC Web サイト  xxvi

Cisco TAC Escalation Center  xxvi

Japan TAC Web サイト  xxvi

Developer Support  xxvii

C H A P T E R 1 概要  1-1

IVR と TCL  1-2

TCL IVR API Version 2.0  1-3

前提条件  1-3

利点  1-3

サポートされる機能  1-4

Developer Support  1-4

拡張された複数言語のサポート  1-5

VoiceXML および IVR アプリケーション  1-6

TCL での呼の受け渡し  1-6

VoiceXML での呼の受け渡し  1-7

Page 4: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

Contents

ivTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

TCL/VoiceXML ハイブリッド アプリケーション  1-7

ハイブリッド アプリケーションでの VoiceXML と TCL IVR 2.0 間の通信  1-8

ハイブリッド モードと VoiceXML 呼制御タグ  1-9

SendEvent オブジェクト  1-9

TCL IVR コール転送の概要  1-10

コール転送の用語  1-10

サポートされる TCL IVR コール転送スクリプト  1-10

Cisco IOS デフォルト セッション アプリケーションでのコール転送サポート  1-10

カスタム TCL IVR コール転送スクリプト  1-11

コール転送シナリオ  1-11

1 つのゲートウェイとアナログ転送元のシナリオ  1-12

1 つのゲートウェイと Cisco CME IP 電話の転送元のシナリオ  1-14

2 つのゲートウェイとアナログ転送元のシナリオ  1-16

2 つのゲートウェイと Cisco CME IP 電話の転送元のシナリオ  1-22

3 つのゲートウェイとアナログ転送元のシナリオ  1-30

3 つのゲートウェイと Cisco CME IP 電話の転送元のシナリオ  1-33

コール転送プロトコルのサポート  1-36

アナログ フックフラッシュと T1 CAS Release Link Trunk(RLT)転送  1-36

ISDN コール転送  1-36

SIP コール転送  1-37

H.450 コール転送  1-38

Cisco CallManager Express コール転送  1-39

SIP 登録および通知  1-40

SIP ヘッダー  1-41

アプリケーション インスタンス  1-42

セッション対話  1-43

セッションの開始と停止  1-43

メッセージの送信  1-43

メッセージの受信  1-43

呼の受け渡し  1-44

受け渡しの戻り  1-44

サービス レジストリ  1-44

C H A P T E R 2 TCL IVR スクリプトの使用方法  2-1

TCL IVR Version 2.0 のしくみ  2-2

TCL 拡張機能を使用した IVR スクリプトの作成  2-4

Page 5: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

Contents

vTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

TCL IVR スクリプトのプロンプト  2-4

TCL IVR スクリプトの例  2-4

ステート マシンの初期化とセットアップ  2-9

スクリプトのテストとデバッグ  2-10

スクリプトのロード  2-10

スクリプトと着信ダイヤル ピアとの関連付け  2-11

IVR スクリプトに関する情報の表示  2-11

IVR スクリプトにおける URL の使用  2-14

IVR スクリプトをロードするための URL  2-15

音声ファイルをロードするための URL  2-15

TCL IVR スクリプトの使用におけるポイント  2-15

C H A P T E R 3 TCL IVR API のコマンド リファレンス  3-1

TCL IVR スクリプトで使用される標準 TCL コマンド  3-2

HTTP コマンド  3-3

TCL IVR コマンド一覧  3-4

TCL IVR コマンド  3-7

aaa accounting  3-7

aaa accounting get status  3-8

aaa accounting probe  3-9

aaa accounting set status  3-10

aaa authenticate  3-10

aaa authorize  3-11

call close  3-13

call lookup  3-14

call register  3-14

call unregister  3-15

clock  3-16

command export  3-18

command terminate  3-19

connection create  3-19

connection destroy  3-20

fsm define  3-21

fsm setstate  3-21

handoff  3-22

handoff return  3-23

infotag get  3-24

infotag set  3-25

leg alert  3-25

Page 6: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

Contents

viTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg callerid  3-26

leg collectdigits  3-27

leg connect  3-29

leg consult abandon  3-30

leg consult response  3-31

leg consult request  3-31

leg disconnect  3-32

leg disconnect_prog_ind  3-33

leg facility  3-34

leg proceeding  3-35

leg progress  3-35

leg senddigit  3-36

leg sendhookflash  3-37

leg setup  3-37

leg setup_continue  3-40

leg setupack  3-41

leg tonedetect  3-42

leg transferdone  3-43

leg vxmldialog  3-44

leg vxmlsend  3-45

log  3-46

media pause  3-47

media play  3-47

media record  3-50

media resume  3-53

media seek  3-53

media stop  3-54

modulespace  3-55

object create dial-peer  3-58

object create gtd  3-59

object destroy  3-60

object append gtd  3-60

object delete gtd  3-61

object replace gtd  3-62

object get gtd  3-63

object get dial-peer  3-63

param read  3-64

param register  3-65

Page 7: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

Contents

viiTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

phone assign  3-66

phone query  3-66

phone unassign  3-67

playtone  3-67

puts  3-68

requiredversion  3-69

sendmsg  3-69

service  3-70

set avsend  3-71

set callinfo  3-72

subscription open  3-76

subscription close  3-78

subscription notify_ack  3-79

timer left  3-79

timer start  3-80

timer stop  3-80

C H A P T E R 4 情報タグ  4-1

aaa_accounting_last_sent  4-2

aaa_avpair  4-2

aaa_avpair_exists  4-2

aaa_new_guid  4-4

cfg_avpair  4-4

cfg_avpair_exists  4-4

con_all  4-4

con_ofleg  4-5

evt_aaa_status_info  4-5

evt_address_resolve_reject_reason  4-5

evt_address_resolve_term_cause  4-6

evt_connections  4-6

evt_consult_info  4-6

evt_dcdigits  4-6

evt_dest_handle  4-7

evt_digit  4-7

evt_digit_duration  4-7

evt_disc_iec  4-8

evt_disc_rsi  4-8

evt_endpoint_addresses  4-9

evt_event  4-9

Page 8: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

Contents

viiiTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_facility_id  4-9

evt_facility_report  4-10

evt_feature_param  4-10

evt_feature_report  4-11

evt_feature_type  4-12

evt_gtd  4-12

evt_handoff ani  4-13

evt_handoff argstring  4-13

evt_handoff dnis  4-13

evt_handoff_legs  4-14

evt_handoff proto_headers  4-14

evt_handoff_string  4-14

evt_iscommand_done  4-15

evt_last_disconnect_cause  4-15

evt_last_event_handle  4-16

evt_last_iec  4-16

evt_legs  4-17

evt_module_handle  4-17

evt_module_subevent  4-17

evt_module_context  4-18

evt_msg  4-18

evt_msg_source  4-19

evt_params  4-19

evt_progress_indication  4-20

evt_proto_content  4-20

evt_proto_content_type  4-20

evt_proto_headers  4-21

evt_report ev_transfer_request  4-21

evt_redirect_info  4-22

evt_service_control  4-22

evt_service_control_count  4-23

evt_status  4-23

evt_status_text  4-24

evt_subscription_id  4-24

evt_timer_name  4-24

evt_transfer_info  4-25

evt_vxmlevent  4-25

evt_vxmlevent_params  4-26

Page 9: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

Contents

ixTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

gtd_attr_exists  4-26

last_command_handle  4-26

leg_all  4-27

leg_ani  4-27

leg_ani_pi  4-27

leg_ani_si  4-28

leg_dn_tag  4-28

leg_dnis  4-28

leg_display_info  4-29

leg_guid  4-29

leg_incoming  4-29

leg_incoming_guid  4-29

leg_inconnection  4-30

leg_isdid  4-30

leg_outgoing  4-30

leg_password  4-31

leg_proto_headers  4-31

leg_rdn  4-32

leg_rdn_pi  4-32

leg_rdn_si  4-32

leg_redirect_cnt  4-33

leg_remoteipaddress  4-33

leg_remote_media_ip_address  4-33

leg_remote_signaling_ip_address  4-33

leg_rgn_noa  4-34

leg_rgn_npi  4-35

leg_rgn_num  4-35

leg_rgn_pi  4-36

leg_rgn_si  4-36

leg_settlement_time  4-37

leg_source_carrier_id  4-37

leg_subscriber_type  4-37

leg_suppress_outgoing_auto_acct  4-38

leg_target_carrier_id  4-38

leg_tdm_hairpin  4-38

leg_type  4-39

leg_username  4-40

med_backup_server  4-40

Page 10: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

Contents

xTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

med_language  4-41

med_language_map  4-41

med_location  4-41

med_total_languages  4-42

media_timer_factor  4-42

mod_all_handles  4-42

mod_handle  4-43

mod_handle_service  4-43

set iec  4-44

subscription_context  4-44

subscription_info  4-45

subscription_server_ipaddress  4-45

sys_version  4-45

C H A P T E R 5 イベントとステータス コード  5-1

イベント  5-1

ステータス コード  5-6

認証ステータス  5-6

許可ステータス  5-6

ディジット収集ステータス  5-7

打診応答  5-7

打診ステータス  5-7

切断の原因  5-8

ファシリティ  5-10

機能タイプ  5-10

レッグの確立ステータス  5-10

メディア ステータス  5-11

登録 /通知  5-12

トーン検出  5-12

転送ステータス  5-13

VoiceXML ダイアログ終了ステータス  5-13

A P P E N D I X A スクリプト例  A-1

SIP ヘッダー  A-1

SIP ヘッダーの引き渡し  A-1

SIP ヘッダーの取得  A-3

サービス  A-5

サービスの登録と開始  A-5

セッション対話  A-7

Page 11: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

Contents

xiTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

ハイブリッド スクリプト  A-15

G L O S S A R Y 用語集

I N D E X 索引

Page 12: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

Contents

xiiTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

Page 13: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

xiiiTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて

November 17, 2006

このマニュアルでは、Tool Command Language(TCL)Interface Voice Response(IVR)ApplicationProgramming Interface(API)Version 2.0 について説明します。TCL IVR API を、シスコのゲートウェイに発着信する呼を制御する TCL スクリプトの作成に使用することができます。このマニュアルでは、TCL IVR スクリプトの例を注釈を付けて紹介し、また、TCL IVR スクリプトをテストおよびロードする方法を示します。

改訂履歴

リリース番号 変更点

12.3(14)T • Takeback および転送機能のための次のコマンドが、TCL IVR 2.0 に追加されました。

- leg collectdigits コマンドの consumeDigit パラメータ

- leg senddigit コマンド

- leg sendhookflash コマンド

• HTTP サポートのための次のコマンドが、TCL IVR 2.0 に追加されました。

- 新規および変更されたコマンド:

command export, media play(変更), media record(変更), modulespace, param read, param register

- 新規情報タグ:

ev_params, ev_module_handle, ev_module_subevent, ev_module_context

- 新規イベント:

ev_synthesizer- サポートされたスタンダード TCL 8.3.4 コマンド:

cd, close, eof, fconfigure, file, fileevent, flush, gets, glob, open, package, pwd, read, seek

- サポートされた HTTP コマンド:

config, geturl, formatQuery, reset, status, size, code, ncode, data, error, cleanup

12.4(4)XC 内線割り当て機能のための次のコマンドが、TCL IVR 2.1 に追加されました。

- phone assign コマンド

- phone query コマンド

- phone unassign コマンド

Page 14: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

xivTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて

コマンド履歴

コマンド履歴

この項では、変更の一覧と、それに対する Cisco IOS リリースを示します。

Cisco IOS リリース コマンド

12.2(11)T leg vxmldialog

12.2(11)T leg vxmlsend

12.2(11)T command terminate

12.2(11)T aaa authentication

12.2(11)T aaa authorization

12.2(11)T aaa accounting

12.2(11)T clock

12.2(11)T media play

12.2(11)YT leg callerid

12.2(11)YT leg consult abandon

12.2(11)YT leg consult response

12.2(11)YT leg consult request

12.2(11)YT leg tranferdone

12.2(15)T leg alert

12.2(15)T leg disconnect_progind

12.2(15)T leg setup_continue

12.2(15)T leg progress

12.2(15)T object create

12.2(15)T object destroy

12.2(15)T object append

12.2(15)T object delete

12.2(15)T object replace

12.2(15)T object get

12.2(15)T leg facility

12.2(15)T log

12.2(15)T media record

12.3(4)T call close

12.3(4)T handoff

12.3(4)T handoff return

12.3(4)T leg setup

12.3(4)T sendmsg

12.3(4)T service

12.3(4)T set callinfo

12.3(4)T subscription open

12.3(4)T subscription close

12.3(4)T subscription notify_ack

12.3(4)T leg disconnect

12.3(4)T call register

12.3(4)T call unregister

Page 15: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

xvTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて

コマンド履歴

12.3(4)T call lookup

12.3(4)T leg callerid

12.3(4)T leg collectdigits

12.3(4)T aaa accounting set status

12.3(4)T aaa accounting get status

12.3(4)T aaa accounting probe

12.3(4)T timer left

12.3(4)T timer start

12.3(4)T timer stop

12.3(14)T leg senddigit

12.3(14)T leg sendhookflash

12.3(14)T command export

12.3(14)T modulespace

12.3(14)T param read

12.3(14)T param register

Cisco IOS リリース callInfo パラメータ

12.2(11)T guid

12.2(11)T incomingGuid

12.2(11)YT destinationNum

12.2(11)YT originationNum

12.2(11)YT accountNum

12.2(11)YT redirectNum

12.2(11)YT mode

12.2(11)YT reroutemode

12.2(11)YT transferConsultID

12.2(11)YT notifyEvents

12.2(11)YT originalDest

12.2(15)T retryCount

12.2(15)T interceptEvents

12.2(15)T notifyEvents

12.2(15)T previousCauseCode

12.3(14)T consumeDigit

Cisco IOS リリース コマンド

Page 16: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

xviTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて

コマンド履歴

Cisco IOS リリース 情報タグ

12.2(11)T leg_rgn_noa

12.2(11)T leg_rgn_npi

12.2(11)T leg_rgn_pi

12.2(11)T leg_rgn_si

12.2(11)T leg_rgn_num

12.2(11)T leg_rni_ri

12.2(11)T leg_rni_orr

12.2(11)T leg_rni_rc

12.2(11)T leg_rni_rr

12.2(11)T leg_ocn_noa

12.2(11)T leg_ocn_npi

12.2(11)T leg_ocn_pi

12.2(11)T leg_ocn_num

12.2(11)T leg_chn_noa

12.2(11)T leg_chn_npi

12.2(11)T leg_chn_num

12.2(11)T leg_rnn_noa

12.2(11)T leg_rnn_inn

12.2(11)T leg_rnn_npi

12.2(11)T leg_rnn_num

12.2(11)T leg_rnr

12.2(11)T leg_cdi_nso

12.2(11)T leg_cdi_rr

12.2(11)T leg_gno_ni

12.2(11)T leg_cnn_noa

12.2(11)T leg_cnn_npi

12.2(11)T leg_cnn_pi

12.2(11)T leg_cnn_si

12.2(11)T leg_cnn_num

12.2(11)T leg_gea_type

12.2(11)T leg_gea_noa

12.2(11)T leg_gea_npi

12.2(11)T leg_gea_cni

12.2(11)T leg_gea_pi

12.2(11)T leg_gea_si

12.2(11)T leg_gea_num

12.2(11)T leg_cpc

12.2(11)T leg_oli

12.2(11)T leg_cid_ton

12.2(11)T leg_cid_cid

12.2(11)T leg_tns_ton

Page 17: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

xviiTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて

コマンド履歴

12.2(11)T leg_tns_nip

12.2(11)T leg_tns_cc

12.2(11)T leg_tns_ns

12.2(11)T leg_pci_instr

12.2(11)T leg_pci_tri

12.2(11)T leg_pci_dat

12.2(11)T leg_fdc_parm

12.2(11)T leg_fdc_fname

12.2(11)T leg_fdc_instr

12.2(11)T leg_fdc_dat

12.2(11)T ev_vxmlevent

12.2(11)T ev_vxmlevent_params

12.2(11)T ev_status

12.2(11)T ev_iscommand_done

12.2(11)T ev_legs

12.2(11)T last_command_handle

12.2(11)T leg_guid

12.2(11)T leg_incoming_guid

12.2(11)T aaa_new_guid

12.2(11)YT evt_consult_info

12.2(11)YT evt_feature_report

12.2(11)YT evt_feature_type

12.2(11)YT evt_redirect_info

12.2(11)YT evt_transfer_info

12.2(11)YT leg_display_info

12.2(11)YT leg_dn_tag

12.2(15)T evt_gtd

12.2(15)T evt_endpoint_address

12.2(15)T evt_service_control_count

12.2(15)T evt_service_control

12.2(15)T evt_address_resolve_reject_reason

12.2(15)T evt_address_resolve_term_cause

12.2(15)T evt_last_event_handle

12.2(15)T evt_facility_id

12.2(15)T evt_facility_report

12.2(15)T evt_gtd

12.2(15)T evt_progress_indication

12.2(15)T evt_status

12.2(15)T gtd_attr_exists

12.3(100) leg_rni_ri(削除)

12.3(100) leg_rni_orr(削除)

12.3(100) leg_rni_rc(削除)

Cisco IOS リリース 情報タグ

Page 18: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

xviiiTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて

コマンド履歴

12.3(100) leg_rni_rr(削除)

12.3(100) leg_ocn_noa(削除)

12.3(100) leg_ocn_npi(削除)

12.3(100) leg_ocn_pi(削除)

12.3(100) leg_ocn_num(削除)

12.3(100) leg_chn_noa(削除)

12.3(100) leg_chn_npi(削除)

12.3(100) leg_chn_num(削除)

12.3(100) leg_rnn_noa(削除)

12.3(100) leg_rnn_inn(削除)

12.3(100) leg_rnn_npi(削除)

12.3(100) leg_rnn_num(削除)

12.3(100) leg_rnr(削除)

12.3(100) leg_cdi_nso(削除)

12.3(100) leg_cdi_rr(削除)

12.3(100) leg_gno_ni(削除)

12.3(100) leg_cnn_noa(削除)

12.3(100) leg_cnn_npi(削除)

12.3(100) leg_cnn_pi(削除)

12.3(100) leg_cnn_si(削除)

12.3(100) leg_cnn_num(削除)

12.3(100) leg_gea_type(削除)

12.3(100) leg_gea_noa(削除)

12.3(100) leg_gea_npi(削除)

12.3(100) leg_gea_cni(削除)

12.3(100) leg_gea_pi(削除)

12.3(100) leg_gea_si(削除)

12.3(100) leg_gea_num(削除)

12.3(100) leg_cpc(削除)

12.3(100) leg_oli(削除)

12.3(100) leg_cid_ton(削除)

12.3(100) leg_cid_cid(削除)

12.3(100) leg_tns_ton(削除)

12.3(100) leg_tns_nip(削除)

12.3(100) leg_tns_cc(削除)

12.3(100) leg_tns_ns(削除)

12.3(100) leg_pci_instr(削除)

12.3(100) leg_pci_tri(削除)

12.3(100) leg_pci_dat(削除)

12.3(100) leg_fdc_parm(削除)

12.3(100) leg_fdc_fname(削除)

12.3(100) leg_fdc_instr(削除)

Cisco IOS リリース 情報タグ

Page 19: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

xixTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて

コマンド履歴

12.3(100) leg_fdc_dat(削除)

12.3(4)T leg_proto_headers

12.3(4)T evt_handoff proto_headers

12.3(4)T evt_handoff dnis

12.3(4)T evt_handoff ani

12.3(4)T evt_handoff argstring

12.3(4)T evt_proto_content

12.3(4)T evt_proto_content_type

12.3(4)T evt_proto_headers

12.3(4)T evt_status

12.3(4)T evt_subscription_id

12.3(4)T mod_all_handles

12.3(4)T mod_handle

12.3(4)T mod_handle_service

12.3(4)T evt_msg

12.3(4)T evt_msg_source

12.3(4)T subscription_context

12.3(4)T subscription_info

12.3(4)T subscription_server_ipaddress

12.3(4)T evt_disc_rsi

12.3(4)T evt_disc_iec

12.3(4)T evt_feature_report

12.3(4)T evt_feature_param

12.3(4)T evt_feature_type

12.3(4)T evt_last_iec

12.3(4)T media_timer_factor

12.3(4)T set iec

12.3(4)T evt_dest_handle

12.3(4)T evt_handoff_legs

12.3(4)T leg_type

12.3(4)T aaa_accounting_last_sent

12.3(4)T evt_aaa_status_info

12.3(4)T evt_timer_name

12.3(4)T leg_remote_media_ip_address

12.3(4)T leg_remote_signaling_ip_address

Cisco IOS リリース 情報タグ

Page 20: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

xxTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて

コマンド履歴

Cisco IOS リリース イベント

12.2(11)T ev_vxmldialog_done

12.2(11)T ev_vxmldialog_event

12.2(11)T leg_suppress_outgoing_auto_acct

12.2(11)YT ev_consult_request

12.2(11)YT ev_consult_response

12.2(11)YT ev_consultation_done

12.2(11)YT ev_transfer_request

12.2(11)YT ev_transfer_status

12.2(15)T ev_facility

12.2(15)T ev_disc_prog_ind

12.2(15)T ev_address_resolved

12.2(15)T ev_alert

12.2(15)T ev_connected

12.2(15)T ev_proceeding

12.2(15)T ev_progress

12.3(4)T ev_accounting_status_ind

12.3(4)T ev_named_timer

12.3(4)T ev_feature

Cisco IOS リリース ステータス コード

12.2(11)T ls_016

12.2(11)T vd_xxx—VoiceXML Dialog Completion Status

12.2(11)YT cd_001 to cd_010

12.2(11)YT cr_000 to cr_004

12.2(11)YT cs_000 to cs_005

12.2(11)YT ft_001 to ft_006

12.2(11)YT ls_026

12.2(11)YT ls_031 to ls_033

12.2(11)YT ls_040 to ls_042

12.2(11)YT ls_050 to ls_059

12.2(11)YT ts_000 to ts_009

12.2(15)T fa_000, fa_003, fa_007, fa_009, fa_010, fa_050 to fa_052

12.3(4)T su_xxx, no_xxx, us_xxx, ul_xxx (000–010, 099)

Page 21: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

xxiTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて

対象読者

対象読者

このマニュアルは、開発者が、Cisco AS5x00 シリーズ ユニバーサル アクセス サーバなどの Cisco音声インターフェイスのための音声アプリケーション ソフトウェアを作成する場合の参考資料です。音声アプリケーションの開発者に含まれるのは、次のとおりです。

• 独立ソフトウェア ベンダー(ISV)

• 社内開発者

• システム インテグレータ

• 相手先商標による製造会社(OEM)

このマニュアルの対象読者は、次のとおりです。

• TCL プログラミングの知識と経験を持つユーザ

このマニュアルでは TCL IVR スクリプトの作成法および使用法を例示して説明していますが、TCLスクリプトの作成法のチュートリアルではありません。

マニュアルの構成

このマニュアルには、次の章と付録があります。

• 第 1章「概要」 では、Interactive Voice Response(IVR)、Tool Command Language(TCL)およびTCL IVR Application Programming Interface(API)Version 2.0 の概要を説明しています。

• 第 2章「TCL IVR スクリプトの使用方法」 では、TCL IVR スクリプトの作成法および使用法について説明します。

• 第 3章「TCL IVR API のコマンド リファレンス」 では、TCL IVR API コマンドについてアルファベット順に説明します。

• 第 4章「情報タグ」 では、コール レッグ、イベント、スクリプト、現在の設定、および RADIUSから戻された値に関する情報の取得に使用できる識別子について説明します。

• 第 5章「イベントとステータス コード」 では、TCL IVR スクリプトが受け取ったイベントおよび戻したステータス コードについて説明します。

• 付録 A「スクリプト例」 では、いくつかの TCL スクリプト例について説明します。

• 用語集は、このマニュアルで使用する共通用語についてアルファベット順に説明します。

Page 22: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

xxiiTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて

関連資料

関連資料

• Configuring Interactive Voice Response for Cisco Access Platforms

http://www.cisco.com/univercd/cc/td/doc/product/access/acs_serv/as5400/sw_conf/ios_121/pull_ivr.htm

• Service Provider Features for Voice over IP

http://www.cisco.com/univercd/cc/td/doc/product/software/ios120/120newft/120t/120t3/voip1203.htm

• Voice over IP for the Cisco AS5300

http://www.cisco.com/univercd/cc/td/doc/product/access/nubuvoip/voip5300/index.htm

• Voice over IP for the Cisco AS5800

http://www.cisco.com/univercd/cc/td/doc/product/access/nubuvoip/voip5800/index.htm

• Voice over IP for the Cisco 2600/Cisco 3600 Series

http://www.cisco.com/univercd/cc/td/doc/product/access/nubuvoip/voip3600/index.htm

• Configuring H.323 VoIP Gateway for Cisco Access Platforms

http://www.cisco.com/univercd/cc/td/doc/product/software/ios121/121cgcr/multi_c/mcprt1/mcdvoip.htm

• Prepaid Distributed Calling Card via Packet Telephony

http://www.cisco.com/univercd/cc/td/doc/product/access/acs_serv/as5400/sw_conf/ios_121/pull0134.htm

• RADIUS Vendor-Specific Attributes Implementation Guide

http://cco/univercd/cc/td/doc/product/access/acs_serv/vapp_dev/vsaig3.htm

• TCL IVR API Version 1.0 Programmer's Guide

http://cco/univercd/cc/td/doc/product/access/acs_serv/vapp_dev/tclivrpg.htm

• Interactive Voice Response Version 2.0 on Cisco VoIP Gateways

http://cco/univercd/cc/td/doc/product/software/ios121/121newft/121t/121t3/dt_skyn.htm

• Enhanced Multilanguage Guide

http://www.cisco.com/univercd/cc/td/doc/product/software/ios122/122newft/122t/122t2/ftmultil.htm

• Cisco IOS Security Configuration Guide, Release 12.2

http://www.cisco.com/univercd/cc/td/doc/product/software/ios122/122cgcr/fsecur_c/index.htm

• Cisco IOS TCL and VoiceXML Application Guide

http://www.cisco.com/univercd/cc/td/doc/product/software/ios122/122newft/122t/122t11/ivrapp/index.htm

• Cisco VoiceXML Programmer’s Guide

http://www.cisco.com/univercd/cc/td/doc/product/software/ios122/rel_docs/vxmlprg/index.htm

• Introduction to writing TCL scripts:TCL and the TK Toolkit, by John Ousterhout(published by AddisonWesley Longman, Inc)

• Developer Support Agreement

http://www.cisco.com/warp/public/779/servpro/programs/ecosystem/devsup

Page 23: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

xxiiiTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて

表記法

表記法

このマニュアルでは、手順および関連情報について説明する際、次の表記法を使用しています。

(注) 注釈です。役立つ情報や、追加情報などの参照資料を紹介しています。

ワンポイント・アドバイス 時間を節約する方法です。ここに紹介している方法で作業を行うと、時間を短縮できます。

注意 要注意の意味です。機器の損傷またはデータ損失を予防するための注意事項が記述されています。

ヒント 問題の解決に役立つ情報を示しています。トラブルシューティングもしくはその方法ではありませ

んが、ワンポイント アドバイスと同じく便利な情報です。

表記法 説明

太字 コマンドおよびキーワード

イタリック体 ユーザが値を指定する変数

[ ] 角カッコ内に表示されるキーワードもしくは引数は、省略可能です。

{x | y | z} 必須キーワードの選択は、波カッコで囲み、縦棒で区切って表示され

ます。必ず 1 つを選択する必要があります。

screen フォント 画面に表示される情報例

太字の screen フォント ユーザが入力しなければならない情報例

< > パスワードのように出力されない文字は、状況によりイタリック体を

使用できない場合、山カッコで囲んで表示されます。

[ ] システム プロンプトに対するデフォルトの応答は、角カッコで囲んで表示されます。

Page 24: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

xxivTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて

技術情報の入手方法

技術情報の入手方法

この項では、シスコ製品に関する技術情報を入手する方法について説明します。

World Wide WebWorld Wide Web 上の次の URL から、シスコ製品の最新資料を入手することができます。

http://www.cisco.com

また、シスコの Web サイトの各国語版へは、次の URL からアクセスできます。

http://www.cisco.com/public/countries_languages.shtml

シスコ製品の最新資料の日本語版は、次の URL からアクセスしてください。

http://www.cisco.com/jp

Documentation CD-ROM(英語版)シスコ製品のマニュアルおよびその他の資料は、製品に付属の Cisco Documentation CD-ROM パッケージでご利用いただけます。Documentation CD-ROM は毎月更新されるので、印刷資料よりも新しい情報が得られます。この CD-ROM パッケージは、1 回単位または年間契約で入手することができます。

マニュアルの発注方法(英語版)

シスコのマニュアルは、次の方法で入手できます。

• シスコ直販のお客様の場合、Networking Products MarketPlace からシスコ製品の英文マニュアルを発注できます。次の URL にアクセスしてください。

http://www.cisco.com/cgi-bin/order/order_root.pl

• Cisco.com 登録ユーザの場合、Documentation CD-ROM をオンラインの Subscription Store から発注できます。

http://www.cisco.com/go/subscription

• Cisco.com に登録されていない場合、製品を購入された代理店へお問い合せください。

シスコシステムズマニュアルセンター

シスコシステムズマニュアルセンターでは、シスコ製品の日本語マニュアルの最新版を PDF 形式で公開しています。また、日本語マニュアル、および日本語マニュアル CD-ROM もオンラインで発注可能です。ご希望の方は、次の URL にアクセスしてください。

http://www2.hipri.com/cisco/

また、シスコシステムズマニュアルセンターでは、日本語マニュアル中の誤記、誤植に関するコメ

ントをお受けしています。次の URL の「製品マニュアル内容不良報告」をクリックすると、コメント入力画面が表示されます。

http://www2.hipri.com/cisco/

なお、技術内容に関するお問い合せは、この Web サイトではお受けできませんので、製品を購入された各代理店へお問い合せください。

Page 25: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

xxvTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて

テクニカル サポート

テクニカル サポートシスコでは、あらゆる技術上の支援のための窓口として Cisco.com を運営しています。お客様およびパートナーは Cisco Technical Assistance Center(TAC)Web サイトからマニュアル、トラブルシューティングに関するヒント、およびコンフィギュレーション例をオンライン ツールで入手できます。Cisco.com にご登録済みのお客様は、Cisco TAC Web サイトで提供するすべてのテクニカル サポート リソースをご利用いただけます。

Cisco.comCisco.com は、いつでもどこからでも、シスコの情報、ネットワーキング ソリューション、サービス、プログラム、およびリソースにただちに自由にアクセスできる対話形式のネットワーク サービスの基盤です。

Cisco.com は、高度に統合されたインターネット アプリケーションで、次の目的に役立つ機能およびサービスを豊富に用意する、強力で使いやすいツールです。

• ビジネス プロセスの合理化と生産性の向上

• オンライン テクニカル サポートによる技術上の問題の解決

• ソフトウェア パッケージのダウンロードおよびテスト

• シスコのトレーニング資料や製品の発注

• オンラインでのスキル査定、トレーニング、認定プログラムへの登録

Cisco.com に登録されると、各ユーザに合った情報やサービスが得られます。Cisco.com には、次のURL からアクセスしてください。

http://www.cisco.com

TAC(Technical Assistance Center)シスコの製品、テクノロジー、またはソリューションについて技術的な支援が必要な場合には、TACをご利用いただくことができます。Cisco TAC では、2 種類のサポートを提供しています。CiscoTAC Web サイトと Cisco TAC Escalation Center です。

TAC へのお問い合せは、問題の緊急性に応じて分類されます。

• プライオリティ レベル 4(P4):シスコ製品の機能、インストレーション、基本的なコンフィギュレーションについて、情報または支援が必要な場合。

• プライオリティ レベル 3(P3):ネットワークの動作パフォーマンスが低下している。ネットワーク機能に軽微な障害が発生しているが、ほとんどの業務運用は継続できる。

• プライオリティ レベル 2(P2):ネットワークの機能が著しく低下したため、業務に重大な影響を及ぼした。回避策がない。

• プライオリティ レベル 1(P1):ネットワークがダウンした状態で、サービスが早急に回復しなかった場合、業務に致命的な損害が発生する。回避策がない。

どの Cisco TAC リソースをご利用になるかは、問題の緊急性とサービス契約(該当する場合)に記載された条件によって決まります。

Page 26: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

xxviTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて

テクニカル サポート

Cisco TAC Web サイト

Cisco TAC Web サイトでは、ユーザは P3 および P4 レベルの問題をユーザ自身で解決でき、費用と時間を節約することができます。このサイトでは、オンライン ツール、知識ベース、ソフトウェアに 24 時間アクセスできます。Cisco TAC Web サイトには、次の URL からアクセスしてください。

http://www.cisco.com/tac

シスコとサービス契約を結んでいるお客様、パートナー、リセラーは、Cisco TAC Web サイトのすべてのテクニカル サポート リソースをご利用いただけます。Cisco TAC Web サイトには、Cisco.comのログイン ID とパスワードが必要です。サービス契約が有効で、ログイン ID またはパスワードを取得していない場合は、次の URL にアクセスして登録手続きを行ってください。

http://www.cisco.com/register/

Cisco.com の登録ユーザは、Cisco TAC Web サイトで技術上の問題を解決できなかった場合、次のURL から TAC Case Open ツールのオンライン サービスを利用することができます。

http://www.cisco.com/tac/caseopen

インターネットを利用する場合、P3 および P4 の問題については、Cisco TAC Web サイトのサービスを利用することをお勧めします。

Cisco TAC Escalation Center

Cisco TAC Escalation Center では、P1 および P2 レベルの問題に対応しています。このレベルに分類されるのは、ネットワークの機能が著しく低下し、業務の運用に重大な影響がある場合です。CiscoTAC Escalation Center にお問い合せいただいた P1 または P2 の問題には、TAC エンジニアが対応します。

TAC フリーダイヤルの国別電話番号は、次の URL を参照してください。

http://www.cisco.com/warp/public/687/Directory/DirTAC.shtml

ご連絡に先立って、お客様が契約しているシスコ サポート サービスがどの契約となっているか(たとえば、SMARTnet、SMARTnet Onsite、または Network Supported Accounts(NSA; ネットワーク サポート アカウント)など)、お客様のネットワーク管理部門にご確認ください。また、お客様のサービス契約番号およびご使用の製品のシリアル番号をお手元にご用意ください。

Japan TAC Web サイト

Japan TAC Web サイトでは、利用頻度の高い TAC Web サイト(http://www.cisco.com/tac)のドキュメントを日本語で提供しています。Japan TAC Web サイトには、次の URL からアクセスしてください。

http://www.cisco.com/jp/go/tac

サポート契約を結んでいない方は、「ゲスト」としてご登録いただくだけで、Japan TAC Web サイトのドキュメントにアクセスできます。Japan TAC Web サイトにアクセスするには、Cisco.com のログイン ID とパスワードが必要です。ログイン ID とパスワードを取得していない場合は、次のURL にアクセスして登録手続きを行ってください。

http://www.cisco.com/jp/register

Page 27: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

xxviiTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて

テクニカル サポート

Developer Support

Cisco Developer Support Program についてご紹介します。このプログラムは、開発プロジェクトにおいて Cisco のインターフェイスを利用する間、信頼性の高いサポートを一貫したレベルで提供します。

ヒント このプログラムへ加入するには、Developer Support Agreement の承認が必要です。詳細については、http://www.cisco.com/go/developersupport にアクセスするか、[email protected] まで電子メールでお問い合せください。

Page 28: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

xxviiiTCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このマニュアルについて

テクニカル サポート

Page 29: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

C H A P T E R

1-1TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

1

概要

この章では、Interface Voice Response(IVR)、Tool Command Language(TCL)、および TCL IVRApplication Programming Interface(API)Version 2.0 の概要について説明します。次の項で構成されます。

• IVR と TCL(P.1-2)

• TCL IVR API Version 2.0(P.1-3)

- 前提条件(P.1-3)

- 利点(P.1-3)

- サポートされる機能(P.1-4)

- Developer Support(P.1-4)

• 拡張された複数言語のサポート(P.1-5)

• VoiceXML および IVR アプリケーション(P.1-6)

• TCL IVR コール転送の概要(P.1-10)

• SIP 登録および通知(P.1-40)

• SIP ヘッダー(P.1-41)

• アプリケーション インスタンス(P.1-42)

• セッション対話(P.1-43)

• サービス レジストリ(P.1-44)

Page 30: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要IVR と TCL

1-2TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

IVR と TCLIVR は、電話回線を使用し、記録されたメッセージに応答したユーザ入力を収集するために使用されるシステムを表す用語です。ユーザ入力の形式には、話し言葉やより一般的なデュアル トーンマルチ周波数(DTMF)シグナリングがあります。

たとえば、ユーザがデビット カードを使用して電話をかけると、PIN などの特定の種類の情報を入力するように発信者に案内するために IVR アプリケーションが使用されます。音声プロンプトの再生後、IVR アプリケーションは、タッチ トーンの指定済みの番号を収集し(ディジット収集)、収集したディジットをサーバに転送して保存および検索してから、宛先の電話またはシステムに電話

をかけます。呼は記録をとることが可能なため、多彩なアカウンティング機能を実行できます。

IVR アプリケーション(またはスクリプト)は、音声機能および特性を備えたルータである「音声ゲートウェイ」で呼処理を行うために設計された音声アプリケーションです。

IVR スクリプトで使用するプロンプトは、静的または動的のいずれでも使用できます。

• 「スタティック プロンプト」は、静的な URL によって参照される音声ファイルです。音声ファイルの名前と格納場所は、TCL スクリプトで指定されます。

• 「ダイナミック プロンプト」は、基盤となるシステムによって生成され、比較的小さい音声プロンプトを組み立てて順番に再生します。どのプロンプトを再生するかをシステムに命令する

ために、表記法に基づいた API コマンド(P.3-47 の「media play」を参照)がスクリプトで使用されます。基盤となるシステムは、選択された言語や構成された音声ファイルの格納場所に基

づいて一連の URL を組み立て、順番に再生します。これによって、簡単な TTS(Text-to-Speech)操作が提供されます。

たとえば、ダイナミック プロンプトは、次のように、デビット カードのアカウントに通話時間がどれだけ残っているかを発信者に知らせる場合に使用します。

“You have 15 minutes and 32 seconds of call time left in your account.”

(注) 上記のプロンプトを生成するために、8 つの個別のプロンプト ファイルが使用されています。ファイルの内訳は、youhave.au、15.au、minutes.au、and.au、30.au、2.au、seconds.au、leftinyouraccount.auです。これらの音声ファイルは、基盤となるシステムによって動的に組み立てられ、選択された言

語やプロンプト ファイルの格納場所に基づいて 1 つのプロンプトとして再生されます。

Cisco IOS リリース 12.0(6)T 以降で利用可能な Cisco Interactive Voice Response(IVR)機能では、TCL 1.0 スクリプトの使用によって IVR 機能が提供されます。このスクリプトではシグニチャがロックされているため、Cisco によってのみ変更が可能です。IVR 機能によって、呼処理中に IVR スクリプトを使用することが可能になり、Cisco IOS ソフトウェアで呼関連の関数を多数実行することが可能になります。Cisco IOS リリース 12.1(3) 以降は、TCL スクリプトがロックされていないため、カスタマーは TCL スクリプトを自分で作成および変更することができます。

TCL は、インタプリタ型のスクリプト言語です。このため、TCL で記述されたスクリプトは、実行する前にコンパイルする必要がありません。TCL には基本的なコマンド セットが用意されているため、フロー制御(if、then、else)などの標準関数や変数管理に対応できます。拡張機能を言語に追加すれば、このコマンド セットを拡張して特定の操作を行うこともできます。

TCL IVR コマンドと呼ばれる拡張機能のセットが作成されたため、ユーザは、TCL を使用してIVR スクリプトを作成することが可能になります。シェルから実行される別の TCL スクリプトと異なり、TCL IVR スクリプトは、ゲートウェイに呼が着信すると実行されます。

このマニュアルでは、これ以降、TCL や、TCL によるスクリプトの作成について理解していることを前提としています。まだよく理解していない場合は、『TCL and the TK Toolkit』(JohnOusterhout 氏著、Addison Wesley Longman, Inc 発行)をお読みください。

Page 31: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR API Version 2.0

1-3TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

TCL IVR API Version 2.0ここでは、TCL IVR API における前提条件、制約事項、利点、機能、開発者サポート プログラムについて説明します。

前提条件

使用する場合は次のプラットフォームが必要です。

• Cisco AS5300、Cisco AS5400、または Cisco AS5800

• Cisco IOS リリース 12.1(3)T 以降

• TCL Version 7.1 以降

呼がゲートウェイに着信するには、アナログ回線、ISDN 回線、VoIP リンク、Voice over Frame Relay(VoFR)リンクのいずれかが使用されます。TCL IVR スクリプトは、アナログ回線や ISDN 回線で受信した呼に対しては完全な機能を提供することができます。

一方、VoIP リンクや VoFR リンクで受信した呼に対しては、使用する Cisco IOS ソフトウェアのリリースに基づいて機能が提供されます。たとえば、Cisco IOS リリース 12.0 を使用する場合、プロンプトまたはトーンの再生やトーンの収集を行うことはできません。

(注) TCL IVR API Version 2.0 は、TCL IVR API Version 1.0 とは別個の製品です。

利点

TCL IVR API Version 2.0 には、次の利点があります。

• スクリプトはイベント方式で、呼のフローは、TCL スクリプトで定義される有限状態マシン(FSM)によって制御されます。

• VoIP のコール レッグに対してプロンプトを再生できます。

• VoIP のコール レッグに対してディジットを収集できます。

• Real-Time Streaming Protocol(RTSP)ベースのプロンプトは、(一部の Cisco IOS ソフトウェアのリリースおよびプラットフォームで)サポートされています。

• スクリプトで複数のレッグを同時に制御することができます。

• スクリプト間でコール レッグを受け渡すことができます。

• 動詞はすべてノンブロッキングです。これは、スクリプトの待ち時間を発生させずに実行でき

ることを意味し、スクリプトが複数のタスクを一度に行うことを可能にします。次のコード例

を参照してください。

leg collect digits 1 callInfo leg collect digits 2 callInfo leg setup 295786 setupInfo $callID5 puts "\n This will be executed immediately i.e. before the collect digits or call setup is actually complete"

上記のスクリプト例では、レッグ 1 とレッグ 2 でディジット収集が開始され、callID5 を着信レッグとして呼の確立プロセスが開始されます。スクリプトは、各コマンドを発行した後で、

それぞれの終了に関するイベントを受け取ります。コマンドはいずれも、別のコマンドの処理

が終了するまで待つ必要がありません。

Page 32: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR API Version 2.0

1-4TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

サポートされる機能

TCL IVR API Version 2.0 のコマンドを使用して、次のファシリティや機能を利用することができます。

• 呼処理(確立、会議通信、切断など)

• メディアの再生と制御(メモリ ベースおよび RTSP ベースの両プロンプト)

• AAA 認証および許可

• OSP 決済

• コール タイマーとレッグ タイマー

• 再生トーン

• 呼の受け渡しと戻り

• ディジット収集

詳細については、第 3章「TCL IVR コマンド」を参照してください。

Developer SupportCisco Developer Support Program についてご紹介します。この新しいプログラムは、開発プロジェクトにおいて Cisco のインターフェイスを利用する間、信頼性の高いサポートを一貫したレベルで提供します。

このプログラムへ加入するには、Developer Support Agreement の承認が必要です。詳細について、またサポート契約については、http://www.cisco.com/warp/public/779/servpro/programs/ecosystem/devsupにアクセスするか、[email protected] まで電子メールでお問い合せください。

Page 33: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要拡張された複数言語のサポート

1-5TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

拡張された複数言語のサポート

Cisco IOS リリース 12.2(2)T から、Cisco IOS ゲートウェイのコア IVR インフラストラクチャに新しい言語と TTS(Text-to-Speech)表記を追加するためのサポートを提供する新機能が TCL IVRVersion 2.0 に導入されました。

従来、IVR アプリケーションで TTS を実行する場合、英語、スペイン語、中国語に制限され、TTS表記セットも変更できませんでした。IVR アプリケーションでサポートされる言語を追加するには、独自に翻訳を行い、翻訳を必要とする TCL IVR アプリケーションすべてに言語翻訳プロシージャを追加する必要がありました。

この新機能により、あらゆる言語と TTS 表記セットについて新しい TCL 言語モジュールを作成できます。モジュールとそれに付属する音声ファイルを言語パッケージとしてテストして配布し、配

布する言語とサポートする TTS 表記を文書化できます。ゲートウェイにこのモジュールを設定すると、そのゲートウェイで実行される IVR アプリケーションとその TTS 表記を使用するアプリケーションは、その言語で動作し、発声します。

詳細については、『Enhanced Multi-Language Support for Cisco IOS Interactive Voice Response』マニュアルを参照してください。

(注) TCL 言語モジュールは TCL IVR スクリプトではありません。TCL 言語モジュールは特定の TCLLanguage Module Interface(TLMI)を実装するピュアな TCL スクリプトであるため、IVR スクリプトの記述に使用できる TCL IVR API 拡張の使用は許可されていません。

Page 34: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要VoiceXML および IVR アプリケーション

1-6TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

VoiceXML および IVR アプリケーションVoiceXML は Web ベースの開発とコンテンツという利点を IVR アプリケーションにもたらしました。IVR アプリケーションでの VoiceXML の使用に関する詳細については、『Cisco IOS Tcl andVoiceXML Application Guide 』および『Cisco VoiceXML Programmer's Guide』を参照してください。

TCL での呼の受け渡し呼の受け渡しについて理解するには、まずアプリケーション インスタンスの概念を理解する必要があります。Cisco IOS IVR インフラストラクチャでは、アプリケーション インスタンスは、アプリケーション コードを実行し、1 つ以上のコール レッグを受信、作成、管理して呼を生成したり、ユーザにサービスを提供したりするエンティティです。アプリケーション インスタンスは、これらのコール レッグを所有および制御し、コール レッグに関連付けられたイベントをすべて受け取ります。例外もありますが、通常、アプリケーションは 1 つのアプリケーション インスタンスを使用し、1 つの呼によるサービスを提供します。TCL IVR アプリケーションは、実行中 1 つ以上のアプリケーション インスタンスとして動作します。

呼の受け渡しは、あるアプリケーション インスタンスから別のアプリケーション インスタンスにコール レッグの制御全体を転送する操作を表す用語です。呼が受け渡されると、そのコール レッグに関連付けられたそれ以降のイベントはすべて、転送先のアプリケーション インスタンスによって受け取られ、処理されます。

受け渡しは、コール レッグが受け渡し操作の元のアプリケーション インスタンスに戻る必要があるかどうかに応じて、いくつかの異なる方法で行うことができます。通常の受け渡しアプリケー

ション操作は、goto イベントに似ていますが、戻りアドレスが自動的に記憶されることはありません。転送先は、元のインスタンスにレッグを戻すことができません。

call app 操作は、関数呼び出しに似ています。call app 操作を実行するアプリケーション インスタンスはスタックに保存されるので、転送先アプリケーション インスタンスが受け渡しの戻し操作を実行して、スタックの一番上にあるアプリケーション インスタンスにコール レッグを戻すことができます。

コール レッグの受け渡しを実行すると、そのコール レッグと会議通信しているレッグがあれば、明示的に指定されなくても一緒に受け渡されます。受け渡し操作または受け渡しの戻し操作を実行す

るとき、アプリケーション インスタンスでパラメータを引数文字列として渡すことができます。呼の受け渡しは、VoiceXML と TCL IVR 2.0 のアプリケーションの任意の組み合わせの間で実行できます。

呼の受け渡し機能を使用すると、開発者はさまざまな目的のために互いに対話するアプリケーショ

ンを記述できます。これには、既存アプリケーションの機能を利用する場合や、大きなアプリケー

ションを小さいアプリケーション セグメントにモジュール化し、受け渡しメカニズムを使用してモジュール間の調整と通信を行う場合などがあります。場合によっては、アプリケーション開発者が、

開発するアプリケーションで VoiceXML と TCL IVR 2.0 の両方の機能を利用する必要が生じることがあります。これもまた、受け渡し操作のアプリケーションになる可能性があります。

受け渡し操作には、モジュール化やアプリケーション間の対話の実現という点では、ある程度の柔

軟性がありますが、コール レッグの制御に関しては制限があります。コール レッグを全体的に制御し、イベントを受け取るアプリケーション インスタンスは 1 つだけであることが、シナリオによっては制限となる可能性があります。したがって、TCL IVR 2.0 と VoiceXML の両方に関わるアプリケーションの実装メカニズムの選択を検討する際には、開発者は選択肢としてハイブリッド スクリプトも検討することをお勧めします。

ハイブリッド アプリケーションは、呼の受け渡し操作とは異なります。ハイブリッド アプリケーションは、TCL IVR スクリプトと、その中に組み込まれているか、またはそこから起動されるVoiceXML ダイアログを使用して記述されます。TCL IVR スクリプトは呼制御に使用され、

Page 35: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要VoiceXML および IVR アプリケーション

1-7TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

VoiceXML スクリプトはダイアログ管理に使用されます。これらはすべて 1 つのアプリケーションインスタンスの一部として実行され、コール レッグの共有制御をある程度可能にします。ハイブリッド スクリプトの詳細については、この後で説明します。

VoiceXML での呼の受け渡しCisco VoiceXML 実装での呼の受け渡し機能は、TCL IVR 2.0 で handoff appl および handoff callappl動詞によって開始される呼の受け渡しに似ています。VoiceXML 実装での呼の受け渡しに関する詳細については、『Cisco VoiceXML Programmer Guide』を参照してください。

TCL/VoiceXML ハイブリッド アプリケーションTCL IVR 2.0 および VoiceXML API には、それぞれ独自の長所と短所があります。TCL IVR 2.0 は呼制御という面ではきわめて柔軟であり、複数のコール レッグと、その制御方法やインターワーキング方法を記述できます。ただし、ユーザ インターフェイス プリミティブが leg collectdigits およびmedia play コマンドに制限されるという短所があります。

一方、VoiceXML は音声ユーザ インターフェイスの設計ではよく知られており、使いやすいのですが、呼制御機能については大幅な制限があります。たとえば、VoiceXML ダイアログはユーザ入力の収集やプロンプトの再生などの IVR アクティビティには適しています。

そのため、TCL IVR 2.0 は、コール レッグと、コール レッグ間の呼のフローや呼制御の記述への使用には適しており、一方、VoiceXML は、制御する 1 つ以上のレッグで動作するユーザ インターフェイス ダイアログの記述に適しています。

限定的に、受け渡しメカニズムを使用して TCL IVR 2.0 で別個のアプリケーション インスタンスを動作させたり、VoiceXML をアプリケーションの呼制御やダイアログ部分の処理に使用したりすることが可能な場合もありますが、呼制御とダイアログのアクティビティを明確に分離することが次

第に困難になります。これには、呼制御スクリプトと、コール レッグに対するダイアログ実行共有制御が必要になりますが、これを受け渡しアプローチで実現するのは困難です。

Cisco IOS リリース 12.2(11)T には、開発者が TCL および VoiceXML スクリプトを使用してハイブリッド アプリケーションを開発するための機能が導入されました。TCL IVR 2.0 拡張によって、TCLアプリケーションが、TCL IVR スクリプト内から VoiceXML を呼び出しおよび管理することで、ASR と TTS のサポートを活用できるようになります。ハイブリッド アプリケーションは、呼制御に TCL IVR を、ダイアログ管理に VoiceXML を使用して開発できます。アプリケーションは TCLIVR 2.0 と VoiceXML の API の両方を使用しながら 1 つのアプリケーション インスタンスとして動作することができます。

ハイブリッド スクリプトでは、制御の共有と優先規則を設定する必要があります。ハイブリッドアプリケーションでは、TCL IVR 2.0 スクリプトによって呼とそのすべてのコール レッグが制御されます。ハイブリッド スクリプトは、着信コール レッグについて ev_setup_indication を受け取ります。また、leg alert の発行や、leg connect コマンドを使用したコール レッグの受信のためのプリミティブを備えています。さらに、発信コール レッグの作成、1 つ以上のコール レッグのブリッジ、またはその他の類似操作のためのプリミティブとイベントのサポートもあります。

TCL IVR スクリプトが、いずれかのコール レッグのユーザと通信する必要がある場合、2 つの方法があります。ネイティブの TCL IVR 2.0 で既存の leg collectdigits および media play コマンドを使用して個々の音声プロンプトを再生してディジットを収集するか、leg vxmldialog コマンドを使用してレッグでの VoiceXML ダイアログ操作を開始できます。leg vxmldialog コマンドは、TCL IVR 2.0スクリプトの直接制御の下で、コール レッグでの VoiceXML インタプリタ セッションを起動します。セッションで起動される最初の VoiceXML ドキュメントは、起動元の TCL IVR 2.0 スクリプトに組み込まれているか、または単に Web サーバにある VoiceXML ドキュメントが参照されます。

Page 36: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要VoiceXML および IVR アプリケーション

1-8TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

レッグで起動されたこの VoiceXML セッションは、ほぼ標準的な VoiceXML セッションですが、次の例外があります。

• VoiceXML ダイアログ セッションと TCL IVR 2.0 呼制御スクリプトの間で情報交換ができるように、同期のためのプリミティブとメカニズムが追加されている。

• VoiceXML では、<transfer> や <disconnect> タグなどの呼制御コマンドがサポートされているが、このモードでは、TCL IVR 2.0 スクリプトがすべての呼制御アクティビティを完了しなければならないため動作が異なる。

ハイブリッド アプリケーションでの VoiceXML と TCL IVR 2.0 間の通信

TCL IVR 2.0 スクリプトがコール レッグで VoiceXML ダイアログを開始するとき、leg vxmldialog コマンドにパラメータの配列を渡すことができます。これらのパラメータは、com.cisco.params.xxxxxx変数を使用して VoiceXML セッションからアクセスできるようになります。VoiceXML セッションでは、com.cisco.params オブジェクトに TCL IVR 配列からの情報が入力されます(xxxxx は TCL 配列の指数)。

VoiceXML ダイアログは、終了するときに <exit/> タグの namelist 属性を使用して TCL IVR スクリプトに情報を戻すことができます。VoiceXML ダイアログが実行を終了すると、TCL スクリプトはexit タグで戻される情報が付属する ev_vxmldialog_done イベントを受け取ります。このイベントには、evt_status 情報タグを使用してアクセス可能なステータス コードも付属しています。

VoiceXML ダイアログの開始や終了とは別に、TCL スクリプトは leg vxmlsend コマンドを使用して実行中のダイアログに中間メッセージを送信できます。コマンドで指定されたイベントは、

VoiceXML インタプリタ内にスローされ、イベントを検索する <catch> ハンドラによってキャッチできます。このコマンドには TCL パラメータ配列を使用することもできます。配列の情報には、前述した com.cisco.params.xxxx に似た、適用範囲を設定した _message.params.xxxxxx 変数を使用してVoiceXML catch ハンドラ内でアクセスできます。

同様に、VoiceXML インタプリタ環境または実行中のドキュメントから、さまざまなタイミングでTCL スクリプトにイベントを送信できます。このようなイベントは、ev_vxmldialog_event イベントとして TCL スクリプトに着信します。実行中の VoiceXML ドキュメントは、<object> 拡張にclassid="builtin://com.cisco.ivrscript.sendevent" と指定することで、明示的なメッセージを関連するパラメータ情報と共に親 TCL スクリプトに送信できます。VoiceXML ドキュメントがハイブリッドモードで <disconnect> や <transfer> のような特定のタグを実行すると、TCL スクリプトはev_vxmldialog_event イベントを暗黙的に受け取ります。

ev_vxmldialog_done イベントまたは ev_vxmldialog_event イベントには、次の 2 つの情報が付属することがあります。

• VoiceXML 固有のイベント名。ev_vxmldialog_done または ev_vxmldialog_event イベントのさまざまな理由を識別するために使用し、evt_vxmlevent 情報タグを使用してアクセスできます。このイベント名は、vxml.* の形式の文字列です。これは、イベント名の発生元が VoiceXML インタプリタ環境(vxml.session.*)か、VoiceXML インタプリタで実行されているダイアログ(vxml.dialog.*)の可能性があることを示しています。環境レベルのメッセージの例としては、

vxml.session.complete(ダイアログの正常な終了を示す)、または vxml.session.transfer(ドキュメントがこのモードの操作ではサポートされていない <transfer> タグの実行を試みたことを示す)があります。キャッチされない error.badfetch メッセージをドキュメントがスローし、それが原因でダイアログが終了する場合、またはドキュメントが <object> 送信タグを使用して TCLに明示的なメッセージを送信する場合、evt_vxmlevent には、vxml.dailog.* 文字列が含まれます。

• evt_vxmlevent_params 情報タグを使用してアクセス可能な情報のパラメータ配列。

Page 37: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要VoiceXML および IVR アプリケーション

1-9TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

ハイブリッド モードと VoiceXML 呼制御タグ

ハイブリッド モードでは、VoiceXML の <disconnect> タグがコール レッグを切断することはありません。代わりに、vxml.session.disconnect イベントが TCL IVR スクリプトに送信されます。VoiceXML の実行という観点では、<disconnect> がエミュレートされ、disconnect イベントをスローしてから実行を継続します。ダイアログでは、これ以降、プロンプトの再生や入力の収集は行われ

ません。

ユーザが電話を切ると、上記と同じように <disconnect> が再びエミュレートされます。ただし、レッグはまだ切断されていません。TCL スクリプトは制御イベントの一部として ev_disconnected イベントを受け取ってから、ダイアログを終了するかダイアログが終了するまで待機し、レッグを切断し

ます。

ドキュメントが <transfer> タグを実行すると、次の結果になります。

• vxml.session.transfer イベントが VoiceXML 環境から TCL スクリプトに送信される。

• VoiceXML 環境から VoiceXML セッションにキャッチ可能な error.unsupported.transfer イベントがスローされる。キャッチされない場合は、デフォルトのハンドラがダイアログを終了し、

最終的な ev_vxmldialog_done イベントを TCL スクリプトに送信します。

SendEvent オブジェクト記録されたオブジェクトは、VoiceXML/JAVA スクリプトでは音声オブジェクト変数として表されます。TCL ではすべてがテキスト ベースであるため、オブジェクトは ram://XXXXX URI として表されます。ram://XXX の値を持つ TCL 配列要素は、VoiceXML では音声変数または音声オブジェクトとして使用できます。同様の逆変換が、VoiceXML から TCL スクリプトに情報が渡されるときに行われます。

Page 38: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-10TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

TCL IVR コール転送の概要TCL IVR スクリプトを使用して、さまざまなコール転送プロトコルでブラインド転送および打診転送をサポートできます。ここでは、TCL IVR アプリケーションに関するコール転送の用語と使用方法のシナリオについての背景を説明します。また、サポートされる各プロトコルのコール転送機能

について、転送に関与する終端点が異なるシグナリング プロトコルを使用する場合にサポートされるプロトコルでどのようなインターワーキングが可能かについて説明します。

コール転送の用語

転送参加者

通常、コール転送には次の 3 つの参加者が含まれます。

• 転送元(XOR):転送を開始する終端点。

• 転送中継先(XEE):別の宛先に転送される終端点。

• 転送先(XTO):転送中継先が転送先となる終端点。

転送のトリガー

コール転送のトリガーとは、転送元終端点がコール転送プロシージャの開始に使用するメカニズム

です。これは通常、アナログ電話用のフックフラッシュ イベント、または Cisco CallTw55tieManagerExpress(CME)モードで動作する Cisco IOS 音声ゲートウェイに登録された IP 電話のボタンまたはソフトキーです。

転送のコミット

転送のコミットは、転送中継先と転送先の終端点を接続する必要がある場合に転送元終端点が実行

する操作であり、多くの場合は転送先終端点に打診した後に行われます。アナログ電話と Cisco CMEIP 電話については、転送のコミットは通常、電話を切ることによって実行されます。TCL IVR スクリプトは通常、転送がコミットされたことを示す結果を受信すると、転送要求を転送中継先コール

レッグに送信します。

サポートされる TCL IVR コール転送スクリプトCisco では、この後に説明する H.450 コール転送シナリオをサポートする TCL IVR スクリプトを公式に提供しています。http://www.cisco.com/cgi-bin/tablebuild.pl/ip-key で参照できる Cisco CallManagerExpress(CME)zip ファイルに含まれています。スクリプトの現行バージョンは、app_h450_transfer.2.0.0.3.tcl という名前です。詳細については、スクリプトに付属している READMEファイルを参照してください。

Cisco IOS デフォルト セッション アプリケーションでのコール転送サポートコール転送サポートが 12.2(15)ZJ Cisco IOS リリースのデフォルト音声セッション アプリケーションに追加されました。デフォルト アプリケーションでは、H.450 および SIP の転送中継先および転送先機能がブラインド転送と打診転送について提供されるようになりました。また、Cisco IOS ゲートウェイに接続している IP 電話で Cisco CallManager Express(CME)モードで動作したまま、H.450および SIP のブラインド転送と打診転送がサポートされます。

Page 39: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-11TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

(注) 拡張されたデフォルト セッション アプリケーションでは、Cisco IOS ゲートウェイに接続するアナログ電話を使用した転送開始はサポートされません。この機能は、前述した app_h450_transfer.2.0.0.3.tclスクリプトで実現するか、またはカスタム TCL IVR アプリケーションに実装できます。

カスタム TCL IVR コール転送スクリプトすでに説明した Cisco IOS デフォルト セッション アプリケーションと app_h450_transfer.tcl スクリプトを使用して、多くの典型的なコール転送シナリオをサポートできます。この機能のバリエー

ションが必要な場合は、カスタム TCL IVR スクリプトを記述できます。Developer Support Centralページにある call-transfer-sample.zip ファイルには、TCL IVR スクリプト例と関連するマニュアルが含まれており、カスタム スクリプトを記述する際のガイドとして使用できます。

TCL IVR スクリプトを記述する上でより詳細なサポートが必要な場合は、Cisco Developer Support プログラムにご参加ください。このプログラムでは、あらゆる開発ニーズに対応する一元化されたリ

ソースをご利用いただけます。プログラムのメンバーは、提供されている製品とマニュアルのダウ

ンロード、バグ レポート、スクリプト例、よくある質問のすべてにアクセスして、開発作業を円滑に進めることができます。

Developer Support のエンジニアはそれぞれ、Cisco のインターフェイスとプロトコルの各分野の専門家です。このチームは、お客様および Cisco AVVID Partner Program やその他のエコシステムのメンバーに、開発プロジェクトで Cisco API を使用するためのサポートを専門にしています。プログラムでは、Cisco.com を利用して特典にアクセスできるだけでなく、簡単なプロセスで問題を開始、更新、およびトラッキングすることができます。サポート契約、料金、利用可能なオプションを定義

した Developer Support Agreement は、Cisco Developer Support Web サイト(http://www.cisco.com/warp/public/570/)から入手できます。

コール転送シナリオ

TCL IVR スクリプトを記述するときには、多くのコール転送シナリオを検討する必要があります。ここでは、1 ~ 3 つの Cisco IOS 音声ゲートウェイを含むシナリオをいくつか説明します。コール転送シナリオをわかりやすくするために、この後の各説明には次のダイアグラムが含まれていま

す。

• 最初のダイアグラムには、転送前の 2 者間呼が示されます。

• 2 つめのダイアグラムには、進行中のブラインド転送が示されます。

• 3 つめのダイアグラムには、進行中の打診転送が示されます。

• 4 つめのダイアグラムには、ブラインド転送または打診転送が正常に終了した後の最終呼が示されます。

具体的な要件に応じて、スクリプトを記述し、この後に説明するシナリオの 1 つ以上をサポートすることができます。図 1-7 の打診転送シナリオなど、場合によっては、スクリプトの 2 つの独立したインスタンスが同じゲートウェイで使用されることもあります。

その後に続く図で、XOR、XEE、XTO の各ラベルはコール転送で各コール レッグが果たす役割を示します。IN ラベルと OUT ラベルが、2 者間呼の間の着信コール レッグと発信コール レッグをトラッキングします。そのため、スクリプトはコール レッグ トポロジをトラッキングすることができ、イベントを受け取ったときに取るべきアクションを判断できます。

ここで説明するシナリオのすべてで、電話 A と電話 B の間の元の 2 者間呼はすでに確立されています。電話 A は転送元終端点(XOR)、電話 B は転送中継先終端点(XEE)、電話 C は転送先終端点(XTO)です。転送元の電話 A は、アナログ FXS 電話か、または Cisco CallManager Express(CME)モードで動作する Cisco IOS 音声ゲートウェイに登録された IP 電話です。

Page 40: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-12TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

1 つのゲートウェイとアナログ転送元のシナリオ

最初のコール転送シナリオでは、図 1-1 のように電話 A、電話 B、電話 C が同じゲートウェイに接続されています。この場合、すべての転送元、転送中継先、転送先の機能は、TCL IVR スクリプトの 1 つのインスタンスによって提供されます。

図 1-1 1 つのゲートウェイ:転送前のアナログ XOR

ブラインド転送を開始するには、アナログ電話のユーザはフックフラッシュを押し、転送の宛先を

入力してから電話を切ります。次にスクリプトが転送先に通常の電話をかけ、転送中継先コール

レッグと転送先コール レッグを接続してから、転送元コール レッグを切断します。図 1-2 を参照してください。

図 1-2 1 つのゲートウェイ:アナログ XOR のブラインド転送

打診転送を開始するには、アナログ電話のユーザはフックフラッシュを押し、転送の宛先の番号を

入力します。次にスクリプトが転送先に電話をかけ、電話 A が電話 C に打診できるようにします。ユーザが(電話を切って)転送をコミットすると、スクリプトは転送先(電話 C)に打診 ID を要求します。電話 C はローカルのアナログ電話であるため、ゲートウェイはローカルの打診 ID を生

9585

7

1

TCL IVR

A

B

C

9585

8

1

TCL IVR

XOR

XEE

XTO A

B

C

Page 41: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-13TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

成してこのスクリプト インスタンスに登録します。スクリプトは、この打診 ID を含む転送呼を電話 C 宛てに発信します。打診 ID はこのスクリプト インスタンスに登録されているので、転送中継先コール レッグが同じスクリプトに受け渡されます。図 1-3 を参照してください。

図 1-3 1 つのゲートウェイ:アナログ XOR の打診転送

スクリプトは、受け渡しイベントを受け取ると、転送中継先レッグと転送先レッグをブリッジし、

転送元を解放します。図 1-4 を参照してください。

(注) ゲートウェイが 1 つのこのシナリオでは、呼のフローを簡略化して、スクリプトが転送中継先コール レッグをスクリプト自身に受け渡さないようにすることもできます。ただし、受け渡しメカニズムは、この後で説明する複数ゲートウェイのシナリオでも有効なため、使用することをお勧めし

ます。

図 1-4 1 つのゲートウェイ:転送後のアナログ XOR

9585

9

1

TCL IVR

XOR

XEEa

XEEb

XTO A

B

C

9586

0

1

TCL IVR

B

C

Page 42: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-14TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

1 つのゲートウェイと Cisco CME IP 電話の転送元のシナリオ

この転送シナリオでは、電話 A、B、C のすべてが同じゲートウェイに接続されています。図 1-5 を参照してください。この場合、転送元、転送中継先、転送先の機能は、TCL IVR スクリプトの 1 つまたは 2 つのインスタンスによって提供されます。

図 1-5 1 つのゲートウェイ:転送前の Cisco CME IP 電話 XOR

ブラインド転送を開始するには、IP 電話のユーザは電話の転送ボタンを押して、転送の宛先を入力します。スクリプトが転送要求イベントを電話から受け取り、転送先に通常の電話をかけ、転送中

継先コール レッグと転送先コール レッグを接続します。次に、転送元コール レッグを切断します。図 1-6 を参照してください。

図 1-6 1 つのゲートウェイ:Cisco CME IP 電話 XOR のブラインド転送

打診転送を開始するには、IP 電話のユーザは電話の転送ボタンを押して、転送の宛先の番号を入力します。IP 電話は、別の回線を使用して転送先に電話をかけます。この呼は、ゲートウェイで実行されている TCL IVR スクリプトの 2 つめのインスタンスによって独立して処理されます。スクリプト インスタンスでは、この呼を打診呼として認識することなく、通常の 2 者間呼として扱います。

9586

1

1

TCL IVR

A

B

C

IP

9586

2

1

TCL IVR

XOR

XEE

A

B

C

IP

Page 43: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-15TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

転送先への打診後、ユーザは電話を切って転送をコミットし、2 つめのスクリプト インスタンスが打診要求を IP 電話 A から受信します。電話 C はローカルのアナログ電話であるため、ゲートウェイはローカルの打診 ID を生成してこのスクリプト インスタンスに登録します。スクリプトは、この打診 ID を含む打診応答を IP 電話 A に送信します。続いて、最初のスクリプト インスタンスがIP 電話 A から転送要求を受信します。この転送要求には 2 つめのスクリプト インスタンスから受信された打診 ID が含まれています。図 1-7 を参照してください。

図 1-7 1 つのゲートウェイ:Cisco CME IP 電話 XOR の打診転送

このスクリプト インスタンスは、打診 ID を含む転送呼を電話 C 宛てに発信します。打診 ID は 2つめのスクリプト インスタンスに登録されているので、転送中継先コール レッグが 2 つめのスクリプト インスタンスに受け渡されます。2 つめのスクリプト インスタンスは受け渡しイベントを受け取り、転送中継先レッグと転送先レッグをブリッジします。最初のスクリプト インスタンスが転送元コール レッグを解放します。図 1-8 を参照してください。

図 1-8 1 つのゲートウェイ:転送後の Cisco CME IP 電話 XOR

9586

3

1

2

1

XOR

XEE

XOR XTO

A

B

C

IP

9586

4

1

TCL IVR

B

C

Page 44: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-16TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

2 つのゲートウェイとアナログ転送元のシナリオ

2 つの Cisco IOS ゲートウェイとアナログ転送が含まれるコール転送シナリオは複数あります。そのうちのいくつかを次に説明します。

ゲートウェイ 1 に XOR と XTO があり、ゲートウェイ 2 に XEE がある場合

最初のシナリオでは、転送元(電話 A)と転送先(電話 C)の終端点がゲートウェイ 1 に接続されています。転送中継先の終端点(電話 B)はゲートウェイ 2 に接続されています。図 1-9 を参照してください。

図 1-9 2 つのゲートウェイ(XOR/XTO と XEE):転送前のアナログ XOR

ブラインド転送を開始するには、アナログ電話のユーザはフックフラッシュを押し、転送の宛先を

入力してから電話を切ります。ゲートウェイ 1 のスクリプトが SIP または H.450 転送要求を電話 Bに送信します。転送要求は、ゲートウェイ 2 の電話 A と電話 B 間の呼を処理するスクリプトが受信します。このスクリプトは、電話 C に電話をかけ、呼が正常に確立すると転送元コール レッグを切断します。図 1-10 を参照してください。

電話 C もゲートウェイ 1 に接続されていますが、電話 B から電話 C への着呼は TCL IVR スクリプトの別のインスタンスによって処理されます。このスクリプトは、コール転送の一部であることを

認識することなく、電話 C に通常の電話をかけるだけです。

9586

5

2

TCL IVR

B

1

H.323 SIP

TCL IVR

C

A

Page 45: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-17TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

図 1-10 2 つのゲートウェイ(XOR/XTO と XEE):アナログ XOR のブラインド転送

打診転送を開始するには、アナログ電話のユーザはフックフラッシュを押し、転送の宛先の番号を

入力します。次にスクリプトが転送先に電話をかけ、電話 A が電話 C に打診できるようにします。ユーザが(電話を切って)転送をコミットすると、スクリプトは転送先(電話 C)に打診 ID を要求します。電話 C はローカルのアナログ電話であるため、ゲートウェイはローカルの打診 ID を生成してこのスクリプト インスタンスに登録します。次に、スクリプトが打診 ID を含む SIP またはH.450 転送要求を電話 B に送信します。転送要求は、ゲートウェイ 2 の呼を処理するスクリプトが受信します。このスクリプトは、電話 C に電話をかけ、呼が正常に確立すると転送元コール レッグを切断します。図 1-11 を参照してください。

図 1-11 2 つのゲートウェイ(XOR/XTO と XEE):アナログ XOR の打診転送

確立要求には、転送要求で受信した打診 ID が含まれます。前述のブラインド転送の場合と異なり、電話 C に着信する確立要求は、電話 A と電話 B 間の元の呼、および電話 A と電話 C 間の打診呼を処理するものと同じスクリプトのインスタンスによって処理されます。このスクリプトは、着呼を

電話 C に接続し、電話 A を切断します。図 1-12 を参照してください。

9586

6

2

TCL IVR

XEE

B

1

H.323 SIP

H.323 SIP

1

XOR XORXEE

C

2

A

XTO

9586

7

2

TCL IVR TCL IVR

XEE

B

1

H.323 SIP

H.323 SIP

XOR XORXEEa

CXTO XEEb

A

XTO

Page 46: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-18TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

図 1-12 2 つのゲートウェイ(XOR/XTO と XEE):転送後のアナログ XOR

ゲートウェイ 1 に XOR と XEE があり、ゲートウェイ 2 に XTO がある場合

このシナリオでは、転送元(電話 A)と転送中継先(電話 B)がゲートウェイ 1 に接続されています。転送先(電話 C)はゲートウェイ 2 に接続されています。図 1-13 を参照してください。

図 1-13 2 つのゲートウェイ(XOR/XEE と XTO):転送前のアナログ XOR

ブラインド転送を開始するには、アナログ電話のユーザはフックフラッシュを押し、転送の宛先を

入力してから電話を切ります。スクリプトは、SIP または H.323 確立要求をゲートウェイ 2 に送信して電話 C に電話をかけます。ゲートウェイ 2 でこの確立要求を処理するスクリプトは、この呼がコール転送の一部であることを認識することなく、電話 C に通常の電話をかけます。呼が正常に確立したら、ゲートウェイ 1 のスクリプトが電話 B と電話 C をブリッジし、電話 A からの呼を解放します。図 1-14 を参照してください。

9586

8

2

TCL IVR

B

1

H.323 SIP

TCL IVR

C

9586

9

2

C

1

H.323 SIP

TCL IVR

B

A

Page 47: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-19TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

図 1-14 2 つのゲートウェイ(XOR/XEE と XTO):アナログ XOR のブラインド転送

打診転送を開始するには、アナログ電話のユーザはフックフラッシュを押し、転送の宛先の番号を

入力します。次に、スクリプトが転送先に電話をかけ、電話 A が電話 C に打診できるようにします。ユーザが(電話を切って)転送をコミットすると、スクリプトは転送先(電話 C)に打診 ID を要求します。

H.450 転送の場合、ゲートウェイ 1 は H.450 打診要求メッセージを電話 C に送信します。この要求は、ゲートウェイ 2 の電話 A と電話 C 間の呼を処理するスクリプト インスタンスが受信します。このスクリプトは、打診 ID を含む打診応答を送信します。図 1-15 を参照してください。

SIP の場合、打診要求は電話 C には送信されません。代わりに、打診 ID がゲートウェイ 1 によってローカルに生成されます。どちらの場合も、ゲートウェイ 1 のスクリプトは打診応答を受信すると、この打診 ID を含む SIP または H.450 確立要求をゲートウェイ 2 に送信します。確立要求は、ゲートウェイ 2 に到着後、電話 A と電話 C 間の打診呼を処理するものと同じスクリプト インスタンスに配信されます。

図 1-15 2 つのゲートウェイ(XOR/XEE と XTO):アナログ XOR の打診転送95

870

2

TCL IVR

C

1

H.323 SIP

TCL IVR

XOR

XEE

XTO

B

A

9587

1

2

TCL IVR

XTO

C

1

H.323 SIP

H.323 SIP

XOR

B

A

XEE

TCL IVR

XTOa

XTOb

XOR

XEE

Page 48: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-20TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

このスクリプトは、着呼を電話 C に接続し、電話 A からの打診呼を切断します。図 1-16 を参照してください。

図 1-16 2 つのゲートウェイ(XOR/XEE と XTO):転送後のアナログ XOR

ゲートウェイ 1 に XOR があり、ゲートウェイ 2 に XEE と XTO がある場合

この 3 つめのコール転送シナリオには、図 1-17 のように 2 つのゲートウェイが含まれます。転送元(電話 A)はゲートウェイ 1 に接続し、転送中継先(電話 B)と転送先(電話 C)はゲートウェイ 2に接続しています。

図 1-17 2 つのゲートウェイ(XOR と XEE/XTO):転送前のアナログ XOR

ブラインド転送を開始するには、アナログ電話のユーザはフックフラッシュを押し、転送の宛先を

入力してから電話を切ります。ゲートウェイ 1 のスクリプトが SIP または H.450 転送要求を電話 Bに送信します。転送要求は、ゲートウェイ 2 の電話 A と電話 B 間の呼を処理するスクリプトが受信します。このスクリプトは、電話 C に電話をかけます。呼が正常に確立すると、このスクリプトは電話 B を電話 C に接続し、電話 A からの呼を切断します。図 1-18 を参照してください。

9587

2

2

TCL IVR

C

1

H.323 SIP

TCL IVR

B

9587

3

2

TCL IVR

B

C

1

H.323 SIP

TCL IVR

A

Page 49: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-21TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

図 1-18 2 つのゲートウェイ(XOR と XEE;/XTO):アナログ XOR のブラインド転送

打診転送を開始するには、アナログ電話のユーザはフックフラッシュを押し、転送の宛先の番号を

入力します。次に、スクリプトが転送先に電話をかけ、電話 A が電話 C に打診できるようにします。電話 A からの着呼は、ゲートウェイ 2 の、電話 A と電話 B 間の呼を処理するスクリプト インスタンスとは別のスクリプト インスタンスによって処理されます。図 1-19 を参照してください。

ユーザが(電話を切って)転送をコミットすると、ゲートウェイ 1 のスクリプトは転送先(電話 C)に打診 ID を要求します。H.450 転送の場合、ゲートウェイ 1 は H.450 打診要求メッセージを電話 Cに送信します。要求は、ゲートウェイ 2 の電話 A と電話 C 間の呼を処理するスクリプト インスタンスが受信します。このスクリプトは、打診 ID を含む打診応答を送信します。

SIP の場合、打診要求は電話 C には送信されません。代わりに、打診 ID がゲートウェイ 1 によってローカルに生成されます。どちらの場合も、ゲートウェイ 1 のスクリプトは、打診応答を受信すると、この打診 ID を含む SIP または H.450 転送要求をゲートウェイ 2 に送信します。

図 1-19 2 つのゲートウェイ(XOR と XEE/XTO):アナログ XOR の打診転送

9587

4

2

TCL IVR

XEE B

XTO C

1

H.323 SIP

TCL IVR

XOR XORXEE

A

9587

5 2

1

2

A

1

H.323 SIP

H.323 SIP

XOR XORXTO

XEE

XOR XTO

C

B

TCL IVR

XEE

XTO

XOR

Page 50: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-22TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

転送要求は、ゲートウェイ 2 の電話 A と電話 B 間の呼を処理するスクリプト インスタンスが受信します。このスクリプトは、電話 C に電話をかけます。確立要求には、転送要求で受信した打診 IDが含まれます。確立要求に含まれる打診 ID は、打診応答でゲートウェイ 1 に送信された打診 ID と一致するため、呼の確立は、着呼を 2 つめのスクリプト インスタンスに受け渡すことで完了します。受け渡し後、電話 A から電話 B への元の呼は、ゲートウェイ 2 の最初のスクリプト インスタンスによって切断され、電話 A からの打診呼は、2 つめのスクリプト インスタンスによって切断されます。図 1-20 を参照してください。

図 1-20 2 つのゲートウェイ(XOR と XEE/XTO):転送後のアナログ XOR

2 つのゲートウェイと Cisco CME IP 電話の転送元のシナリオ

2 つの Cisco IOS ゲートウェイと Cisco CallManager Express(CME)IP 電話の転送元が含まれるコール転送シナリオは複数あります。そのうちのいくつかを次に説明します。

ゲートウェイ 1 に XOR と XTO があり、ゲートウェイ 2 に XEE がある場合

最初のシナリオを、図 1-21 に示します。ここでは、転送元(電話 A)と転送先(電話 C)の終端点がゲートウェイ 1 に接続されています。転送中継先の終端点(電話 B)はゲートウェイ 2 に接続されています。

図 1-21 2 つのゲートウェイ(XOR/XTO と XEE):転送前の Cisco CME IP 電話 XOR

9587

6

2

TCL IVR

1

H.323 SIP

XEE

XTO

C

B

9587

7

2

TCL IVR

B

1

H.323 SIP

TCL IVR

C

A

IP

Page 51: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-23TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

ブラインド転送を開始するには、IP 電話のユーザは電話の転送ボタンを押して、転送の宛先を入力します。スクリプトが電話から転送要求イベントを受け取り、SIP または H.450 転送要求を電話 Bに送信します。転送要求は、ゲートウェイ 2 の電話 A と電話 B 間の呼を処理するスクリプトが受信します。このスクリプトは、電話 C に電話をかけ、呼が正常に確立すると転送元コール レッグを切断します。電話 C もゲートウェイ 1 に接続されていますが、電話 B から電話 C への着呼は TCLIVR スクリプトの別のインスタンスによって処理されます。このスクリプトは、コール転送の一部であることを認識することなく、電話 C に通常の電話をかけるだけです。図 1-22 を参照してください。

図 1-22 2 つのゲートウェイ(XOR/XTO と XEE):Cisco CME IP 電話 XOR のブラインド転送

打診転送を開始するには、IP 電話のユーザは電話の転送ボタンを押して、転送の宛先の番号を入力します。IP 電話は、別の回線を使用して転送先に電話をかけます。この呼は、ゲートウェイ 1 で実行されている TCL IVR スクリプトの 2 つめのインスタンスによって独立して処理されます。スクリプト インスタンスでは、この呼は打診呼として認識されることなく、通常の 2 者間呼として扱われます。図 1-23 を参照してください。

転送先への打診後、ユーザは電話を切って転送をコミットし、2 つめのスクリプト インスタンスが打診要求を IP 電話 A から受信します。電話 C はローカルのアナログ電話であるため、ゲートウェイはローカルの打診 ID を生成してこのスクリプト インスタンスに登録します。スクリプトは、この打診 ID を含む打診応答を IP 電話 A に送信します。

続いて、最初のスクリプト インスタンスが IP 電話 A から転送要求を受信します。この転送要求には 2 つめのスクリプトから受信した打診 ID が含まれます。このスクリプトは打診 ID を含む SIP または H.450 転送要求を電話 B に送信します。転送要求は、ゲートウェイ 2 の電話 A と電話 B 間の呼を処理するスクリプトが受信します。このスクリプトは、電話 C に電話をかけ、呼が正常に確立すると転送元コール レッグを切断します。確立要求には、転送要求で受信した打診 ID が含まれます。

9587

8

2

TCL IVR

XEE

B

1

H.323 SIP

H.323 SIP

1

XOR XORXEE

C

2

A

XTO

IP

Page 52: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-24TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

図 1-23 2 つのゲートウェイ(XOR/XTO と XEE):Cisco CME IP 電話 XOR の打診転送

着信した確立要求は、電話 A と電話 C 間の打診呼を処理するゲートウェイ 1 のスクリプト インスタンスに配信されます。このスクリプトは着呼を電話 C に接続し、電話 A からの呼を解放します。図 1-24 を参照してください。

図 1-24 2 つのゲートウェイ(XOR/XTO と XEE):転送後の Cisco CME IP 電話 XOR

9587

9

2

TCL IVR

XEE

B

1

H.323 SIP

H.323 SIP

1XOR XORXEE

C

2

XTOXOR XEE

A

XTO

IP

9588

0

2

TCL IVR

B

1

H.323 SIP

TCL IVR

C

Page 53: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-25TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

ゲートウェイ 1 に XOR と XEE があり、ゲートウェイ 2 に XTO がある場合

2 つめのシナリオには、2 つのゲートウェイと IP 電話の転送元が含まれます。転送元(電話 A)と転送中継先(電話 B)はゲートウェイ 1 に接続されています。転送先(電話 C)はゲートウェイ 2に接続されています。図 1-25 を参照してください。

図 1-25 2 つのゲートウェイ(XOR/XEE と XTO):転送前の Cisco CME IP 電話 XOR

ブラインド転送を開始するには、IP 電話のユーザは電話の転送ボタンを押して、転送の宛先を入力します。スクリプトは、電話 A からの転送要求を受信し、SIP または H.323 確立要求をゲートウェイ 2 に送信して電話 C に電話をかけます。ゲートウェイ 2 でこの確立要求を処理するスクリプトは、この呼がコール転送の一部であることを認識することなく、電話 C に通常の電話をかけます。呼が正常に確立したら、ゲートウェイ 1 のスクリプトが電話 B と電話 C をブリッジし、電話 A からの呼を解放します。図 1-26 を参照してください。

図 1-26 2 つのゲートウェイ(XOR/XEE と XTO):Cisco CME IP 電話 XOR のブラインド転送

9588

1

2

C

1

H.323 SIP

TCL IVR

B

A

IP

9588

2

2

TCL IVR

C

1

H.323 SIP

TCL IVR

XOR

XEE

XTO

B

A

IP

Page 54: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-26TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

打診転送を開始するには、IP 電話のユーザは電話の転送ボタンを押して、転送の宛先の番号を入力します。IP 電話は、別の回線を使用して転送先に電話をかけます。この呼は、ゲートウェイ 1 で実行されている TCL IVR スクリプトの 2 つめのインスタンスによって独立して処理されます。スクリプト インスタンスでは、この呼は通常の 2 者間呼として扱われ、打診呼として認識されることはありません。

転送先への打診後、ユーザは電話を切って転送をコミットし、2 つめのスクリプト インスタンスが打診要求を IP 電話 A から受信します。H.450 転送の場合、ゲートウェイ 1 は、H.450 打診要求メッセージを電話 C に送信して、この打診要求を電話 C にリレーします。要求は、ゲートウェイ 2 の電話 A と電話 C 間の呼を処理するスクリプト インスタンスが受信します。このスクリプトは、打診ID を含む打診応答を送信します。図 1-27 を参照してください。

SIP の場合、打診要求は電話 C にリレーされません。代わりに、打診 ID がゲートウェイ 1 によってローカルに生成されます。どちらの場合も、ゲートウェイ 1 のスクリプトは打診応答を受信すると、それを IP 電話 A にリレーします。さらに、Cisco IOS アプリケーション フレームワークの内部打診 ID 管理体系により、ゲートウェイ 2 から受信した打診 ID は、このスクリプト インスタンス(2 つめのインスタンス)に登録されます。

(注) ゲートウェイ 2 のスクリプト インスタンスは、打診応答をゲートウェイ 1 に送信したので、転送中継先から着呼が来るものと期待します。転送は、受け渡しによりゲートウェイ 1 でローカルに処理されたため、ゲートウェイ 2 がこの着呼を受信することはありません。最終的には Cisco IOS のガード タイマーが時間切れになり、スクリプトは引き続き電話 A と電話 C 間の呼を通常の 2 者間呼として処理します。

続いて、最初のスクリプト インスタンスが IP 電話 A から転送要求を受信します。この転送要求には 2 つめのスクリプトから受信した打診 ID が含まれています。このスクリプト インスタンスは、電話 C に打診 ID を含む発呼を行います。

図 1-27 2 つのゲートウェイ(XOR/XEE と XTO):Cisco CME IP 電話 XOR の打診転送

打診 ID が 2 つめのスクリプト インスタンスに登録されているので、転送中継先コール レッグが 2つめのスクリプト インスタンスに受け渡されます。このスクリプト インスタンスは受け渡しイベントを受け取り、転送中継先レッグと転送先レッグをブリッジします。最初のスクリプト インスタンスが転送元コール レッグを解放します。図 1-28 を参照してください。

9588

3

1 2

2

1

XOR XTOXEE

XEE

XOR XTO

A

B

C

TCL IVR XOR

XTO

IP

Page 55: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-27TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

図 1-28 2 つのゲートウェイ(XOR/XEE と XTO):転送後の Cisco CME IP 電話 XOR

ゲートウェイ 1 に XOR があり、ゲートウェイ 2 に XEE と XTO がある場合

3 つめのコール転送シナリオには、図 1-29 のように 2 つのゲートウェイと IP 電話の転送元が含まれます。転送元(電話 A)はゲートウェイ 1 に接続し、転送中継先(電話 B)と転送先(電話 C)はゲートウェイ 2 に接続しています。

図 1-29 2 つのゲートウェイ(XOR と XEE/XTO):転送前の Cisco CME IP 電話 XOR

ブラインド転送を開始するには、IP 電話のユーザは電話の転送ボタンを押して、転送の宛先を入力します。スクリプトが電話から転送要求イベントを受け取り、SIP または H.450 転送要求を電話 Bに送信します。転送要求は、ゲートウェイ 2 の電話 A と電話 B 間の呼を処理するスクリプトが受信します。このスクリプトは、電話 C に電話をかけます。呼が正常に確立すると、ゲートウェイ 2のスクリプトが電話 B と電話 C をブリッジし、電話 A からの呼を解放します。図 1-30 を参照してください。

9588

4

2

TCL IVR

C

1

H.323 SIP

TCL IVR

B

9588

5

2

TCL IVR

B

C

1

H.323 SIP

TCL IVR

A

IP

Page 56: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-28TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

図 1-30 2 つのゲートウェイ(XOR & XEE/XTO):Cisco CME IP 電話 XOR のブラインド転送

打診転送を開始するには、IP 電話のユーザは電話の転送ボタンを押して、転送の宛先の番号を入力します。IP 電話は、別の回線を使用して転送先に電話をかけます。呼は、ゲートウェイ 1 で実行されている TCL IVR スクリプトの 2 つめのインスタンスによって独立して処理されます。このスクリプト インスタンスでは、この呼は通常の 2 者間呼として扱われ、打診呼として認識されることはありません。

転送先への打診後、ユーザは電話を切って転送をコミットし、2 つめのスクリプト インスタンスが打診要求を IP 電話 A から受信します。H.450 転送の場合、ゲートウェイ 1 は、H.450 打診要求メッセージを電話 C に送信して、この打診要求を電話 C にリレーします。要求は、ゲートウェイ 2 の電話 A と電話 C 間の呼を処理するスクリプト インスタンスが受信します。このスクリプトは、打診ID を含む打診応答を送信します。SIP の場合、打診要求は電話 C にリレーされません。代わりに、打診 ID がゲートウェイ 1 によってローカルに生成されます。どちらの場合も、ゲートウェイ 1 のスクリプトは打診応答を受信すると、それを IP 電話 A にリレーします。さらに、Cisco IOS アプリケーション フレームワークの内部打診 ID 管理体系により、ゲートウェイ 2 から受信した打診 IDは、このスクリプト インスタンス(2 つめのインスタンス)に登録されます。

続いて、ゲートウェイ 1 の最初のスクリプト インスタンスが IP 電話 A から転送要求を受信します。この転送要求にはゲートウェイ 1 の 2 つめのスクリプト インスタンスから受信した打診 ID が含まれています。次に、スクリプト インスタンスが打診 ID を含む SIP または H.450 転送要求を電話 Bに送信します。転送要求は、ゲートウェイ 2 の電話 A と電話 B 間の呼を処理するスクリプト インスタンスが受信します。このスクリプトは電話 C に電話をかけます。確立要求に含まれる打診 IDは、打診応答でゲートウェイ 1 に送信された打診 ID と一致するため、呼の確立は、着呼を 2 つめのスクリプト インスタンスに受け渡すことで完了します。図 1-31 を参照してください。

9588

6

2

TCL IVR

XEE

B

XTO C

1

H.323 SIP

TCL IVR

XOR XORXEE

A

IP

Page 57: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-29TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

図 1-31 2 つのゲートウェイ(XOR と XEE/XTO):Cisco CME IP 電話 XOR の打診転送

受け渡し後、電話 A から電話 B への元の呼は、ゲートウェイ 2 の最初のスクリプト インスタンスによって切断され、電話 A からの打診呼は、2 つめのスクリプト インスタンスによって切断されます。図 1-32 を参照してください。

図 1-32 2 つのゲートウェイ(XOR & XEE/XTO):転送後の Cisco CME IP 電話 XOR

9588

7

2

1

2

A

1

H.323 SIP

H.323 SIP

XOR XORXTO

XEE

XOR XTO

C

B

1

2

XOR XORXTO

XOR XTO

IP

9588

8

2 1

H.323 SIP

TCL IVR

XEE

B

A

XTO

Page 58: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-30TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

3 つのゲートウェイとアナログ転送元のシナリオ

図 1-33 は、コール転送に 3 つのゲートウェイが含まれるシナリオを示しています。コール転送の各参加者は、別々の Cisco IOS ゲートウェイに接続しています。

図 1-33 3 つのゲートウェイ:転送前のアナログ XOR

ブラインド転送を開始するには、アナログ電話のユーザはフックフラッシュを押し、転送の宛先を

入力してから電話を切ります。ゲートウェイ 1 のスクリプトが SIP または H.450 転送要求を電話 Bに送信します。転送要求は、ゲートウェイ 2 の呼を処理するスクリプトが受信します。このスクリプトは、通常の電話を電話 C にかけます。ゲートウェイ 3 で着呼の確立を受信したスクリプトは、この呼を通常の 2 者間呼として扱います。確立が完了したら、ゲートウェイ 2 のスクリプトは転送応答を電話 A に送信します。ゲートウェイ 1 のスクリプトは転送応答を受信し、電話 A からの呼を解放します。図 1-34 を参照してください。

9588

9

2

B

1

TCL IVR

A

3

H.323

SIP

C

Page 59: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-31TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

図 1-34 3 つのゲートウェイ:アナログ XOR のブラインド転送

打診転送を開始するには、アナログ電話のユーザはフックフラッシュを押し、転送の宛先の番号を

入力します。次にスクリプトが転送先に電話をかけ、電話 A が電話 C に打診できるようにします。ユーザが(電話を切って)転送をコミットすると、スクリプトは転送先(電話 C)に打診 ID を要求します。H.450 コール転送の場合、打診要求プロトコル メッセージが電話 C に送信されます。この要求は、ゲートウェイ 3 の電話 A と電話 C 間の呼を処理するスクリプト インスタンスが受信します。このスクリプトは、打診 ID を含む打診応答を送信します。図 1-35 を参照してください。

SIP の場合、打診要求は電話 C には送信されません。代わりに、打診 ID がゲートウェイ 1 によってローカルに生成されます。どちらの場合も、ゲートウェイ 1 のスクリプトは、打診応答を受信すると、打診 ID を含む SIP または H.450 転送要求を電話 B に送信します。

この転送要求は、ゲートウェイ 2 の電話 A と電話 B 間の呼を処理するスクリプトが受信します。このスクリプトは電話 C に電話をかけます。確立要求には、電話 A からの転送要求で受信した打診ID が含まれています。電話 B からの着信確立要求がゲートウェイ 2 に到着すると、電話 A と電話C 間の呼を処理するスクリプト インスタンスに配信されます。

9589

0

2

XOR XTO

XEE

B

1

TCL IVR

XOR XEE

A

3

H.323

SIP

C

H.323

SIP

Page 60: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-32TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

図 1-35 3 つのゲートウェイ:アナログ XOR の打診転送

このスクリプトは、着呼を電話 C に接続し、電話 A からの呼を切断します。図 1-36 を参照してください。

図 1-36 3 つのゲートウェイ:転送後のアナログ XOR

9589

1

2

XOR XTO

XEE

B

1

TCL IVR

XOR

XEE

XTO XOR A

3

H.323

SIP

C

XEE

XTO

H.323

SIP

9589

2

2

B

1 3

H.323

SIP

C

Page 61: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-33TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

3 つのゲートウェイと Cisco CME IP 電話の転送元のシナリオ

図 1-37 は、コール転送に 3 つのゲートウェイが含まれるシナリオを示しています。コール転送の各参加者は、別々の Cisco IOS ゲートウェイに接続しています。

図 1-37 3 つのゲートウェイ:転送前の Cisco CME IP 電話 XOR

ブラインド転送を開始するには、IP 電話のユーザは電話の転送ボタンを押して、転送の宛先を入力します。スクリプトが電話から転送要求イベントを受け取り、SIP または H.450 転送要求を電話 Bに送信します。転送要求は、ゲートウェイ 2 の呼を処理するスクリプトが受信します。このスクリプトは、通常の電話を電話 C にかけます。ゲートウェイ 3 で着呼の確立を受信したスクリプトは、この呼を通常の 2 者間呼として扱います。確立が完了したら、ゲートウェイ 2 のスクリプトは転送応答を電話 A に送信します。ゲートウェイ 1 のスクリプトは転送応答を受信し、電話 A からの呼を解放します。図 1-38 を参照してください。

9589

3

2

B

1

A

3

H.323

SIP

CIP

Page 62: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-34TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

図 1-38 3 つのゲートウェイ:Cisco CME IP 電話 XOR のブラインド転送

打診転送を開始するには、IP 電話のユーザは電話の転送ボタンを押して、転送の宛先の番号を入力します。IP 電話は、別の回線を使用して転送先に電話をかけます。この呼は、ゲートウェイ 1 で実行されている TCL IVR スクリプトの 2 つめのインスタンスによって独立して処理されます。スクリプト インスタンスでは、この呼は通常の 2 者間呼として扱われ、打診呼として認識されることはありません。図 1-39 を参照してください。

転送先への打診後、ユーザは電話を切って転送をコミットし、2 つめのスクリプト インスタンスが打診要求を IP 電話 A から受信します。H.450 転送の場合、ゲートウェイ 1 は、H.450 打診要求メッセージを電話 C に送信して、この打診要求を電話 C にリレーします。要求は、ゲートウェイ 3 の電話 A と電話 C 間の呼を処理するスクリプト インスタンスが受信します。このスクリプトは、打診ID を含む打診応答を送信します。

SIP の場合、打診要求は電話 C にリレーされません。代わりに、打診 ID がゲートウェイ 1 によってローカルに生成されます。どちらの場合も、ゲートウェイ 1 のスクリプトは打診応答を受信すると、それを IP 電話 A にリレーします。さらに、Cisco IOS アプリケーション フレームワークの内部打診 ID 管理体系により、ゲートウェイ 2 から受信した打診 ID は、このスクリプト インスタンス(2 つめのインスタンス)に登録されます。

続いて、ゲートウェイ 1 の最初のスクリプト インスタンスが IP 電話 A から転送要求を受信します。この転送要求には 2 つめのスクリプトから受信した打診 ID が含まれています。このスクリプト インスタンスは、この打診 ID を含む SIP または H.450 転送要求を電話 B に送信します。

この転送要求は、ゲートウェイ 2 の電話 A と電話 B 間の呼を処理するスクリプト インスタンスが受信します。このスクリプトは電話 C に電話をかけます。確立要求には、電話 A からの転送要求で受信した打診 ID が含まれます。電話 B からの着信確立要求がゲートウェイ 3 に到着すると、電話 A と電話 C 間の呼を処理するスクリプト インスタンスに配信されます。

9589

4

2

XOR XTO

XEE

B

1

XOR XEE

A

3

H.323

SIP

C

H.323

SIPIP

Page 63: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-35TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

図 1-39 3 つのゲートウェイ:Cisco CME IP 電話 XOR の打診転送

このスクリプトは、着呼を電話 C に接続し、電話 A からの呼を切断します。図 1-40 を参照してください。

図 1-40 3 つのゲートウェイ:転送後の Cisco CME IP 電話 XOR

9589

5

2

XOR XTO

XEE

B

1

1

XEEXOR

XOR

A 1

XEEXOR

3

H.323

SIP

C

XEE

XTO

H.323

SIP

IP

9589

6

2

B

1 3

C

H.323

SIP

Page 64: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-36TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

コール転送プロトコルのサポート

ここでは、Cisco IOS 音声ゲートウェイで TCL IVR スクリプトを使用する場合にサポートされるコール転送プロトコルの概要について説明します。このようなプロトコルを使用するさまざまなシ

ナリオについては、該当するセクションを参照してください。

アナログ フックフラッシュと T1 CAS Release Link Trunk(RLT)転送

転送元サポート

スクリプトから T1 CAS またはアナログ FXO の終端点に向けてフックフラッシュ転送を開始することはできません。代わりに、スクリプトは転送先宛てに電話をかけ、呼が確立したら、転送中継

先コール レッグと転送先コール レッグを接続します。

転送中継先サポート

TCL IVR スクリプトは、ゲートウェイに接続している T1 CAS またはアナログ FXS の終端点からフックフラッシュ転送要求を受信できます。加入者は、フックフラッシュまたは DTMF ディジットを使用して、ブラインド転送または打診呼転送を開始できます。

スクリプトは、フックフラッシュ転送トリガーを受信すると、ダイヤル トーンを発し、DTMF によって転送の宛先を収集できます。

スクリプトは、転送コミット要求を受信すると、次のいずれかを実行できます。

• 転送要求を転送中継先コール レッグに伝達してインターワーキングする。これは、転送中継先コール レッグがこのマニュアルで説明する転送プロトコルのいずれかをサポートしている場合に実行できます。

• 転送先宛てに電話をかけ、呼が確立したら転送中継先と転送先を接続する。

転送先サポート

TCL IVR スクリプトは、アナログ終端点から打診 ID を含む打診要求または確立結果を受信できません。

ISDN コール転送

転送元サポート

TCL IVR スクリプトは、転送中継先と転送先の両方が、ゲートウェイに接続する PBX の同じ TBCTグループに属している場合、ISDN Two B-Channel Transfer(TBCT)要求を転送中継先コール レッグに送信できます。

スクリプトが TBCT 要求を開始すると、Cisco IOS ソフトウェアは転送先に電話をかけます。転送先が応答すると、転送中継先と転送先が PBX に設定された同じ TBCT グループに属する場合は、Cisco IOS ソフトウェアが TBCT を開始します。転送中継先と転送先が同じ TBCT グループに属していない場合は、転送中継先コール レッグと転送先コール レッグはスクリプトによってブリッジされます。呼が PBX に正常に転送された場合、転送中継先コール レッグと転送先コール レッグは解放され、スクリプトは呼を終了できます。転送しようとして失敗した場合、スクリプトは転送元

コール レッグと転送中継先コール レッグに再接続することもできます。

スクリプトは、打診転送を開始するために次のことを実行できます。

• 転送先デバイスに打診呼を送り、呼が確立したら転送元コール レッグと転送先コール レッグを接続する。

Page 65: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-37TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• 転送中継先と転送先が同じ TBCT グループに属する場合、転送がコミットされるとスクリプトは次のことを実行できます。

- ローカルの TBCT 打診 ID を要求する。

- TBCT 要求を転送中継先コール レッグに送信する。転送要求には打診 ID が含まれます。

- 呼が PBX に正常に転送された場合、転送中継先コール レッグと転送先コール レッグは解放され、スクリプトは呼を終了できます。

- 転送しようとして失敗した場合、スクリプトは転送元コール レッグと転送中継先コールレッグに再接続することもできます。

• 転送中継先と転送先が同じ TBCT グループに属していない場合は、転送がコミットされると、スクリプトによって転送中継先コール レッグと転送先コール レッグをブリッジできます。

転送中継先サポート

TCL IVR スクリプトは、ネットワーク側の ISDN コール転送プロトコルはサポートしていないため、ISDN デバイスからコール転送要求を受信することはできません。

(注) ISDN 加入者が転送をトリガーする DTMF 入力を使用してブラインド転送を開始できるようにすることは可能です。このメカニズムは、前述したアナログ FXS および T1 CAS の転送メカニズムに似ていますが、このマニュアルでは詳細な説明を省きます。

転送先サポート

TCL IVR スクリプトは、ISDN 終端点から打診 ID を含む打診要求または確立結果を受信できません。

SIP コール転送

転送元サポート

TCL IVR スクリプトは、REFER 転送要求をリモートの転送中継先コール レッグに送信できます。また、スクリプトは、打診転送を実行するときに打診呼を開始することもできます。

スクリプトは、REFER メッセージをリモートの転送中継先に送信してブラインド転送を開始できます。転送が成功すると、転送中継先は転送先に電話をかけます。呼はこのスクリプトの関与なし

に確立し、スクリプトは呼を終了できます。転送しようとして失敗した場合、スクリプトは転送元

コール レッグと転送中継先コール レッグに再接続することもできます。

スクリプトは、打診転送を開始するために次のことを実行できます。

• 転送先デバイスに打診呼を送り、呼が確立したら転送元コール レッグおよび転送先コール レッグを接続する。

• 転送がコミットされたら、打診 ID を要求する。

(注) H.450 転送とは異なり、転送元と転送先間の打診呼を処理するスクリプトが、転送元から打診要求を受信することはありません。代わりに、打診 ID は転送元と転送中継先間の元の呼を処理するスクリプトによってローカルに生成されます。

• 転送中継先コール レッグに REFER を送信する。これには打診 ID が含まれます。転送中継先デバイスは、転送先に送信する INVITE メッセージに打診 ID を含めます。

Page 66: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-38TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• 転送が成功すると、転送中継先が転送先に電話をかけます。呼はこのスクリプトの関与なしに

確立し、スクリプトは呼を終了できます。

• 転送しようとして失敗した場合、スクリプトは転送元コール レッグと転送中継先コール レッグに再接続することもできます。

転送中継先サポート

TCL IVR スクリプトはリモートの SIP 転送元から SIP REFER または BYE/ALSO 転送要求を受信できます。転送要求を受信すると、スクリプトは次のいずれかを実行できます。

• 転送要求を転送中継先コール レッグに伝達してインターワーキングする。これは、転送中継先コール レッグがこのマニュアルで説明する転送プロトコルのいずれかをサポートしている場合に実行できます。

(注) 現在、SIP 転送要求と H.450 転送要求のインターワーキングはできません。

• 転送先宛てに電話をかけ、呼が確立したら転送中継先と転送先を接続する。

転送先サポート

ゲートウェイがリモートの転送中継先から打診 ID を含む INVITE 要求を受信すると、その要求は転送先への打診呼を処理するスクリプト インスタンスに配信されます。この後、このスクリプトは転送中継先コール レッグと転送先コール レッグを接続し、転送元コール レッグを切断できます。

(注) H.450 転送とは異なり、転送元と転送先間の打診呼を処理するスクリプトが、転送元から打診要求を受信することはありません。代わりに、打診 ID は転送元と転送中継先間の元の呼を処理するスクリプトによってローカルに生成されます。

H.450 コール転送

転送元サポート

TCL IVR スクリプトは、H450.2 転送要求を転送中継先コール レッグに送信できます。また、スクリプトは、打診転送を実行するときに打診呼を開始することもできます。

スクリプトは、H450.2 転送要求をリモートの転送中継先に送信してブラインド転送を開始できます。転送が成功すると、転送中継先が転送先に電話をかけます。呼はこのスクリプトの関与なしに

確立し、スクリプトは呼を終了できます。転送しようとして失敗した場合、スクリプトは転送元

コール レッグと転送中継先コール レッグに再接続することもできます。

スクリプトは、打診転送を開始するために次のことを実行できます。

• 転送先デバイスに打診呼を送り、呼が確立したら転送元コール レッグおよび転送先コール レッグを接続する。

• 転送がコミットされたら、転送先からの打診 ID を要求する。

• H450.2 転送要求を転送中継先コール レッグに送信する。これには、転送先デバイスからの打診応答で受信した打診 ID が含まれます。転送中継先は、転送先に送信する SETUP 要求にこの打診 ID を含めます。

• 転送が成功すると、転送中継先が転送先に電話をかけ、このスクリプトが関与することなく呼

が確立します。スクリプトは呼を終了できます。

• 転送しようとして失敗した場合、スクリプトは転送元コール レッグと転送中継先コール レッグに再接続することもできます。

Page 67: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要TCL IVR コール転送の概要

1-39TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

転送中継先サポート

TCL IVR スクリプトは、H450.2 転送要求をリモートの H.323 転送元から受信できます。転送要求を受信すると、スクリプトは次のいずれかを実行できます。

• 転送要求を転送中継先コール レッグに伝達してインターワーキングする。これは、転送中継先コール レッグがこのマニュアルで説明する転送プロトコルのいずれかをサポートしている場合に実行できます。

(注) SIP 転送要求と H.450 転送要求のインターワーキングはできません。

• 転送先宛てに電話をかけ、呼が確立したら転送中継先と転送先を接続する。

転送先サポート

TCL IVR スクリプトは、リモートの H450 転送元から打診要求を受信し、打診 ID と転送の宛先を含む打診応答を送信できます。この転送の宛先は、転送中継先が転送先に電話をかけるときに使用

する必要がある番号です。

ゲートウェイがリモートの転送中継先から H450.2 打診 ID を含む SETUP 要求を受信すると、その要求は転送先への打診呼を処理するスクリプト インスタンスに配信されます。この後、このスクリプトは転送中継先コール レッグと転送先コール レッグを接続し、転送元コール レッグを切断できます。

Cisco CallManager Express コール転送

転送元サポート

TCL IVR スクリプトは、コール転送要求を Cisco CallManager Express(CME)モードで動作するCisco IOS ゲートウェイに登録されたローカルの IP 電話に送信することはできません。代わりに、スクリプトは転送先宛てに電話をかけ、呼が確立したら、転送中継先コール レッグと転送先コールレッグを接続します。

転送中継先サポート

TCL IVR スクリプトは、コール転送要求を Cisco CME モードで動作する Cisco IOS ゲートウェイに登録されたローカルの IP 電話から受信できます。転送要求を受信すると、スクリプトは次のいずれかを実行できます。

• 転送要求を転送中継先コール レッグに伝達してインターワーキングする。これは、転送中継先コール レッグがこのマニュアルで説明する転送プロトコルのいずれかをサポートしている場合に実行できます。

• 転送先宛てに電話をかけ、呼が確立したら転送中継先と転送先を接続する。

転送先サポート

TCL IVR スクリプトは、ローカルの Cisco CME IP 電話から打診要求を受信し、次のいずれかを実行できます。

• 打診要求を別のコール レッグにリレーすることでインターワーキングする。これは、転送中継先コール レッグがこのマニュアルで説明する転送プロトコルのいずれかをサポートしている場合に実行できます。

• ローカルに生成された打診 ID と転送の宛先を含む打診要求を IP 電話に送信する。この転送の宛先は、転送中継先が転送先に電話をかけるときに使用する必要がある番号です。

Page 68: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要SIP 登録および通知

1-40TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

ゲートウェイがリモートの転送中継先から打診 ID を含む SETUP 要求を受信すると、その要求は転送先への打診呼を処理するスクリプトに配信されます。この後、このスクリプトは転送中継先コー

ル レッグと転送先コール レッグを接続し、転送元コール レッグを切断できます。

SIP 登録および通知TCL IVR 2.0 スクリプトは、SIP 登録サーバに登録し、通知イベントを受け取る機能を備えています。通知を受信したときにアプリケーションを起動できるため、登録されたイベントの完了までに

時間がかかりそうな場合(数分や数時間など)に便利です。この場合、アプリケーションでは、イ

ンスタンスを解放し、通知を受信したときにシステムが別のインスタンスを作成して通知を処理す

るように指定することもできます。

通知を処理するアプリケーションは、登録を実行したアプリケーションと同じである必要はありま

せん。そのため、登録と通知を別々のアプリケーションで柔軟に処理することができます。

登録を実行したアプリケーションは、次のタスクを実行できます。

• 実行を継続して、サーバからの通知を処理する。

• インスタンスを解放し、通知を受信した時点で同じアプリケーションの別のインスタンスを生

成させる。

• インスタンスを解放し、通知を受信した時点で別のアプリケーションを生成させる。

• 別のモジュールに通知を処理させる。

Page 69: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要SIP ヘッダー

1-41TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

SIP ヘッダーTCL IVR 2.0 スクリプトは、SIP INVITE または H.323 SETUP メッセージで送信するヘッダーを指定できます。スクリプトを記述する場合、ヘッダー値のペアを宛先 URI の「?」の後に付加できます。次の例を参考にしてください。

set destination “sip:[email protected]?Subject=Hotel Reservation&Priority=urgent&X-ReferenceNumber=1234567890"leg setup destination callInfo leg_incoming

宛先の文字列が URI ではなく E.164 番号の場合、ヘッダーを宛先 URI に付加できないため、set コマンドを使用してヘッダーを設定できます。次の例を参考にしてください。

set setupSignal(Subject) “Hotel Reservation”set setupSignal(Priority) “urgent”set setupSignal(X-ReferenceNumber) “1234567890”set callInfo(protoHeaders) setupSignalset destination “4085550100”leg setup destination callInfo leg_incoming

発呼については、アプリケーション固有のヘッダーを SPI に渡すデータ パッシング メカニズムが提供されます。TCL スクリプトは、evt_proto_headers または leg_proto_headers 情報タグを使用してヘッダーを取得できます。Cisco IOS リリース 12.3(4)T では、ヘッダーへのアクセスは SIP INVITE、SUBSCRIBE、NOTIFY メッセージ、および H.323 SETUP メッセージに制限されています。ただし、次に挙げたヘッダーは上書きできません。

• call-ID

• Supported

• Require

• Min-SE

• Session-Expires

• Max-Forwards

• CSeq

(注) ヘッダーを渡すときに各コール レッグに割り当てられるメモリは最大 20 K に制限されています。各ヘッダーの AV ペアは 256 文字に制限されています。TCL スクリプトが 256 文字を超えるヘッダー AV ペアを渡そうとした場合や、20 K のメモリを使い切った場合には、アプリケーションがエラーをスローします。

呼が発信アプリケーションに受け渡される場合、その発信アプリケーションにより、前のアプリ

ケーションから受け渡されたすべてのヘッダーに加え、SPI で設定された着信コール レッグからのヘッダーも evt_handoff proto_headers 情報タグを使用して取得できます。

Page 70: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要アプリケーション インスタンス

1-42TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

アプリケーション インスタンスCisco 音声ゲートウェイに設定された TCL IVR 2.0 アプリケーションは、通常、着呼によりトリガーされます。その後、アプリケーションを使用して発信者に IVR サービスを提供し、1 つ以上のコール レッグを作成して制御できます。音声コールによってアプリケーションが起動されると、そのアプリケーションのインスタンスまたはセッションがアプリケーションによって開始されます。アプ

リケーション インスタンスは、アプリケーション スクリプトを実行し、別のアプリケーションに電話をかけたり、呼を転送したりすることができます。呼は、システムの呼処理の設定に応じて、

1 つまたは複数のアプリケーション インスタンスを開始できます。1 つのアプリケーション セッションで複数の音声コールを管理できます。

Cisco IOS リリース 12.3(x) では、TCL IVR 2.0 アプリケーションのインスタンスをゲートウェイでコール レッグなしに手動で開始できます。そのため、着呼を必要とすることなくゲートウェイでアプリケーション セッションを起動できます。たとえば、キープアライブ サービスを提供するために、サーバ グループのステータスを監視するアプリケーションを作成するとします。このアプリケーションのインスタンスは、ステータス情報を、着呼を処理する別のアプリケーションに渡すこ

とができます。この種類のサービス アプリケーションは、呼によってトリガーされることなくゲートウェイで実行できます。

TCL IVR 2.0 アプリケーションのインスタンスは、call application session start CLI コマンドを使用してゲートウェイで開始できます。アプリケーション インスタンスは、同じゲートウェイにある別のセッションと通信が可能であり、呼は異なるセッション間でブリッジできます。

mod_all_handles 情報タグを使用して、ゲートウェイで現在実行中の全インスタンスのリストを取得できます。

(注) TCL IVR 2.0 では、ハンドラあたりの登録数が 18 に制限されています。スクリプト インスタンスはそれぞれがハンドラであるため、アプリケーション インスタンスが同時に処理できる登録数は最大 18 です。

Page 71: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要セッション対話

1-43TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

セッション対話

セッションは TCL アプリケーションの 1 つのインスタンスであり、直接データを共有しないという点では、別のセッションから独立しています。たとえば、あるセッションのグローバル TCL 変数を別のセッションで使用することはできません。ただし、アプリケーション セッションは、メッセージの送受信やセッション間での呼の受け渡しを行うために、ゲートウェイの別のセッションと

通信できます。

TCL セッションは、複数の発信コール レッグを開始し、そこに着信コール レッグや発信コール レッグを受け渡すことができます。TCL セッションは、sendmsg または通知から CLI で開始された場合、または処理するレッグを切断した場合は、コール レッグなしに実行できます。

セッションの開始と停止

最も一般的にセッションが開始されるのは、TCL アプリケーションが着信音声コールを処理する場合ですが、セッションは、sendmsg または通知から CLI で開始される場合、または処理していたコール レッグを切断する場合は、コール レッグなしでも実行できます。

TCL インスタンスが開始すると、開始方法に応じて次のいずれかのイベントを受け取ります。

• ev_msg_indication

• ev_notify

• ev_session_indication

• ev_call_indication

ユーザが TCL セッションを call app session stop CLI コマンドを使用して停止すると、TCL スクリプトは ev_session_terminate イベントを受け取ります。その TCL スクリプトは終了するものと期待されます。TCL スクリプトが 10 秒以内に終了しなければ、セッションは強制的に遮断され、コール レッグは切断されます。そのため、TCL スクリプトは時間を取って適切に終了できます。

イベントの処理後にセッションが戻り、実行中のタイマー、レッグ、登録されたサービス、または

登録がない場合、セッションは終了されます。

メッセージの送信

メッセージは、sendmsg コマンドを使用して別のアプリケーション インスタンスに送信されます。sendmsg コマンドは非同期コマンドで、宛先がイベントに反応して動作するのを待つ必要がありません。アプリケーション名が指定されると、そのアプリケーションの新しいインスタンスが生成さ

れます。

メッセージの受信

アプリケーションには、ev_msg_indication イベントによって別のアプリケーションからの着信メッセージが通知されます。メッセージと一緒に渡されるパラメータは、evt_msg 情報タグによってアプリケーションで使用できるようになります。送信側アプリケーションのハンドルは、

evt_msg_source 情報タグによって使用できます。

Page 72: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 1章 概要サービス レジストリ

1-44TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

呼の受け渡し

handoff コマンドは、アプリケーション名を渡すだけでなく、ハンドルを渡すこともできます。たとえば、TCL スクリプトが発信者の課金番号を収集し、呼が別のインスタンスによって処理中であるという通知を受信したとします。スクリプトは、handoff コマンドを使用して着信コール レッグを別のアプリケーション インスタンスに渡し、引数の文字列で情報を提供します。別のアプリケーション インスタンスがコール レッグを戻すと、このアプリケーションは ev_returned イベントを受け取ります。

受け渡しの戻り

受け渡しの戻りでさまざまなセッションから別々のコール レッグを受信する場合、コール レッグごとに handoff return コマンドを実行する必要があります。「handoff return leg_all」コマンドは、この場合には定義されていません。最初のユーザ定義レッグについて、レッグ全体のセットが戻り先

に戻される必要があります。

会議レッグ セットの受け渡しの戻りでは、両方のレッグを同じセッションに戻す必要があります。たとえば、セッションに session1 から leg1、session2 から leg2 が受け渡され、2 つのレッグで会議通信を行ったとします。この場合、handoff return $leg2 コマンドは、会議通信を行った両方のレッグをセッション 2 に戻します。

サービス レジストリサービス レジストリは、サービスとして登録している TCL IVR 2.0 アプリケーション インスタンスのすべてをトラッキングするデータベースです。このため、別の TCL アプリケーションは、登録されたアプリケーションであれば、検索して通信することができます。

TCL セッションは、Cisco IOS ソフトウェアを使用してサービスとして登録されることはありません。TCL IVR 2.0 アプリケーションの実行中のインスタンスが、TCL の service コマンドを使用し、自分自身をサービスとして登録します。登録されているサービスのハンドルは、mod_handle_service情報タグを使用して取得できます。

Page 73: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

C H A P T E R

2-1TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

2

TCL IVR スクリプトの使用方法

この章では、TCL IVR スクリプトの作成方法と使用方法について説明します。次の項で構成されます。

• TCL IVR Version 2.0 のしくみ(P.2-2)

• TCL 拡張機能を使用した IVR スクリプトの作成(P.2-4)

- TCL IVR スクリプトのプロンプト(P.2-4)

- TCL IVR スクリプトの例(P.2-4)

- ステート マシンの初期化とセットアップ(P.2-9)

• スクリプトのテストとデバッグ(P.2-10)

- スクリプトのロード(P.2-10)

- スクリプトと着信ダイヤル ピアとの関連付け(P.2-11)

- IVR スクリプトに関する情報の表示(P.2-11)

- IVR スクリプトにおける URL の使用(P.2-14)

- TCL IVR スクリプトの使用におけるポイント(P.2-15)

(注) TCL IVR スクリプトの例は、http://www.cisco.com/cgi-bin/tablebuild.pl/tclware を参照してください。

Page 74: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 2章 TCL IVR スクリプトの使用方法TCL IVR Version 2.0 のしくみ

2-2TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

TCL IVR Version 2.0 のしくみTCL IVR Version 2.0 では、スクリプトが、初期化プロシージャ、動作関数、有限状態マシン(FSM)の 3 つの部分に分けられます。

• 「初期化プロシージャ」は、変数の初期化に使用されます。初期化プロシージャには、次の 2 種類があります。

- スクリプトのメイン コード セクションで呼び出される初期化関数。この初期化関数は、スクリプトの実行インスタンスが生成されると一度だけ呼び出されます(「実行インスタンス」とは、スクリプトを実行するために生成される TCL インタプリタのインスタンスです)。グローバル変数の初期化は(スクリプトの実行中に変更されないため)、この初期化関数で行ってください。また、コマンドライン インターフェイス(CLI)パラメータの読み取りも、この初期化関数で行ってください。

- 実行インスタンスが ev_setup_indication または ev_handoff イベントを受け取ると呼び出される初期化関数で、呼の開始を示します。呼固有の変数の初期化は、この初期化関数で行ってください。

呼処理のためにスクリプトの実行インスタンスが生成されると、実行インスタンスは呼の終了

時に削除されずにキャッシュに格納されます。次の着呼は、可能な場合、このキャッシュに格

納された実行インスタンスを使用します。このため、最初の呼を処理するときに定義されたグ

ローバル変数は、次の呼処理でも使用されます。一方、呼固有の変数は、ev_setup_indication または ev_handoff に対する動作関数で再初期化する必要があります。

一度初期化する必要のある変数や、呼の間で変更することのない変数は、スクリプトのメイン

コード セクションで初期化することができます。たとえば、構成パラメータの読み取りは、ワンタイム プロセスであり、呼単位に行う必要がありません。このため、これらの変数をメインコードに含めるとより効率的です。

• 「動作関数」は、FSM の定義に使用される一連の TCL プロシージャです。この関数は、基盤となるシステムのイベントに対応して適切な動作を行います。

• 「FSM」では、現在の状態で特定のイベントに対応した呼び出しを動作関数に指定することによって、呼の制御フローを定義します。

FSM が(ev_handoff または ev_setup_indication イベントで示される)新しい呼を受信するときの状態が、FSM の開始状態になります。fsm define コマンドによってステート マシン テーブルが登録されると、この状態が定義されます。これ以降は、システムから受け取るイベントに

よってステート マシンが作動し、現在の状態、および set variable コマンドで定義したときに受け取るイベントに基づいて、適切な動作プロシージャが実行されます。

FSM では、次に示す 2 つのワイルドカード状態と 1 つのワイルドカード イベントがサポートされます。

- any_state。状態遷移における開始状態としてのみ使用でき、状態イベントの組み合わせがまだ処理されていないすべての状態に対応します。

- same_state。状態遷移における終了状態としてのみ使用でき、同じ状態を維持します。

- ev_any_event。スクリプトが受け取るすべてのイベントを表すのに使用できます。

たとえば、未処理のイベントに対してデフォルト ハンドラを生成するには、次のスクリプトを使用できます。

set callfsm(any_state,ev_any_event)”defaultProc,same_state”

いずれかのコール レッグに対して切断を受信した場合に呼のクローズを命令するには、次のスクリプトを使用できます。

set callfsm(any_state,ev_disconnected) “cleanupCall,CLOSE_CALL”

次の例では、デフォルトで、ev_disconnected イベントを受け取ると呼をクローズします。ただし、media_playing の状態で ev_disconnected イベントを受け取る場合、プロンプトが終了してから呼をクローズします。

set callfsm(any_state,ev_disconnected) “cleanupCall,CLOSE_CALL”set callfsm(MEDIA_PLAYING,ev_disconnected) “doSomthingProc,MEDIA_WAIT_STATE”set callfsm(MEDIA_WAIT_STATE,ev_media_done) ”cleanupCall,CLOSE_CALL”

Page 75: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 2章 TCL IVR スクリプトの使用方法TCL IVR Version 2.0 のしくみ

2-3TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

イベントの詳細については、第 5章「イベントとステータス コード」を参照してください。

ゲートウェイは、呼を受信すると、システムに構成されているアプリケーションにその呼を受け渡

します。アプリケーションが TCL IVR API Version 2.0 を使用した TCL スクリプトの場合、そのアプリケーション(またはスクリプト)の実行インスタンスが生成されて実行されます。

スクリプトが実行されると、TCL インタプリタは、スクリプト内のプロシージャを読み取り、メイン セクション(グローバル変数の初期化を含む)を実行します。このとき、fsm define コマンドによってステート マシンと開始状態が登録され、この初期化された実行インスタンスに呼が受け渡されます。これ以降(call close コマンドまで)は、イベントを受け取ると、呼の現在の状態とスクリプトが受け取るイベントに従って、適切な動作プロシージャが呼び出されます。

1 つの実行インスタンスは、1 つの呼のみ処理することができます。このため、システムが同じスクリプトで 10 の呼を処理する場合、そのスクリプトのインスタンスの数が 10 になります。呼の間では、次の呼処理のために、実行インスタンスがキャッシュに格納されます。キャッシュに格納さ

れた実行インスタンスは、アプリケーションがリロードされるときに削除されます。また、CLI パラメータや属性と値(AV)のペアの変更、削除、追加を行った場合やアプリケーションの構成を解除した場合にも削除されます。

(注) TCL IVR API の旧バージョンでは、スクリプトの実行インスタンスはすべて Cisco IOS プロセスで実行されていました。このため、100 の呼を処理するには 100 のプロセスが必要となり、各プロセスで 1 つの実行インスタンスを実行していました。これに対し、TCL IVR API Version 2.0 では、複数の実行インスタンスが同じ Cisco IOS プロセスを共有します。ただし、システムのリソースや呼の数に応じて、複数の Cisco IOS プロセスを実行して負荷を分散することもできます。

Page 76: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 2章 TCL IVR スクリプトの使用方法TCL 拡張機能を使用した IVR スクリプトの作成

2-4TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

TCL 拡張機能を使用した IVR スクリプトの作成TCL を使用して IVR スクリプトを作成する前に、IVR スクリプトにおける TCL 拡張機能について理解しておく必要があります。TCL IVR スクリプトの作成には、いずれのテキスト エディタを使用してもかまいません。TCL スクリプト作成の標準規則に従い、必要に応じて、TCL IVR コマンドを組み込んでください。

このセクションのスクリプト例で、TCL IVR API Version 2.0 のコマンドの使用方法を示します。

(注) 発信者が電話を切ると、スクリプトの実行が終了し、コール レッグは消去されます。スクリプトは、それ以上処理を行いません。

TCL IVR スクリプトのプロンプトTCL IVR API Version 2.0 では、メモリ ベースと RTSP ベースの 2 種類のプロンプトを使用できます。

• メモリ ベースのプロンプトの場合、プロンプト(音声ファイル)は、メモリに読み込まれてから、必要に応じて該当するコール レッグに対して再生されます。読み込みが可能なメモリは、フラッシュ メモリ、TFTP サーバ、および FTP サーバです。

• RTSP ベースのプロンプトの場合、外部の(RTSP 対応)サーバを使用して、特定の音声ファイルやコンテンツを再生したり、必要に応じて該当するコール レッグに対して音声を流すことができます。一部のプラットフォームでは、RTSP ベースのプロンプトがサポートされません。このようなプラットフォームで RTSP ベースのプロンプトを使用した場合、ev_media_done イベントのステータス コードと共にプロンプトが異常終了します。

冒頭で述べたように、TCL IVR API Version 2.0 では、ダイナミック プロンプトの使用によって、番号、金額、日付、時刻を再生するといった基本的な TTS 機能もいくつか提供されます。異なる言語を使用してプロンプトを分類することもできるため、スクリプトは、特定のプロンプトを再生する

ように命令されると、使用中または指定された言語でプロンプトを自動再生します。

(注) スクリプトをセットアップするときは、パフォーマンスが低下しないように、短いプロンプトやダ

イナミック プロンプトでは RTSP を使用しないことをお勧めします。

TCL IVR スクリプトの例次の例は、TCL IVR API Version 2.0 のコマンドの使用方法を示します。最初にヘッダー情報を記述することをお勧めします。ヘッダー情報には、スクリプト名、スクリプトが作成された日付と作成

者、スクリプトの内容に関する一般的な情報が含まれます。

3 桁方式でスクリプトのバージョンも記述しておくことをお勧めします。この場合、1 桁目はスクリプトのメジャー バージョンを示し、2 桁目はマイナー バージョン(スクリプトの関数の変更など)ごとに増やし、3 桁目はその他の変更を行うたびに増やします。

次のスクリプト例では、ダイヤル トーンを再生し、ディジットを収集してダイヤル プランと照合し、宛先に電話をかけ、2 つのコール レッグで会議通信を行い、電話が切られると会議コール レッグおよび切断コール レッグを破棄します。

Page 77: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 2章 TCL IVR スクリプトの使用方法TCL 拡張機能を使用した IVR スクリプトの作成

2-5TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

# app_session.tcl# Script Version 1.0.1#------------------------------------------------------------------ # August 1999, Saravanan Shanmugham # # Copyright (c) 1998, 1999 by cisco Systems, Inc. # All rights reserved. #------------------------------------------------------------------ # # This tcl script mimics the default SESSION app # # # If DID is configured, place the call to the dnis. # Otherwise, output dial-tone and collect digits from the # caller against the dial-plan. # # Then place the call. If successful, connect it up. Otherwise, # the caller should hear a busy or congested signal. # The main routine establishes the state machine and then exits. # From then on, the system drives the state machine depending on the # events it receives and calls the appropriate Tcl procedure.

次に、一連のプロシージャを定義します。

init プロシージャでは、ディジット収集の最初のパラメータを定義します。このプロシージャでは、次の内容が定義されています。

• ユーザはプロンプト メッセージが終了する前に情報を入力することができます。

• ユーザは *キーを押してプロセスを中止することができます。

• ユーザは #キーを押して入力の完了を知らせる必要があります。proc init { } { global param set param(interruptPrompt) true set param(abortKey) * set param(terminationKey) # }

ev_setup_indication イベントを受け取ると、act_Setup プロシージャが実行され、電話をかけるために必要な情報を収集します。このプロシージャでは、次の内容が定義されています。

• 確立通知を着信コール レッグに送信します。

• 呼がダイレクト イン ダイヤル(DID)の場合、宛先を着信電話番号通知サービス(DNIS)に設定し、システムは、着信レッグの処理メッセージで応答し、leg setup コマンドで発信レッグを確立しようとします。

• 呼が DID でない場合、着信コール レッグに対してダイヤル トーンを再生し、ディジットを収集してダイヤル プランと照合します。

Page 78: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 2章 TCL IVR スクリプトの使用方法TCL 拡張機能を使用した IVR スクリプトの作成

2-6TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

proc act_Setup { } { global dest global beep set beep 0 leg setupack leg_incoming if { [infotag get leg_isdid] } { set dest [infotag get leg_dnis] leg proceeding leg_incoming leg setup $dest callInfo leg_incoming fsm setstate PLACECALL } else { playtone leg_incoming tn_dial set param(dialPlan) true leg collectdigits leg_incoming param } }

ev_collectdigits_done イベントを受け取ると、act_GotDest プロシージャが実行されます。収集したディジットがダイヤル プランに適合するかどうかを判別して、適合すれば電話をかけます。このプロシージャでは、次の内容が定義されています。

• ダイヤル プランに適合するディジットの収集に成功した(cd_004)場合、呼の確立を処理します。

• それ以外の場合、エラーをレポートし、呼を終了します。その他のディジット収集ステータス

値のリストについては、P.5-7 の「ディジット収集ステータス」を参照してください。proc act_GotDest { } { global dest set status [infotag get evt_status] if { $status == "cd_004" } { set dest [infotag get evt_dcdigits] leg proceeding leg_incoming leg setup $dest callInfo leg_incoming } else { puts "\nCall [infotag get con_all] got event $status collecting destination" call close } }

ev_setup_done イベントを受け取ると、act_CallSetupDone プロシージャが実行され、呼に時間制限があるかどうかを判別します。このプロシージャでは、次の内容が定義されています。

• 呼が正常終了(ls_000)の場合、スクリプトが残り通話時間を取得します。

• unlimited または uninitialized 以外の値が戻される場合、タイマーを開始します。

• 呼が正常終了でない場合、エラーをレポートし、呼をクローズします。その他のレッグ確立ス

テータス値のリストについては、P.5-10 の「レッグの確立ステータス」を参照してください。

Page 79: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 2章 TCL IVR スクリプトの使用方法TCL 拡張機能を使用した IVR スクリプトの作成

2-7TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

proc act_CallSetupDone { } { global beep set status [infotag get evt_status] if { $status == "ls_000"} { set creditTimeLeft [infotag get leg_settlement_time leg_outgoing] if { ($creditTimeLeft == "unlimited") || ($creditTimeLeft == "uninitialized") } { puts "\n Unlimited Time" } else { # start the timer for ... if { $creditTimeLeft < 10 } { set beep 1 set delay $creditTimeLeft } else { set delay [expr $creditTimeLeft - 10] } timer start leg_timer $delay leg_incoming } } else { puts "Call [infotag get con_all] got event $status while placing an outgoing call" call close } }

an ev_leg_timer イベントを受け取ると、act_Timer プロシージャが実行されます。このプロシージャは、残り通話時間が 10秒になると使用され、残り時間が少ないことをユーザに警告し、限界に達すると呼を終了します。このプロシージャでは、次の内容が定義されています。

• 残り時間がある間、電子音を発してユーザに残り時間が少ないことを警告します。

• 残り時間がなくなると、“out of time” 音声ファイルを再生し、ステート マシンに呼の切断を命令します。

proc act_Timer { } { global beep global incoming global outgoing set incoming [infotag get leg_incoming] set outgoing [infotag get leg_outgoing] if { $beep == 0 } { #insert a beep ...to the caller connection destroy con_all set beep 1 } else { media play leg_incoming flash:out_of_time.au fsm setstate CALLDISCONNECTED } }

ev_destroy_done イベントを受け取ると、act_Destroy プロシージャが実行され、着信コール レッグに対して電子音を発します。

proc act_Destroy { } { media play leg_incoming flash:beep.au }

Page 80: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 2章 TCL IVR スクリプトの使用方法TCL 拡張機能を使用した IVR スクリプトの作成

2-8TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

ev_media_done イベントを受け取ると、act_Beeped プロシージャが実行され、着信コール レッグと発信コール レッグの接続を確立します。

proc act_Beeped { } { global incoming global outgoing connection create $incoming $outgoing }

ev_create_done イベントを受け取ると、act_ConnectedAgain プロシージャが実行され、着信コールレッグのタイマーを 10 秒に再設定します。

proc act_ConnectedAgain { } { timer start leg_timer 10 leg_incoming }

act_Ignore プロシージャによって、「Event Capture」をレポートします。

proc act_Ignore { } { # Dummy puts "Event Capture" }

ev_disconnected イベントを受け取ったとき、および状態が CALLDISCONNECTED のときに、act_Cleanup プロシージャが実行され、呼をクローズします。

(注) スクリプトは、ev_disconnected イベントを受け取ると、leg disconnect コマンドでレッグを消去するまで 15 秒間待ちます。15 秒後にタイマーが時間切れになると、スクリプトは終了し、コンソールにエラー メッセージが表示されます。このため、切断後にレッグが消去されていないという事態が避けられます。

proc act_Cleanup { } { call close }

最後に、すべてのプロシージャをメイン ルーチンに組み込みます。メイン ルーチンでは、状態とイベントの多様な組み合わせに対する実際の状態の移行を定義した TCL 配列を定義し、呼を制御するステート マシンを登録します。メイン ルーチンでは、次の内容が定義されています。

• いずれの状態でも、呼が切断されると act_Cleanup プロシージャを呼び出し、状態をそのまま保持します。

• CALL_INIT の状態のときに「setup indication」イベントを受け取ると、act_Setup プロシージャを呼び出して(電話をかけるのに必要な情報を収集し)、状態を GETDEST に設定します。

• GETDEST の状態のときに「digit collection done」イベントを受け取ると、act_GotDest プロシージャを呼び出して(収集したディジットがダイヤル プランに適合し、電話をかけることが可能かどうかを判別し)、状態を PLACECALL に設定します。

• PLACECALL の状態のときに「setup done」イベントを受け取ると、act_CallSetupDone プロシージャを呼び出して(呼に時間制限があるかどうかを判別し)、状態を CALLACTIVE に設定します。

• CALLACTIVE の状態のときに「leg timer」イベントを受け取ると、act_Timer プロシージャを呼び出して(残り時間が少ないことをユーザに警告し)、状態を INSERTBEEP に設定します。

Page 81: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 2章 TCL IVR スクリプトの使用方法TCL 拡張機能を使用した IVR スクリプトの作成

2-9TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• INSERTBEEP の状態のときに「destroy done」イベントを受け取ると、act_Destroy プロシージャを呼び出して(着信コール レッグに対して電子音を発し)、状態を INSERTBEEP のまま保持します。

• INSERTBEEP の状態のときに「media done」イベントを受け取ると、act_Beeped プロシージャを呼び出して(着信コール レッグと発信コール レッグを再接続し)、状態を INSERTBEEP のまま保持します。

• INSERTBEEP の状態のときに「create done」イベントを受け取ると、act_ConnectedAgain プロシージャを呼び出して(着信コール レッグのレッグ タイマーを 10 秒に再設定し)、状態をCALLACTIVE に設定します。

• CALLACTIVE の状態のときに「disconnect」イベントを受け取ると、act_Cleanup プロシージャを呼び出して(呼を終了し)、状態を CALLDISCONNECTED に設定します。

• CALLDISCONNECTED の状態のときに「disconnect」イベントを受け取ると、act_Cleanup プロシージャを呼び出して(呼を終了し)、状態を CALLDISCONNECTED のまま保持します。

• CALLDISCONNECTED の状態のときに「media done」イベントを受け取ると、act_Cleanup プロシージャを呼び出して(呼を終了し)、状態を CALLDISCONNECTED のまま保持します。

• CALLDISCONNECTED の状態のときに「disconnect done」イベントを受け取ると、act_Cleanupプロシージャを呼び出して(呼を終了し)、状態を CALLDISCONNECTED のまま保持します。

• CALLDISCONNECTED の状態のときに「leg timer」イベントを受け取ると、act_Cleanup プロシージャを呼び出して(呼を終了し)、状態を CALLDISCONNECTED のまま保持します。init #---------------------------------- # State Machine #---------------------------------- set TopFSM(any_state,ev_disconnected) "act_Cleanup,same_state" set TopFSM(CALL_INIT,ev_setup_indication) "act_Setup,GETDEST" set TopFSM(GETDEST,ev_collectdigits_done) "act_GotDest,PLACECALL" set TopFSM(PLACECALL,ev_setup_done) "act_CallSetupDone,CALLACTIVE" set TopFSM(CALLACTIVE,ev_leg_timer) "act_Timer,INSERTBEEP" set TopFSM(INSERTBEEP,ev_destroy_done) "act_Destroy,same_state" set TopFSM(INSERTBEEP,ev_media_done) "act_Beeped,same_state" set TopFSM(INSERTBEEP,ev_create_done) "act_ConnectedAgain,CALLACTIVE" set TopFSM(CALLACTIVE,ev_disconnected) "act_Cleanup,CALLDISCONNECTED" set TopFSM(CALLDISCONNECTED,ev_disconnected) "act_Cleanup,same_state" set TopFSM(CALLDISCONNECTED,ev_media_done) "act_Cleanup,same_state" set TopFSM(CALLDISCONNECTED,ev_disconnect_done) "act_Cleanup,same_state" set TopFSM(CALLDISCONNECTED,ev_leg_timer) "act_Cleanup,same_state"

ステート マシンの初期化とセットアップ次のコマンドを使用して、ステート マシン(SM)の初期化とセットアップを行います。

fsm define TopFSM CALL_INIT

Page 82: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 2章 TCL IVR スクリプトの使用方法スクリプトのテストとデバッグ

2-10TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

スクリプトのテストとデバッグ

スクリプトは、使用する前に十分にテストすることが重要です。スクリプトをテストするには、ス

クリプトをルータに実装し、電話をかけてスクリプトを起動します。スクリプトをテストするとき

は、必ず、すべてのプロシージャと、各プロシージャで発生する状況をすべてテストしてください。

ルータで実行される TCL IVR スクリプトに適用されるデバッグ情報を参照することができます。debug voip ivr コマンドを使用すると、参照するデバッグ情報の出力形式を指定できます。デバッグの出力結果を参照するには、特権 Exec モードで次のコマンドを入力してください。

[no] debug voip ivr [states | error | tclcommands | callsetup | digitcollect | script | dynamic | applib | settlement | all]

debug voip ivr コマンドの詳細については、『Interactive Voice Response Version 2.0 on Cisco VoIP Gateways』を参照してください。

スクリプトのデバッグ機能が有効な場合、TCL puts コマンドの出力結果が表示されます。

エラーの原因として、次の点が考えられます。

• 不明なコマンドや入力ミスのコマンド(たとえば、media play を mediaplay と誤って入力した場合)。

• 構文エラー(たとえば、引数に無効な数字を指定した場合)。

• 無効な状態でのコマンド実行(たとえば、プロンプトが再生されていないときに media pauseコマンドを実行した場合)。

• 無効な適用範囲での情報タグの使用(たとえば、ev_collectdigits_done イベントを処理していないときに evt_dcdigits を指定した場合)。情報タグの詳細については、第 4章「情報タグ」を参照してください。

多くの場合、上記のエラーが発生すると、基盤となるインフラストラクチャがコール レッグを切断して終了します。

スクリプトのロード

アプリケーションと TCL IVR スクリプトを関連付けるには、次のコマンドを使用してください。

(config)# call application voice application_name script_url

アプリケーションと TCL IVR スクリプトを関連付けたら、次のコマンドを使用してパラメータを設定してください。

(config)# call application voice application_name script_url [parameter value]

このコマンドでは、次のようにパラメータを設定します。

• application_name には、着信ダイヤル ピアに送信される呼に対してシステムが使用する TCL アプリケーションの名前を指定します。TCL IVR スクリプトと関連付けられる名前を入力してください。

• script_url は、スクリプトが格納されているパス名です。格納場所のパス名を入力してから、スクリプトのファイル名を入力してください。TCL IVR スクリプトは、フラッシュ メモリや、URL で参照可能な TFTP サーバなどのサーバに格納することができます。

• parameter value には、言語や PIN 長など、特定のパラメータの値を設定することができます。

call application voice コマンドの詳細については、『Interactive Voice Response Version 2.0 on Cisco VoIPGateways』を参照してください。

Page 83: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 2章 TCL IVR スクリプトの使用方法スクリプトのテストとデバッグ

2-11TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

次の例では、「test」という名前のアプリケーションが、tftp://keyer/debit_audio/ に格納されているnewapp.tcl という名前の TCL IVR スクリプトに関連付けられています。

(config)# call application voice test tftp://keyer/debit_audio/newapp.tcl

(注) スクリプトをロードできない場合、そのスクリプトは再試行キューに格納され、システムは定期的

にロードを再試行します。スクリプトを変更する場合、(config)# call application voice load

script_name のように、スクリプト名だけを使用してスクリプトを再ロードすることができます。

call application voice および call application voice load コマンドの詳細については、『Interactive VoiceResponse Version 2.0 on Cisco VoIP Gateways』を参照してください。

スクリプトと着信ダイヤル ピアとの関連付けTCL IVR スクリプトを実行して呼を処理するには、設定済みのアプリケーションと着信ダイヤル ピアを関連付けることが必要です。スクリプトと着信ダイヤル ピアを関連付けるには、設定モードで次のコマンドを入力してください。

(config)# dial-peer voice number voip

(conf-dial-peer)# incoming called-number destination_number

(conf-dial-peer)# application application_name

これらのコマンドでは、次のようにパラメータを設定します。

• number は、ダイヤル ピアを一意に識別します(この番号は、ローカルでのみ有効です)。

• destination_number には、宛先の電話番号を指定します。有効なエントリは、E.164 電話番号を指定した一連の数字です。

• application_name は、アプリケーションをロードするときに割り当てた略称です。

たとえば、次のコマンドは、IP ネットワークからの発信で宛先の電話番号が 125 である呼に対して「newapp」という名前のアプリケーションを実行することを示しています。

(config)# dial-peer voice 3 voip(conf-dial-peer)# incoming called-number 125(conf-dial-peer)# application newapp

着信ダイヤル ピアの詳細については、Cisco IOS ソフトウェアのマニュアルを参照してください。

IVR スクリプトに関する情報の表示ルータに設定されている音声アプリケーションのリストを参照するには、show call application voiceコマンドを使用します。各アプリケーションの一覧情報が、1 行ずつ表示されます。

show call application voice [ [name] | [summary] ]

このコマンドでは、次のようにパラメータを設定します。

• name には、参照する IVR アプリケーションの名前を指定します。特定のアプリケーション名を入力すると、そのアプリケーションに関する情報が表示されます。

• 一覧情報を参照するには summary を指定します。summary キーワードを指定すると、各アプリケーションの一覧情報が 1 行ずつ表示されます。このキーワードを省略した場合、指定のアプリケーションに関する詳細な説明が表示されます。

Page 84: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 2章 TCL IVR スクリプトの使用方法スクリプトのテストとデバッグ

2-12TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

次の例は、show call application voice コマンドの出力結果です。

router# show call application voice session2 Idle call list has 0 calls on it. Application session2 The script is read from URL tftp://dirt/sarvi/scripts/tcl/app_session.tcl The uid-len is 10 (Default) The pin-len is 4 (Default) The warning-time is 60 (Default) The retry-count is 3 (Default) It has 0 calls active. The Tcl Script is:------------------ # app_session.tcl #------------------------------------------------------------------ # August 1999, Saravanan Shanmugham # # Copyright (c) 1998, 1999 by cisco Systems, Inc. # All rights reserved. #------------------------------------------------------------------ # # This tcl script mimics the default SESSION app # # # If DID is configured, just place the call to the dnis # Otherwise, output dial-tone and collect digits from the # caller against the dial-plan. # # Then place the call. If successful, connect it up, otherwise # the caller should hear a busy or congested signal. # The main routine just establishes the state machine and then exits. # From then on the system drives the state machine depending on the # events it receives and calls the appropriate tcl procedure #--------------------------------- # Example Script #--------------------------------- proc init { } { global param set param(interruptPrompt) true set param(abortKey) * set param(terminationKey) # } proc act_Setup { } { global dest global beep set beep 0 leg setupack leg_incoming if { [infotag get leg_isdid] } { set dest [infotag get leg_dnis] leg proceeding leg_incoming leg setup $dest callInfo leg_incoming fsm setstate PLACECALL } else { playtone leg_incoming tn_dial set param(dialPlan) true leg collectdigits leg_incoming param

Page 85: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 2章 TCL IVR スクリプトの使用方法スクリプトのテストとデバッグ

2-13TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

} } proc act_GotDest { } { global dest set status [infotag get evt_status] if { $status == "cd_004" } { set dest [infotag get evt_dcdigits] leg proceeding leg_incoming leg setup $dest callInfo leg_incoming } else { puts "\nCall [infotag get con_all] got event $status while placing an outgoing call" call close } } proc act_CallSetupDone { } { global beep set status [infotag get evt_status] if { $status == "CS_000"} { set creditTimeLeft [infotag get leg_settlement_time leg_outgoing] if { ($creditTimeLeft == "unlimited") || ($creditTimeLeft == "uninitialized") } { puts "\n Unlimited Time" } else { # start the timer for ... if { $creditTimeLeft < 10 } { set beep 1 set delay $creditTimeLeft } else { set delay [expr $creditTimeLeft - 10] } timer start leg_timer $delay leg_incoming } } else { puts "Call [infotag get con_all] got event $status collecting destination" call close } } proc act_Timer { } { global beep global incoming global outgoing set incoming [infotag get leg_incoming] set outgoing [infotag get leg_outgoing] if { $beep == 0 } { #insert a beep ...to the caller connection destroy con_all set beep 1 } else { media play leg_incoming flash:out_of_time.au fsm setstate CALLDISCONNECTED } }

Page 86: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 2章 TCL IVR スクリプトの使用方法スクリプトのテストとデバッグ

2-14TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

proc act_Destroy { } { media play leg_incoming flash:beep.au } proc act_Beeped { } { global incoming global outgoing connection create $incoming $outgoing } proc act_ConnectedAgain { } { timer start leg_timer 10 leg_incoming } proc act_Ignore { } { # Dummy puts "Event Capture" } proc act_Cleanup { } { call close } init #---------------------------------- # State Machine #---------------------------------- set TopFSM(any_state,ev_disconnected) "act_Cleanup,same_state" set TopFSM(CALL_INIT,ev_setup_indication) "act_Setup,GETDEST" set TopFSM(GETDEST,ev_digitcollect_done) "act_GotDest,PLACECALL" set TopFSM(PLACECALL,ev_setup_done) "act_CallSetupDone,CALLACTIVE" set TopFSM(CALLACTIVE,ev_leg_timer) "act_Timer,INSERTBEEP" set TopFSM(INSERTBEEP,ev_destroy_done) "act_Destroy,same_state" set TopFSM(INSERTBEEP,ev_media_done) "act_Beeped,same_state" set TopFSM(INSERTBEEP,ev_create_done) "act_ConnectedAgain,CALLACTIVE" set TopFSM(CALLACTIVE,ev_disconnected) "act_Cleanup,CALLDISCONNECTED" set TopFSM(CALLDISCONNECTED,ev_disconnected) "act_Cleanup,same_state" set TopFSM(CALLDISCONNECTED,ev_media_done) "act_Cleanup,same_state" set TopFSM(CALLDISCONNECTED,ev_media_done) "act_Cleanup,same_state" set TopFSM(CALLDISCONNECTED,ev_disconnect_done) "act_Cleanup,same_state" set TopFSM(CALLDISCONNECTED,ev_leg_timer) "act_Cleanup,same_state" fsm define TopFSM CALL_INIT

IVR スクリプトにおける URL の使用IVR スクリプトでは、スクリプトの呼び出しや、スクリプトで再生される音声ファイルの呼び出しに、URL を使用します。VoIP システムでは、音声ファイルの読み込みに Cisco IOS File System(IFS)を使用しています。このため、TFTP、FTP、ルータのデバイスへのポインタなど、IFS がサポートされている URL はすべて使用できます。

(注) フラッシュ メモリではエントリが 32 に制限されるため、すべての音声ファイルをフラッシュ メモリにコピーできるとは限りません。

Page 87: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 2章 TCL IVR スクリプトの使用方法スクリプトのテストとデバッグ

2-15TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

IVR スクリプトをロードするための URL

IVR スクリプトの URL は、スクリプトの格納場所を示す標準 URL です。次に例を示します。

• flash:myscript.tcl—myscript.tcl という名前のスクリプトを、ルータのフラッシュ メモリからロードします。

• slot0:myscript.tcl—myscript.tcl という名前のスクリプトを、ルータのスロット 0 にあるデバイスからロードします。

• tftp://BigServer/myscripts/betterMouseTrap.tcl—betterMouseTrap.tcl という名前のスクリプトを、

BigServer という名前のサーバの、tftpboot ディレクトリ内の myscripts という名前のディレクトリからロードします。

音声ファイルをロードするための URL

音声ファイルのロードで使用する URL は、IVR スクリプトのロードで使用する URL と異なります。音声ファイルの URL について、次に示します。

• スタティック プロンプトの場合、P.2-15 の「IVR スクリプトをロードするための URL」で説明したとおり、IFS がサポートされている URL を使用できます。

• ダイナミック プロンプトの場合、media play コマンドや言語 CLI 構成コマンドで指定したパラメータからの情報を使用して、ソフトウェアによって URL が生成されます。

TCL IVR スクリプトの使用におけるポイントここでは、TCL IVR スクリプトの使用に関する FAQ に対して回答を提供します。

• RADIUS サーバから TCL IVR スクリプトに情報を得るにはどうすればよいか。

認証と許可が完了すると、infotag get コマンドによって、RADIUS サーバが保持する預金残高、残り通話時間、原因コードを取得することができます。

• スクリプトにエラーがある場合はどうなるのか。

スクリプトにエラーがあると、TEMPORARY_FAILURE (41) の原因で呼が消去されます。IVRアプリケーションが着呼をすでに受信している場合、発信者には何も聞こえません。スクリプ

トが着呼を受信していない場合、発信者には高速なビジー信号が聞こえます。

スクリプトがエラーのために終了すると、(P.2-10 の「スクリプトのテストとデバッグ」で説明したように)IVR デバッグ機能が有効な場合はスクリプト内のエラーの場所がコマンドラインに表示されます。

Page 88: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 2章 TCL IVR スクリプトの使用方法スクリプトのテストとデバッグ

2-16TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

Page 89: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

C H A P T E R

3-1TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

3

TCL IVR API のコマンド リファレンス

この章では、TCL IVR API コマンドについてアルファベット順に説明します。次の項で構成されます。

• TCL IVR スクリプトで使用される標準 TCL コマンド(P.3-2)

• TCL IVR コマンド一覧(P.3-4)

• TCL IVR コマンド(P.3-7)

各コマンドについて、次の説明が提供されます。

• コマンドの目的や機能の説明

• 構文の説明

• 引数のリストと、それぞれの引数の説明

• 有効な戻り値のリストと、それぞれの戻り値の説明

• コマンド終了時に受け取るイベントのリスト

• コマンドの使用例

戻り値およびイベントについては、第 5章「イベントとステータス コード」を参照してください。

Page 90: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR スクリプトで使用される標準 TCL コマンド

3-2TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

TCL IVR スクリプトで使用される標準 TCL コマンドTCL IVR 2.0 スクリプトでは、次の標準 TCL 8.3.4 コマンドを使用できます。

(注) puts コマンドについては、表示の文字サイズが 2K に制限されています。

表 3-1 Cisco IVR 2.0 でサポートされる標準 TCL コマンド

append array binary break

case catch cd clock

close concat continue encoding

eof1

1. ChannelId は、TCL 標準チャネル(stdin、stdout、または stderr)などのオープン チャネルの識別子か、呼び出した open からの戻り値でなければなりません。

error eval expr

fconfigure1 file2

2. file readlink オプションはサポートされていません。file attributes については、グループ、オーナー、およびアクセス権のみがサポートされています。

fileevent flush

for foreach format gets1

glob global history if

incr info join lappend

lindex linsert list llength

lrange lreplace lsearch lsort

namespace open package3

3. package ifneeded オプションおよび package unknown オプションはサポートされていません。

proc

puts pwd read regexp

regsub rename return scan

seek set split string

subst switch tcl_trace time

unset update uplevel upvar

variable while ― ―

Page 91: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスHTTP コマンド

3-3TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

HTTP コマンドTCL 8.3.4 には http パッケージが含まれ、クライアント側の HTTP1.0 プロトコルが提供されます。表 3-2 では、TCL IVR 2.0 スクリプトで使用される HTTP コマンドと、Cisco IOS でサポートされていないコマンドとオプションを分類しています。

表 3-2 HTTP コマンド

サポートされるコマンド サポートされないコマンド サポートされないオプション

config   -proxyhost ホスト名

-proxyport 番号

-proxyfilter コマンド

geturl   -channel 名前

-handler コールバック

-blocksize サイズ

-progress コールバック

-queryblocksize サイズ

-queryprogress コールバック

formatQuery    

reset    

  wait  

status    

size    

code    

ncode    

data    

error    

cleanup    

  register  

  unregister  

Page 92: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド一覧

3-4TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

TCL IVR コマンド一覧標準 TCL コマンドのほかに、Cisco が作成した TCL IVR 2.0 拡張機能を使用できます。

また、既存の puts TCL コマンドが、特定のタスクを実行するように変更されています(表 3-3)。

表 3-3 TCL IVR コマンド

コマンド 説明

aaa accounting アカウンティング レコードの開始または更新を送信します。

aaa accounting get status レッグのアカウンティング ステータスを照会するか、方式リストのステータスを取得します。

aaa accounting probe アカウンティング プローブ レコードを送信します。

aaa accounting set status 方式リストのステータスを変更します。

aaa authenticate 外部システム、通常はリモート アクセス ダイヤルイン ユーザ サービス(RADIUS) サーバへ、認証要求を送信します。

aaa authorize 外部システム、通常は RADIUS サーバへ、許可要求を送信します。

call close 呼の終了を示し、その呼に関連するリソースをすべて解放し、次の呼

処理のために実行インスタンスを解放します。

call lookup 指定されたパラメータに一致する呼に登録されているアプリケーショ

ンのアプリケーション ハンドルを取得します。

call register アプリケーションが、これ以降、指定された呼の条件に一致する着呼

のすべてを受信することを示すために使用します。また、別のアプリ

ケーションが、呼の条件と照合することでこのアプリケーションのイ

ンスタンス ハンドルを検索して取得できるようにします。

call unregister 指定された呼の条件に一致する呼登録エントリを削除します。

clock 時間を表す文字列または値の取得や処理を行う操作のいずれかを実行

します。

command terminate 以前に発行されたコマンドを終了します。

connection create 2 つのコール レッグを接続します。

connection destroy 接続を破棄します。

command export TCL スクリプトが TCL プロシージャを登録またはエクスポートし、ダイナミック リンク メカニズムによって C 言語のコードから呼び出させるようにします。

fsm define TCL 配列とその開始状態によって指定されたステート マシンを登録します。

fsm setstate 現在の動作プロシージャを実行した後の FSM の次の状態を指定します。

handoff アプリケーションの名前またはハンドルを受け渡します。

handoff return コール レッグをアプリケーションへ戻します。

infotag get コール レッグ、スクリプト、またはシステムから、情報を取得します。

infotag set システムに情報を設定できます。

leg alert 指定されたレッグに警告メッセージを送信します。

leg callerid 転送後に更新された呼の番号と名前を送信します。

leg collectdigits 呼をディジット収集モードに移行し、ディジットを収集します。

leg connect 呼接続メッセージを着信コール レッグに送信します。

leg consult abandon 指定されたレッグに対してコール転送打診放棄要求を送信します。

Page 93: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド一覧

3-5TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg consult response 指定されたレッグに対してコール転送打診 ID 応答を送信します。

leg consult request 指定されたレッグに対してコール転送打診 ID 要求を送信します。

leg disconnect 接続に関与しない 1 つ以上のコール レッグを切断します。

leg disconnect_prog_ind 切断メッセージを指定された経過インジケータ値と一緒に指定された

レッグに送信します。

leg facility ファシリティ メッセージを発信します。

leg proceeding 呼処理メッセージを着信コール レッグに送信します。

leg progress 指定されたレッグに経過表示メッセージを送信します。

leg senddigit 指定されたコール レッグに対してディジットを送信します。

leg sendhookflash 指定されたコール レッグに対してフックフラッシュを送信します。

leg setup 宛先番号への呼の確立を開始します。

leg setup_continue 終端点アドレスへの確立を開始するか、またはイベントによる呼処理

の中断後にシステムが操作を続行するようにします。

leg setupack 呼の確立通知を着信コール レッグに返信します。

leg tonedetect 呼の間、特定トーンの検出をイネーブルまたはディセーブルにします。

leg transferdone コール レッグでのコール転送のステータスを示し、そのコール レッグを切断します。

leg vxmldialog 指定されたレッグで VoiceXML ダイアログを開始します。

leg vxmlsend レッグで実行中の VoiceXML ダイアログにイベントをスローします。

log syslog メッセージを発信します。

media pause 特定のコール レッグに対してプロンプトの再生を一時停止します。

media play 特定のコール レッグに対してプロンプトを再生します。

media record 指定されたコール レッグで受信した音声を録音し、URL で指定された場所に保存します。

media resume 特定のコール レッグに対してプロンプトの再生を再開します。

media seek 現在のプロンプト内を前方検索または後方検索します。

media stop 特定のコール レッグに対してプロンプトの再生を停止します。

modulespace モジュール空間の作成、アクセス、および削除を可能にし、その中で

モジュールがコードを実行できるようにします。

object create dial-peer ダイヤル ピア ハンドルのリストを作成します。

object create gtd 新しい GTD 領域への GTD ハンドルを作成します。

object destroy 1 つ以上のダイヤル ピア項目を破棄します。

object append gtd ハンドルに 1 つ以上の GTD 属性を付加します。

object delete gtd 1 つ以上の GTD 属性を削除します。

object replace gtd 1 つ以上の GTD 属性を置き換えます。

object get gtd 指定された GTD ハンドルに関連付けられた属性インスタンスの値、または属性のリストを取得します。

object get dial-peer ダイヤル ピア項目または一連のダイヤル ピアのダイヤル ピア情報を戻します。

param read 呼に関連付けられた設定パラメータを、<variable-name> という名前の変数に読み込み、読み取り専用にします。

表 3-3 TCL IVR コマンド(続き)

コマンド 説明

Page 94: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド一覧

3-6TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

param register パラメータを説明およびデフォルト値と一緒に登録し、CLI によって設定および検証できるようにします。

phone assign 特定のトーン、またはコール レッグに対して提供されるステータスコードに基づいたトーンを再生します。

phone query 特定のトーン、またはコール レッグに対して提供されるステータスコードに基づいたトーンを再生します。

phone unassign 特定のトーン、またはコール レッグに対して提供されるステータスコードに基づいたトーンを再生します。

playtone 特定のトーン、またはコール レッグに対して提供されるステータスコードに基づいたトーンを再生します。

puts パラメータをコンソールに出力します。デバッグに使用します。

requiredversion TCL IVR API の現在のバージョンを確認します。

sendmsg 別のアプリケーション インスタンスにメッセージを送信します。

service サービスを登録または登録解除します。

set avsend 標準の AV ペアまたは VSA ペアを含む結合配列を設定します。

set callinfo 配列内に電話のかけ方を決定するパラメータを設定します。

subscription open 登録サーバに登録要求を送信します。

subscription close 既存の登録を削除します。

subscription notify_ack 通知イベントへの肯定応答または否定応答を送信します。

timer left 作動しているタイマーの残り時間を戻します。

timer start 特定のコール レッグの呼に対してタイマーを開始します。

timer stop タイマーを終了します。

表 3-3 TCL IVR コマンド(続き)

コマンド 説明

Page 95: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-7TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

TCL IVR コマンドここでは、使用可能な TCL IVR コマンドをアルファベット順に説明します。

aaa accountingaaa accounting コマンドは、アカウンティング レコードの開始または更新を送信します。

(注) 停止の動詞はありません。停止レコードは、データの利用可能性に応じて常に自動的に生成される

必要があります。追加の AV を停止レコードに追加するには、update 動詞を使用します。

構文

aaa accounting start {legID | info-tag} [-a avlistSend][-s servertag][-t acctTempName]

aaa accounting update {legID | info-tag} [-a avlistSend]

引数

• legID:コール レッグ ID(着信または発信)。

• info-tag:1 つのレッグに直接マッピングされる情報タグ。情報タグの詳細については、第 4章「情報タグ」を参照してください。

• -s servertag:サーバ(またはサーバ グループ)の識別子。この値は、AAA 設定と同様に method-list-name を示します。

aaa accounting connection {default | method-list-name} group group-nam

デフォルト値は h323 です(下位互換)。

• -t acctTempName:RADIUS サーバに送信する属性を定義するアカウンティング テンプレートを選択します。

• -a avlistSend:アカウンティング バッファに付加する AV ペアのリストを指定します。このリストは、アカウンティング レコードの一部として送信されるか、リストの属性に r フラグが関連付けられていれば既存のリストを置き換えます。次の例を参考にしてください。

set avlistSend(h323-credit-amount, r) 50.

戻り値

なし

コマンド終了

即時

aaa accounting start leg_incoming -a avList -s $method -t $template aaa accounting update leg_incoming -a avList

使用上の注意

• 開始パケットが発行されると、対応する停止パケットが、設定で抑制されているかどうかに関

係なく発行されます。

• debug voip aaa がイネーブルで、アカウンティング開始パケットがすでに発行されている場合、VoIP インフラストラクチャ(Cisco IOS 設定コマンドの gw-accounting aaa によってイネーブルにされる)か、またはスクリプトでこの TCL 動詞を実行することによって、開始要求は無視され、警告メッセージが発行されます。

Page 96: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-8TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• debug voip aaa がイネーブルで、update 動詞が start の前に呼び出される場合、要求は無視され、警告メッセージが発行されます。

• このオプションは当初、アカウンティング パケットに含まれる追加のアプリケーション レベルの属性(基盤となる VoIP インフラストラクチャではなくスクリプトだけが認識する)のために設けられましたが、アカウンティング要求に含めることができる AAA 属性のすべてを -aオプションを使用して送信できます。次のリストに挙げた属性だけが、この方法で -a オプションを使用できます。ただし、健全性チェックは行われません。

- h323-ivr-out

- h323-ivr-in

- h323-credit-amount

- h323-credit-time

- h323-return-code

- h323-prompt-id

- h323-time-and-day

- h323-redirect-number

- h323-preferred-lang

- h323-redirect-ip-addr

- h323-billing-model

- h323-currency

属性が 1 回しか要求に使用できない場合も、健全性チェックは行われません。その場合、スクリプト開発者が整合性を維持する必要があります。

aaa accounting get statusaaa accounting get status コマンドは、レッグのアカウンティング ステータスを照会するか、または方式リストのステータスを取得します。

構文

aaa accounting get status {-l <legID | info-tag> | -m method-list-name}

引数

• -l legID:コール レッグ ID。

• -l info-tag:1 つのレッグに直接マッピングされる情報。

• -m method-list-name:サーバまたはサーバ グループの識別子。この値は、次の AAA 設定と同様に、method-list-name を示します。aaa accounting connection {default | method-list-name} group group-name

戻り値

このコマンドを実行すると、次の値が戻されます。

• unreachable:アカウンティング ステータスに到達できません。

• reachable:アカウンティング ステータスは到達可能です。

• unknown:アカウンティング ステータスは不明です。RADIUS サーバ接続のモニタリングがイネーブルではない場合、デフォルトのステータスは unknown です。

• invalid:指定された方式リストまたは legID が無効です。

Page 97: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-9TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

コマンド終了

即時

aaa accounting get status -l leg_incomingaaa accounting get status -l [infotag get evt_leg]set m1_1_status [aaa accounting get status -m m1_1]

使用上の注意

• このコマンドで処理するレッグは、複数ではなく 1 つだけです。

• -l と -m は、相反するオプションです。片方を指定したら、もう一方は指定しないでください。

aaa accounting probeaaa accounting probe コマンドは、アカウンティング プローブ レコードを送信します。

構文

aaa accounting probe <-s servertag> [-a avlistSend] [-t recordType]

引数

• -s servertag:サーバ(またはサーバ グループ)の識別子。この値は、次の AAA 設定と同様にmethod-list-name を示します。

aaa accounting connection {default | method-list-name} group group-name

• -a avlistSend:アカウンティング バッファに付加する AV ペアのリストを指定し、アカウンティング レコードの一部として送信されるようにします。

• -t recordType:start、stop、accounting-on のいずれかのアカウンティング レコードの種類を指定します。

戻り値

probe success:プローブが成功しました。

probe failed:プローブが失敗しました。

コマンド終了

即時

aaa accounting probe -s m1_1

set av_send(username) “1234567890”aaa accounting probe -s m1_1 -a av_send -t stop

使用上の注意

このコマンドは、ダミー アカウンティング プローブ レコードを送信します。

Page 98: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-10TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

aaa accounting set statusaaa accounting set status コマンドは、方式リストのステータスを変更します。

構文

aaa accounting set status method-list-status method-list-name

引数

• method-list-status:サーバ ステータスを設定します。有効な値を以下に示します。

- unreachable:サーバ ステータスに到達できません。

- reachable:サーバ ステータスは到達可能です。

• method-list-name:サーバまたはサーバ グループの識別子。この値は、次の AAA 設定と同様に、method-list-name を示します。aaa accounting connection {default | method-list-name} group group-name

戻り値

invalid:指定された方式リストは無効です。

unknown:指定された方式リストは、ステータス モニタリング対象として登録されていません。

reachable:指定された方式リストが、到達可能状態に設定されました。

unreachable:指定された方式リストは到達不能状態に設定されました。

コマンド終了

即時

set m1_status “unreachable”aaa accounting set status reachable m1_1aaa accounting set status unreachable m1_2

使用上の注意

このコマンドは、指定された方式リストのステータスを設定します。

aaa authenticateaaa authenticate コマンドは、課金番号とパスワードを適切なサーバに送信して認証を受けることで、ユーザの認証を確認します。このコマンドは、許可または拒否を戻します。RADIUS サーバが認証応答で戻した情報を取得する infotag get aaa-avpair avpair-name コマンドはサポートされていません。

構文

aaa authenticate account password [-a avlistSend][-s servertag][-l legID]

引数

• account:ユーザの課金番号。

• password:ユーザのパスワード(または PIN)。

• -a avlistSend:この引数は、既存の省略可能な [av-send] 引数に代わるものです。下位互換性があります。

Page 99: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-11TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• -s servertag:サーバ(またはサーバ グループ)の識別子。この値は、AAA 設定と同様に、method-list-name を示します。

aaa authentication login {default | method-list-name} group group-name

デフォルト値は h323 です(下位互換)。

(注) 汎用の AAA サーバだけが現在サポートされています。

• -l legID:アクセス要求用のコール レッグ。h323-conf-id など、コール レッグに関連付けられたVoice-Specific Attribute(VSA)が、アクセス要求に入力されます。

戻り値

なし

コマンド終了

コマンドが終了すると、スクリプトが ev_authenticate_done イベントを受け取ります。

aaa authenticate $account $password -a $avlistSend -s $method -l leg_incoming

使用上の注意

• 通常、認証には RADIUS サーバが使用されますが、AAA がサポートされる方法はすべて使用可能です。

• IVR TCL コマンドのデバッグ機能が有効な場合(P.2-10 の「スクリプトのテストとデバッグ」を参照)、課金番号とパスワードが表示されます。

• 課金番号と PIN は、E.164 最大長の 32 桁までで、それ以降は切り捨てられます。

• aaa authentication login および radius-server コマンドを使用して、多数の RADIUS パラメータを設定することができます。詳細については、

http://www.cisco.com/univercd/cc/td/doc/product/software/ios122/122cgcr/fsecur_c/index.htm にある『Cisco IOS Security Configuration Guide, Release 12.2』の「Authentication, Authorization, and

Accounting(AAA)」を参照してください。

• avSend を定義するには、P.3-71 の「set avsend」を参照してください。

• -l オプションが指定されないと、h323-conf-id 属性がアクセス要求に含まれない場合があります。

aaa authorizeaaa authorize コマンドは、RADIUS 認証または許可要求を送信し、TCL IVR スクリプトが RADIUSサーバからの応答に含まれている情報を取得できるようにします。このコマンドは、1 つの呼の間に複数回使用できます(たとえば、認証を実行し、続いて許可を実行する)。

このコマンドを aaa authenticate コマンドと組み合わせて使用すると、ユーザ認証に成功した後で、追加情報(宛先番号および発信者番号)を RADIUS サーバに提供できます。ユーザの認証と許可の両方に使用する場合、このコマンドのパラメータで使用される値は、それぞれの使用目的に対応す

るために変更されます。例示のように、パラメータをブランク(ヌル)のまま残すことができます。

構文

aaa authorize account password ani destination {legID | info-tag} [-a avlistSend] [-s servertag] [-g GUID]

Page 100: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-12TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

引数

• account:ユーザの課金番号。

• password:ユーザのパスワード(または PIN)。

• ani:発信者番号。

• destination:宛先電話番号。

• legID:着信コール レッグの ID。

• info-tag:1 つのレッグに直接マッピングされる情報タグ。情報タグの詳細については、第 4章「情報タグ」を参照してください。

• -a avlistSend:この引数は、既存の省略可能な [av-send] 引数に代わるものです。下位互換性があります。

• -s servertag:サーバ(またはサーバ グループ)の識別子。この値は、AAA 設定と同様に、method-list-name を示します。

aaa authentication exec {default | method-list-name} group group-name

デフォルト値は h323 です(下位互換)。

• -g GUID:許可操作で使用する GUID を指定します。

引数 account および password は、aaa authenticate コマンドの場合と同様に指定されます。引数destination および ani は、追加情報を外部サーバに提供します。

戻り値

なし

コマンド終了

コマンドが終了すると、スクリプトが ev_authorize_done イベントを受け取ります。

aaa authorize $account $password $ani $destination $legidaaa authorize $account "" $ani "" $legidaaa authorize $ani "" $ani "" $legid aaa authorize $account $pin $ani $destination $legid -a avList -s $method -t $template

使用上の注意

• 追加パラメータは、属性と値(AV)が対になって RADIUS サーバから戻されます。追加パラメータが戻されたかどうかを判別する場合は、aaa_avpair_exists 情報タグを使用します。続いてそのパラメータを読み取る場合は、aaa_avpair 情報タグを使用します。情報タグの詳細については、第 4章「情報タグ」を参照してください。

• IVR TCL コマンドのデバッグ機能が有効な場合(P.2-10 の「スクリプトのテストとデバッグ」を参照)、課金番号、パスワード、宛先が表示されます。

• 課金番号、PIN、および宛先番号は、E.164 最大長の 32 桁までで、それ以降は切り捨てられます。

• 指定のコール レッグが無効な場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

• aaa authentication login および radius-server コマンドを使用して、多数の RADIUS パラメータを設定することができます。詳細については、

http://www.cisco.com/univercd/cc/td/doc/product/software/ios122/122cgcr/fsecur_c/index.htm にある『Cisco IOS Security Configuration Guide, Release 12.2』の「Authentication, Authorization, and

Accounting(AAA)」を参照してください。

• avSend を定義するには、P.3-71 の「set avsend」を参照してください。

Page 101: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-13TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

call closecall close コマンドは、呼が終了したことを示し、次の呼を処理するためにスクリプトの実行インスタンスを解放します。このコマンドを実行すると、終了した呼に関連するリソースが解放されます。

会議レッグが存在する場合、その接続を破棄し、すべてのコール レッグを消去します。いずれかのコール レッグで leg collectdigits を実行中の場合、そのディジット収集プロセスが終了して呼が消去されます。

構文

call close [-r]

引数

-r:アプリケーションに関する登録を保持します。

戻り値

呼が引数 -r を使用して終了する場合、そのインスタンスで使用されていたリソースは解放されますが、subscribe コマンドで作成された登録は引き続き作動しており、通知によってセッションを開始できます。インスタンスが引数 -r を使用して終了した後、保持された登録の通知が着信すると、その通知を処理するために新しいインスタンスを生成できます。

(注) 新しいセッションが開始するのは、subscription open コマンドで送信された元の登録要求が、設定されたアプリケーションを notificationReceiver として指定した場合だけです。

コマンド終了

即時

proc act_Disconnected {} {call close -r}set FSM(any_state,ev_disconnected) “act_Disconnected, CALL_CLOSED”

proc act_UnsubscribeDone {} {call close } set fsm(any_state,ev_unsubscribe_done) "act_UnsubscribeDone SUBS_OVER"

使用上の注意

• call close コマンドは、呼の終了、およびスクリプトの終了を示します。このコマンドを実行すると、システムがリソースを解放します。-r オプションを指定しないで call close コマンドを呼び出すと、実行中のインスタンスを終了する前にサーバから登録が削除されます。

• call close -r コマンドを使用する場合には、必ず notificationReceiver、設定されたアプリケーション、またはアプリケーション ハンドルを指定してください。

Page 102: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-14TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

call lookupcall lookup コマンドは、指定されたパラメータに一致する呼について登録されているアプリケーションのアプリケーション ハンドルを取得します。

構文

call lookup matchParam

引数

• matchParam:このアプリケーションが登録されている呼を記述する呼パラメータを含む結合配列。次のパラメータがサポートされます。

- calledNum:一致条件となる、着呼の送信先番号の値。

- transferConsultID:一致条件となる、着呼のコール転送打診 ID の値。

戻り値

指定されたパラメータに一致する呼に別のアプリケーションが登録されている場合、アプリケー

ション ハンドルを戻します。指定されたパラメータに一致する呼にどのアプリケーションも登録されていない場合、ヌル ストリングを戻します。

コマンド終了

即時

set matchParam(calledNum) $calledDNISset matchParam(transferConsultID) $consultIDset handler [call lookup matchParam]

使用上の注意

呼の登録エントリが一致したと見なされるためには、指定されたすべての matchParam パラメータに一致する必要があります。アプリケーションで matchParam パラメータが指定されていない場合、スクリプトが終了してコンソールにエラーが出力され、呼は消去されます。

call registercall register コマンドは、アプリケーションが、これ以降、指定された呼の条件に一致する着呼のすべてを受信することを示すために使用されます。また、別のアプリケーションが、呼の条件と照合

することでこのアプリケーションのインスタンス ハンドルを検索して取得できるようにします。詳細については、call lookup コマンドを参照してください。

構文

call register matchParam [-i ]

引数

• matchParam:このアプリケーションが登録されている呼を記述する呼パラメータを含む結合配列。次のパラメータがサポートされます。

- calledNum:一致条件となる、着呼の送信先番号の値。

- transferConsultID:一致条件となる、着呼のコール転送打診 ID の値。

Page 103: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-15TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• -i:呼の自動ルーティングをディセーブルにします。このオプションを指定すると、アプリケーションは指定された呼パラメータに一致しても着呼を受信しません。これは、アプリケーショ

ンが、指定された呼パラメータに一致する呼の受け渡しを別のアプリケーションに実行させた

い場合に便利です。

戻り値

0:登録が成功しました。

1:登録が失敗しました。エントリが重複しています。

コマンド終了

即時

set matchParam(calledNum) $calledDNISset matchParam(transferConsultID) $consultIDset registerStatus [call register matchParam -i]

使用上の注意

• このコマンドは、同じ呼パラメータに一致する呼について別のアプリケーションがすでに登録

されている場合は失敗します。

• アプリケーションが call register コマンドの呼び出しに成功すると、それ以降、matchParam パラメータで指定されたパラメータすべてと一致する着呼が同一と見なされます。

• デフォルトで、一致した着呼はただちに登録されたアプリケーションにルーティングされ、こ

のアプリケーションは ev_setup_ind イベントを受け取ります。

• call register コマンドで -i パラメータが指定されていると、このアプリケーションに呼が自動でルーティングされることはありません。代わりに、アプリケーションは別のアプリケーション

から ev_handoff イベントを受け取れるようにしておく必要があります。詳細については、calllookup コマンドの「使用上の注意」を参照してください。

• アプリケーションで無効な引数が指定されている場合、スクリプトが終了してコンソールにエ

ラーが出力され、呼は消去されます。

• アプリケーションで matchParam パラメータが指定されていない場合、スクリプトが終了してコンソールにエラーが出力され、呼は消去されます。

call unregistercall unregister コマンドは、指定された呼の条件に一致する呼登録エントリを削除します。

構文

call unregister matchParam

引数

• matchParam:このアプリケーションが登録されている呼を記述する呼パラメータを含む結合配列。次のパラメータがサポートされます。

- calledNum:一致条件となる、着呼の送信先番号の値。

- transferConsultID:一致条件となる、着呼のコール転送打診 ID の値。

戻り値

0:登録解除が成功しました。

1:登録解除が失敗しました。エントリがありません。

Page 104: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-16TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

コマンド終了

即時

set matchParam(calledNum) $calledDNISset matchParam(transferConsultID) $consultIDset unregisterStatus [call unregister matchParam]

使用上の注意

• このコマンドは、アプリケーションが以前登録されていた呼を受信する必要がなくなった場合

に使用されます。このコマンドで登録解除するには、呼登録エントリが指定されたすべての

matchParam パラメータと一致する必要があります。

• アプリケーションで matchParam パラメータが指定されていない場合、スクリプトが終了してコンソールにエラーが出力され、呼は消去されます。

clockこのコマンドは、時間を表す文字列または値の取得や処理を行う操作のいずれかを実行します。

構文

clock option arg arg

引数

• option:次のオプションが有効です。

- clicks:高精度の時刻値をシステム依存の整数値として戻します。値の単位はシステムに依存しますが、CPU サイクル カウンタなど、システムで使用できる最も精度の高いクロックである必要があります。この値は、経過時間の相対的な測定だけに使用します。

- format clockValue -format string -gmt boolean:整数の時刻値を(通常は clock seconds、clockscan、または file コマンドの atime、mtime、ctime のいずれかのオプションで戻される)、人間が読み取れる形式に変換します。引数 -format がある場合、その直後の引数は日時の形式を記述する文字列です。フィールド記述子として、% の後にフィールド記述子文字を続けます。それ以外の文字はすべて結果にコピーされます。次のフィールド記述子が有効です。

- %%: % の挿入。

- %a:曜日の略称(Mon、Tue など)。

- %A:完全な曜日名(Monday、Tuesday など)。

- %b:月の略称(Jan、Feb など)。

- %B:完全な月の名前。

- %c:ロケール固有の日付と時刻。

- %d:日付(01 ~ 31)。

- %H:24 時間形式の時間(00 ~ 23)。

- %I:12 時間形式の時間(00 ~ 12)。

- %j:年間の通し日付番号(001 ~ 366)。

- %m:月番号(01 ~ 12)。

- %M:分(00 ~ 59)。

- %p:午前 /午後インジケータ。

- %S:秒(00 ~ 59)。

- %U:年間の通し週番号(01 ~ 52)。日曜日が 1 週間の始まり。

- %w:曜日番号(日曜日が 0)。

Page 105: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-17TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

- %W:年間の通し週番号(01 ~ 52)。月曜日が 1 週間の始まり。

- %x:ロケール固有の日付形式。

- %X:ロケール固有の時刻形式。

- %y:西暦年の下 2 桁(00 ~ 99)。

- %Y:西暦年(例:2002)。

- %Z:時間帯名。

さらに、システムによっては次のフィールド記述子がサポートされる場合があります。たとえ

ば、UNIX ではサポートされても、Microsoft Windows ではサポートされないことがあります。Cisco IOS ソフトウェアでは次のオプションをサポートしています。

- %D:%m/%d/%y 形式の日付。

- %e:先行ゼロなしの日付(1 ~ 31)。

- %h:月の略称。

- %n:改行文字の挿入。

- %r:%I:%M:%S %p 形式の時刻。

- %R:%H:%M 形式の時刻。

- %t:タブの挿入。

- %T:%H:%M:%S 形式の時刻。

引数 -format が指定されない場合、形式文字列「%a %b %d %H:%M:%S %Z %Y」が使用されます。引数 -gmt がある場合、その直後の引数はブールでなければなりません。true の場合は、時刻はグリニッジ標準時として形式設定されます。false の場合は、稼働環境の定義に従ってローカルの時間帯が使用されます。

• scan dateString -base clockVal -gmt boolean:dateString を整数のクロック値に変換します(clockseconds を参照してください)。clock scan コマンドは、標準時間帯ニーモニックを含む、実質的にあらゆる標準日付や標準時刻の文字列を解析して変換します。時刻だけが指定された場

合、現在の日付が想定されます。文字列に時間帯ニーモニックが含まれていない場合、引数

-gmt が true でない限りローカルの時間帯が想定されます。true の場合は、グリニッジ標準時に対する相対的な時刻としてクロック値が計算されます。

-base フラグが指定されている場合、その直後の引数に整数のクロック値が含まれている必要があります。この値にある時刻ではなく、日付だけが使用されます。これは、特定の日付の時刻

を判別したり、その他の日付の相対変換を実行したりするときに便利です。

dateString には、次の形式の指定値が 0 個以上含まれます。

- time:時刻。hh:mm:ss 子午線時間帯 または hhmm 子午線時間帯 のいずれかの形式を使用します。子午線が指定されていない場合、hh は 24 時間クロックに基づいて解釈されます。

- date:特定の月日。任意で年を追加できます。許容される形式は、mm/dd/yy、monthnamedd、yy、dd monthname yy and day、dd monthname yy です。デフォルトの年は現在の年です。年が 100 未満の場合、1900 が加算されます。

- relative time:現在時刻に対する相対的な時刻を指定します。形式には数値の単位が使用されます。許容される単位は、year、fortnight、month、week、day、hour、minute(または min)、second(または sec)です。単位は、単数形式または複数形式で指定できます(3 weeks など)。tomorrow、yesterday、today、now、last、this、next、ago の修飾子も指定できます。

実際の日付は、次の手順に従って計算されます。

- 最初に、絶対日付または絶対時刻、あるいはその両方が処理され、変換されます。その時

刻をベースとして使用し、曜日の指定が追加されます。

- 次に、相対的な指定が使用されます。日付または曜日が指定され、絶対時刻または相対時

刻が指定されない場合、午前 0 時が使用されます。

- 最後に、夏時間の時差を考慮した後、時間が正しく計算されるように補正が行われます。

• seconds:現在の日付と時刻をシステム依存の整数値として戻します。値の単位は秒であるため、相対時刻の計算に使用できます。この値は、通常「エポック」からの総経過時間として定

義されます。エポックは想定しないでください。

Page 106: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-18TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

戻り値

なし

コマンド終了

なし

set clock_seconds [clock seconds]set time [clock format [clock seconds] -format "%H%M%S"]set new_time [clock format [clock seconds] -format "%T"]set time_hh [clock format [clock seconds] -format "%H"]set date [clock format [clock seconds] -format "%Y%m%d"]set new_date [clock format [clock seconds] -format "%D"]set week [clock format [clock seconds] -format "%w"]

使用上の注意

なし

command exportcommand export コマンドは、TCL スクリプトが TCL プロシージャを登録またはエクスポートし、ダイナミック リンク メカニズムによって C 言語のコードから呼び出させるようにします。

構文

command export <command-string> <command-template>

引数

• <command-string>:ネイティブの名前空間以外からプロシージャを呼び出すのに必要な名前空間情報を含む、拡張された名前。

• <command-template>:TCL プロシージャが受け入れるパラメータ テンプレート。これにより、DLL システムで、この API を起動する C 言語のコードが、正しいタイプと個数のパラメータを呼び出せるようになります。この文字列の形式は x:x:x:x:x:x で、各 x は許可されるパラメータのタイプを示します。最初の x は、プロシージャの戻り値のタイプを示します。x の値を s にすると、string または char* パラメータを表すことができます。

戻り値

なし

コマンド終了

即時

command export ::Service::handle_event s

使用上の注意

なし

Page 107: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-19TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

command terminatecommand terminate コマンドは、以前に発行したコマンドを終了または停止します。

構文

command terminate [commandHandle]

引数

commandHandle:get last_command_handle 情報タグで取得されたハンドラに関連付けられたハンドラ ハンドル。leg setup コマンドは、この動詞を使用して終了できます。情報タグの詳細については、第 4章「情報タグ」を参照してください。

戻り値

このコマンドは、次のいずれかの値を戻します。

• 0(保留中):コマンド終了が開始されました。

• 1(終了):コマンド終了が完了しました。

• 2(失敗):コマンド終了の動詞が無効です。コマンド引数が誤っているか、該当する保留中のコマンドがないか、またはそのコマンドの終了がすでに開始されています。

コマンド終了

call setup 動詞に適用されると、call setup ハンドラが終了するときに ev_setup_done イベントが戻されます。このイベントのステータス コードは ls_015(アプリケーション要求によって終了)です。

command terminate [$commandHandle]

使用上の注意

最後のコマンド ハンドルは、別のコマンドが発行される前に取得する必要があります。

connection createconnection create コマンドは、2 つのコール レッグを接続します。

構文

connection create {legID1 | info-tag1} {legID2 | info-tag2}

引数

• legID1:接続する最初のコール レッグの ID。

• info-tag1:1 つのコール レッグに直接マッピングされる情報タグ。情報タグの詳細については、第 4章「情報タグ」を参照してください。

• legID2:接続する 2 つめのコール レッグの ID。

• info-tag2:2 つめのレッグに直接マッピングされる情報タグ。情報タグの詳細については、第 4章「情報タグ」を参照してください。

戻り値

このコマンドを実行すると、次の値が戻されます。

• connectionID:この接続に割り当てられた一意の ID。この ID は、connection destroy コマンドで必要です。

Page 108: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-20TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

コマンド終了

このコマンドが終了すると、スクリプトが ev_create_done イベントを受け取ります。

set connID [connection create $legID1 $legID2]

使用上の注意

• 指定のコール レッグが無効な場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

• 2 つの IP レッグ間の接続はサポートされていません。コマンドの実行が成功したように見えても、実際には機能しません。現在、スクリプト レベルでのエラーをキャプチャする手段がないため、これを行うと問題が発生するおそれがあります。したがって、このような接続を試みな

いことをお勧めします。

• 保留または音声の転送などの補足サービスが使用されている場合、コール レッグが破棄された後に、着信側で発信側からの再生中の音声やメディア プロンプトを聞くことができます。この問題を避けるため、デフォルトでイネーブルになっている voice-fastpath enable Cisco IOS コマンドをディセーブルにします。ディセーブルにするには、no voice-fastpath enable グローバル設定コマンドを使用します。

connection destroyconnection destroy コマンドは、2 つのコール レッグ間の接続を破棄します。

構文

connection destroy {connectionID | info-tag}

引数

• connectionID:connection create プロセスによってこの接続に割り当てられた一意の ID。

• info-tag:1 つの接続 ID に直接マッピングされる情報タグ。情報タグの詳細については、第 4章「情報タグ」を参照してください。

戻り値

なし

コマンド終了

このコマンドが終了すると、スクリプトが ev_destroy_done イベントを受け取ります。

connection destroy $connID

使用上の注意

• 個々のコール レッグは切断されず、コール レッグ間の接続のみ破棄されます。

• 保留または音声の転送などの補足サービスが使用されている場合、コール レッグが破棄された後に、着信側で発信側からの再生中の音声やメディア プロンプトを聞くことができます。この問題を避けるため、デフォルトでイネーブルになっている voice-fastpath enable Cisco IOS コマンドをディセーブルにします。ディセーブルにするには、no voice-fastpath enable グローバル設定コマンドを使用します。

Page 109: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-21TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

fsm definefsm define コマンドは、スクリプトにステート マシンを登録します。ステート マシンの指定には、該当する動作プロシージャに伴う状態イベントの移行をリストした TCL 配列を使用します。

構文

fsm define statemachine_array start_state

引数

• statemachine_array:ステート マシンを定義した配列。配列は、現在の状態と現在のイベントで示します。各エントリの値は、実行する動作関数と、次に移行する状態です。配列エントリの

形式は次のとおりです。

set statemachine_array(current_state,current_event) “actionFunction,next_state”

(注) 現在の状態およびイベントは、カッコで囲み、スペースを挿入せずにカンマで区切りま

す。結果の動作と次の状態は、引用符で囲み、カンマとスペースの両方またはいずれか

で区切ります。

• start_state:ステート マシンの開始状態。新しい呼が着信したときのスクリプトの状態です。

戻り値

なし

コマンド終了

即時

#----------------------------------# State Machine#----------------------------------set FSM(CALL_INIT,ev_setup_indication) “act_Setup,DEST_COLLECT” set FSM(DEST_COLLECT,ev_disconnect_done) “act_DCDone,CALL_SETTING”set FSM(DEST_COLLECT,ev_disconnected) “act_DCDisc,CALL_DISCONNECTING” set FSM(CALL_SETTING,ev_callsetup_done) “act_PCDone,CALL_ACTIVE”set FSM(CALL_SETTING,ev_disconnected) “act_PCDisc,CALL_SETTING_WAIT”

fsm define FSM CALL_INIT

fsm setstatefsm setstate コマンドを使用すると、動作プロシージャの終了後に FSM が移行する状態を指定できます。

構文

fsm setstate StateName

引数

• StateName:動作プロシージャの実行が終了した後に FSM が移行する状態。この状態は、FSMテーブルの現在の状態の移行で指定されている次の状態に優先します。

Page 110: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-22TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

戻り値

なし

コマンド終了

なし

#Check for DNIS, if there is DNIS you want to go to Call setup right awayset legID [infotag get evt_legs]set destination [infotag get leg_dnis $legID]if {destination != ““} {

callProceeding $legIDset callInfo(alertTime) 30call setup $destination callInfo leg_incoming#Moves to CALL_SETTING statefsm setstate CALL_SETTING

} else {leg setupack $legIDplaytone $legID TN_DIALset DCInfo(dialPlan) true# Assumption: As per the state machine moves to DIGIT_COLLECT}leg collectdigits $legID DCInfo

}

使用上の注意

• このコマンドを使用すると、FSM が移行する(FSM テーブルに指定されている状態と異なる)状態を動作プロシージャで指定することができます。

• このコマンドを使用しない場合、状態の移行は FSM テーブルに定義されているステート マシンに従います。

handoffアプリケーションの名前またはハンドルを受け渡します。

構文

handoff {appl | callappl} {legID | info-tag} [{legID2 | info-tag2} ...]{app-name | <handle>} [-s <argstring>]

引数

• appl | callappl:使用する特定の handoff コマンド。 appl には戻り値がなく、callappl にはあるのが唯一の違いです。

• legID | infotag:宛先に受け渡すコール レッグ ID。情報タグの詳細については、第 4章「情報タグ」を参照してください。

• app-name | <handle>:アプリケーションの名前またはハンドル。

• -s <argstring>:別のアプリケーション インスタンスに渡す情報。

戻り値

実行中でないインスタンスへの受け渡しの場合、「unavailable」メッセージが戻されます。

コマンド終了

即時

Page 111: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-23TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

set iid newappset sid customerset anum 123456handoff appl leg_incoming $iid -s “Here is a call: service=$sid; account number=$anum”

set iid newappset sid customerset anum 123456handoff callappl leg_incoming $iid -s “Here is a call: service=$sid; account number=$anum”

使用上の注意

• アプリケーション名は、call app voice <name> <url> 設定コマンドで設定された名前であり、アプリケーション ハンドルは mod_handle_service または evt_msg_source 情報タグによって戻されたハンドルです。

• このコマンドは、名前を指定することにより新しいインスタンスを作成できます。または、ハ

ンドルを指定することにより既存のインスタンスに受け渡しを試みることができます。ハンド

ルは特別な内部形式を持ち、システムがそれを解析してハンドルか名前かを判別できます。ハ

ンドルが示すインスタンスが存在しない場合、handoff コマンドは「unavailable」を戻します。スクリプトは失敗せず、引き続きコール レッグの制御を維持します。

• コール レッグを受信したアプリケーション インスタンスは、evt_handoff_argstring 情報タグを使用して引数文字列を取得できます。

• ハンドルが示すインスタンスが存在しない場合、handoff コマンドは「unavailable」を戻します。スクリプトは失敗せず、引き続きコール レッグの制御を維持します。

handoff returnさまざまなセッションから受信した別々のコール レッグ、または会議レッグのセットを同じセッションに戻します。

構文

handoff return legID [-s <argstring>]

引数

• legID:戻すコール レッグ(1 つまたは複数)。leg_incoming などの VAR_TAG を指定できます。

• -s <argstring>:別のアプリケーション インスタンスに渡す情報。

戻り値

実行中でないインスタンスへの受け渡しの場合、「unavailable」メッセージが戻されます。

コマンド終了

即時

set leg2 leg_incominghandoff return $leg2 -s “$sid; $anum”

使用上の注意

• コール レッグを受信したアプリケーション インスタンスは、evt_handoff_argstring 情報タグを使用して引数文字列を取得できます。

Page 112: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-24TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• さまざまなセッションから別々のコール レッグを受信する受け渡しの戻りでは、コール レッグごとに handoff return コマンドを別個に実行する必要があります。この場合には、handoffreturn leg_all コマンドは定義されていません。コール レッグ全体のセットが最初のレッグの戻り先に戻されますが、leg_all 情報タグでどのレッグが最初にリストされるかが定義されていません。

• 会議レッグ セットの受け渡しの戻りでは、両方のレッグを同じセッションに戻す必要があります。たとえば、セッションに session1 から leg1、session2 から leg2 が受け渡され、2 つのレッグで会議通信を行ったとします。この場合、次のコマンド handoff return $leg2

は、会議通信を行った両方のレッグをセッション 2 に戻します。

infotag getinfotag get コマンドは、コール レッグ、コール、スクリプト、またはシステムから情報を取得します。取得する情報は、指定する情報タグに基づきます。

構文

infotag get info-tag [parameter-list]

引数

• info-tag:取得する情報の種類を示す情報タグ。情報タグの詳細については、第 4章「情報タグ」を参照してください。

• parameter-list:(情報タグに基づいてオプションで指定)取得する情報をより詳細に定義したパラメータのリスト。

戻り値

要求した情報

コマンド終了

即時

set dnis [infotag get leg_dnis]set language [infotag get med_language]set leg_list2 [infotag get leg_legs]

使用上の注意

一部の情報タグは適用範囲を持ち、使用が限定されます。たとえば、ev_setup_done イベントの処理中に evt_dcdigits を呼び出すことはできません。つまり、leg setup コマンドの実行後、ev_setup_doneイベントがまだ戻されないうちに infotag get evt_dcdigits コマンドを実行することはできません。実行した場合、スクリプトが終了してエラーが出力されます。詳細については、第 4 章「情報タグ」を参照してください。

Page 113: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-25TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

infotag setinfotag set コマンドを使用すると、システムに情報を設定することができます。このコマンドでは、書き込み可能な情報タグのみ使用することができます。

構文

infotag set {info-tag [parameters]} value

引数

• info-tag:設定する情報。設定可能な情報タグのリストは、第 4章「情報タグ」に記載されており、「書き込み」と示されています。

• parameters:このパラメータのリストは、使用する情報タグに基づきます。

• value:設定する値。この値は、使用する情報タグに基づきます。

戻り値

なし

コマンド終了

即時

infotag set med_language prefix chinfotag set med_location ch 0 tftp://www.cisco.com/mediafiles/Chinese

leg alert指定されたレッグに警告メッセージを送信します。

構文

leg alert {legID | info-tag} [-p <prog_ind_value>] [-s <sig_ind_value>] [-g <GTDHandle>]

引数

• legID | info-tag:経過表示メッセージの送信先となる着信レッグを示します。

• -s <sig_ind_value>:呼の信号を示す値。この値はそのまま転送されます。

• -p <prog_ind_value>:呼の経過を示す値。この値はそのまま転送されます。

• -g <GTD handle>:以前に作成された GTD 領域へのハンドル。指定がない場合、デフォルトではリングバック信号が送信されます。

戻り値

なし

コマンド終了

即時

leg setupack leg_incomingleg alert leg_incoming -s 1–g gtd_progress_handleleg connect leg_incoming

Page 114: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-26TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

使用上の注意

• 呼を終了するアプリケーションは、着信レッグに接続してスイッチが応答する前に leg alert を挿入できます。

• leg alert コマンドを正常に実行するには、レッグが適切な状態でなければなりません。対象レッグに対して次の条件が確認されます。

- leg setupack がすでに送信されている。

- leg alert がまだ送信されていない。

• 指定したコール レッグがすでに接続状態の場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

leg calleridleg callerid コマンドを使用すると、アプリケーションは、Cisco CallManager Express(CME)環境で動作する Cisco IP 電話、および必要な発信者番号機能を持つアナログ FXS 電話に発信者番号情報を指定できます。

構文

leg callerid {legID | infotag} param

引数

• legID | infotag:宛先に受け渡すコール レッグ ID。

• param:指定された呼の発信者番号情報を含む結合配列。name と number の 2 つのパラメータを使用できます。Number は必須で、name は省略可能です。

戻り値

なし

コマンド終了

即時

set param(name) “Xee”set param(number) “4088531936”leg callerid param legXto

set param(name) “Xto”set param(number) “4088531645”leg callerid param legXee

set param(name) “John Smith”set param(number) “1234567890”leg callerid leg_outgoing param

使用上の注意

• 指定されたコール レッグが無効な場合、スクリプトが終了してコンソールにエラーが出力され、呼は消去されます。

• パラメータ(number)が指定されない場合、スクリプトが終了してコンソールにエラーが出力され、呼は消去されます。

Page 115: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-27TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• leg callerid コマンドが、コール ウェイティングのないテレフォニー コール レッグに使用されている場合(EFXS コール レッグは除く)、呼が接続すると発信者に電子音が聞こえることがあります。通常、この電子音はアナログ FXS 電話のコール ウェイティングを示すので、発信者を混乱させることがあります。この混乱を避けるため、leg callerid コマンドは EFXS コールレッグだけに使用してください。

• leg callerid コマンドを使用する前に、leg_type 情報タグを使用してコール レッグの種類を確認してください。

leg collectdigitsleg collectdigits コマンドは、指定のコール レッグでダイヤル プランとパターン リストの両方またはいずれかと照合してディジットを収集するようにシステムに命令します。

構文

leg collectdigits {legID | info-tag} [param [match]]

引数

• legID:ディジット収集をイネーブルにするコール レッグの ID。

• info-tag:1 つ以上のレッグに直接マッピングされる情報タグ。情報タグの詳細については、第4章「情報タグ」を参照してください。

• param:どのようにディジットを収集するかを定義したパラメータの配列。配列に定義できるパラメータは次のとおりです。

- param(abortKey):ディジット収集を中止するためのキー。デフォルトは none です。

- param(interDigitTimeout):ディジット間のタイムアウト値(秒)。デフォルトは 10 です。

- param(initialDigitTimeout):最初のディジットのタイムアウト値(秒)。デフォルトは 10 です。

- param(interruptPrompt):キーが押されたときにプロンプトを中断するかどうか。有効な値は true と false で、デフォルトは false です。

- param(terminationKey):ディジット収集を終了するキー。デフォルトは none です。

- param (consumeDigit):アプリケーションによって、着信コール レッグと発信コール レッグがブリッジされた後に、ユーザのダイヤルしたディジットがリモートの終端点にリレー

されないように阻止できます。

- param(dialPlan):収集したディジットをダイヤル プラン(または、1 が指定されている場合はパターン)と照合するかどうか。有効な値は true と false で、デフォルトは false です。

- param(dialPlanTerm):着信ディジットをダイヤル プランと照合し、照合に失敗した場合でも、終了キーが押されるかディジットのタイムアウトが発生するまで、ディジット収集を

続けます。有効な値は true と false で、デフォルトは false です。

- param(maxDigits):戻す前に収集する最大ディジット数。

- param(enableReporting):戻すときにディジット レポートをイネーブルにするかどうか。有効な値は true と false で、デフォルトは false です。ディジット レポートをイネーブルにすると、キーが押されて放されるたびにスクリプトが ev_digit_end イベントを受け取ります。ディジット レポートがイネーブルになっていると、スクリプトが定期的に ev_digit_end イベントとディジット T を受け取ることもあります。これは、ディジット間タイムアウトを示すもので、通常スクリプトでは無視できます。

- param(ignoreInitialTermKey):ディジット収集における最初のキーとして、終了キーをディセーブルにするか、または無視します。デフォルトは false です。

• match:leg collectdigits コマンドで何を検索するかを指定したパターン リストを含む配列変数。パターン文字列内の %D 文字列は、対応するディジットをダイヤル プランと照合します。

Page 116: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-28TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

戻り値

なし

コマンド終了

コマンドが終了すると、スクリプトが ev_collectdigits_done イベントを受け取ります。イベントには正常終了コードまたは異常終了コードと収集したディジットが含まれます。正常終了コードおよび

異常終了コードの詳細については、P.5-6 の「ステータス コード」を参照してください。

例 1:ディジットを収集してダイヤル プランと照合します。

set params(interruptPrompt) trueset params(dialPlan) trueleg collectdigits $legID params

例 2:ディジットを収集してパターンと照合します。

set pattern(1) "99.....9*"set pattern(2) "88.....9*"leg collectdigits $legID params pattern

例 3:ディジットを収集し、パターン プレフィックスを使用してダイヤル プランと照合します。

set pattern(1) "#43#%D"leg collectdigits $legID params pattern

例 4:consumeDigit パラメータを使用して、ディジットがリモートの終端点にリレーされないようにする例です。TCL アプリケーションは、ダイヤルされたディジットごとに ev_digit_end イベントを受け取ります。これらのディジットが別のコール レッグにリレーされることはありません。

set param(enableReporting) trueset param(consumeDigit) trueleg collectdigits {legID|info-tag} param

使用上の注意

• 指定のコール レッグが無効な場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

• デフォルトでは、すべてのコール レッグに対してディジット レポートが無効になっているため、スクリプトはディジットを受け取りません。スクリプトが各ディジット イベントを受け取るようにするには、leg collect digits コマンドを使用して parm(enableReporting)に TRUE を設定することによって、ディジット レポートを有効にする必要があります。

• enableReporting に TRUE を設定すると、コマンドの終了後もディジット レポートが有効になります(スクリプトは指定されたディジットを受け取ることができます)。ディジット レポートは、スクリプトでディジットを収集する場合や長い間押された #を検索する場合に便利です。

• ディジット レポートを有効にするためだけに leg collectdigits コマンドを発行し、ディジットまたはパターンの収集を行わない場合、レポートを有効にするとすぐにコマンドが終了します。

スクリプトは、ev_collectdigits_done イベント、およびステータス コード cd_009 を受け取ります。

• ディジット収集の最初のタイムアウトは 10 秒で、ディジット間のタイムアウトも 10秒です。ディジット収集がタイムアウトになると、タイムアウト ステータス コードと共に、これまで収集したディジットが戻されます。音声ポートのタイムアウト値を変更するには、timeoutsinitial および timeout interdigit コマンドを使用します。

• consumeDigit パラメータは true または false(デフォルト)に設定できます。

- consumeDigit パラメータを true または false に設定しても、コール レッグがブリッジされていない場合は、ディジット収集には影響がありません。

Page 117: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-29TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

- consumeDigit パラメータを true に設定しても、ネゴシエートされた DTMF リレーが rtp-nte、cisco-rtp、またはインバンド音声の場合は、ダイヤルされたディジットがリモートの終端点にリレーされるのを阻止することはありません。

• leg collectdigits に複数の照合条件が指定された場合、照合の優先順位は maxDigits、dialPlan、パターンの順になります。

優先される maxDigits は特殊なパターンと見なされます。

この特殊なパターン照合が終了し、次のいずれかの状況になった場合、照合は成功したと見な

されます。

- ユーザが最大ディジット数をダイヤルする。

- ユーザが終了キーを押す(設定されている場合)。

- ユーザが数ディジットをダイヤルすると、タイムアウトが発生する。

この状況が発生すると、cd_005 ステータス コードがレポートされます。P.5-7 の「ディジット収集ステータス」 を参照してください。

• ディジットがパターン プレフィックスを使用して dialPlan と照合する場合、コマンドは一致したパターン、cd_005 ステータス コードを戻します。P.5-7 の「ディジット収集ステータス」 を参照してください。

• %D dialPlan パターン適合文字列は、パターンの最後でのみ使用できます。%D がパターンの別の位置に指定されている場合、スクリプトが終了してコンソールにエラーが送信され、呼は消

去されます。

• %D パターンが指定され、かつ dialPlan パラメータが TRUE に設定されている場合、コマンドは、ダイヤル プラン照合が成功すると、一致したダイヤル プラン、cd_004 ステータス コードを戻します。P.5-7 の「ディジット収集ステータス」 を参照してください。

evt_dcpattern 情報タグと evt_dcdigits 情報タグを使用して、一致したパターンとディジットを取得できます。

leg connectleg connect コマンドは、シグナリング レベルの CONNECT メッセージを着信コール レッグに送信します。

構文

leg connect {legID | info-tag }

引数

• legID:接続シグナリング メッセージの送信先となる着信コール レッグの ID。

• info-tag:1 つ以上の着信レッグに直接マッピングされる情報タグ。情報タグの詳細については、第 4章「情報タグ」を参照してください。

戻り値

なし

コマンド終了

即時

leg connect leg_incomingleg connect $legID

Page 118: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-30TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

使用上の注意

• 指定したコール レッグが着信コール レッグでない場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

• 指定の情報タグが複数の着信コール レッグにマッピングされる場合、呼接続メッセージは、まだ呼接続メッセージを受け取っていないすべての着信コール レッグに送信されます。

• 指定したコール レッグの状態が原因でコール接続メッセージを受信できない(たとえば、レッグの状態が disconnecting である)場合、コマンドはエラーになります。

• 指定したコール レッグがすでに接続状態の場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

(注) 着信 ISDN コール レッグの場合、接続メッセージの前に setupack、proceeding、または alert メッセージを送信する必要があります。送信しないと、スクリプトは ev_disconnected イベントを受け取り、着信レッグは切断されます。

leg consult abandonこのコマンドを使用して、指定されたレッグに対してコール転送打診放棄要求を送信します。基盤

となるプロトコルに応じて、ゲートウェイが終端点にメッセージを送信する場合もあります。通常、

終端点は状態を消去し、コール転送が失敗したことを示すエラー応答をローカルに生成します。

構文

leg consult abandon legID

引数

legID:転送先の終端点へのコール レッグの ID。

戻り値

このコマンドは、次のいずれかの値を戻します。

• 0(成功):コール レッグに対して放棄メッセージが正常に送信されました。

• 1(無効な状態で失敗):このコール レッグがこれまでに送信した打診要求メッセージはありません。打診要求メッセージを送信したことのないレッグに対して、打診放棄メッセージを送信

すると無効になります。

• 2(プロトコル エラーで失敗):プロトコル エラーにより放棄メッセージを送信できませんでした。

leg consult abandon $targetlegset retcode [leg consult abandon $consultLeg]

コマンド終了

即時

関連イベント

なし

Page 119: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-31TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg consult responseこのコマンドを使用して、指定されたレッグに対してコール転送打診 ID 応答を送信します。打診ID は自動的に生成されます。基盤となるプロトコルに応じて、ゲートウェイは生成された打診 IDを含むメッセージを指定されたレッグに対して送信するか、このコマンドを無視します。

構文

leg consult response legID {[-i consultID][-t transferDestNum] | -c 'xxx'}

引数

• legID:転送元の終端点へのコール レッグの ID。

• -i consultID:打診 ID(省略可能)。

• -t transferDestNum:転送先の番号。転送先がローカルで別の番号に転送される場合は、ここに迂回先の番号を使用することもできます。指定されない場合、legID に対応する着信コール レッグの calledNumber が使用されます。該当する発信コール レッグが存在しない場合、legID のcalledNumber が使用されます(省略可能)。

• -c 'xxx':'xxx' は打診エラー コードです(省略可能)。

- 001:打診エラー

- 002:打診拒否

戻り値

コマンドが終了すると、スクリプトが ev_consultation_done イベントを受け取ります。

leg consult response leg_incoming -i $tcl_consultidleg consult response $xorCallLeg -t $newTargetNumleg consult response leg_incoming -c 2

コマンド終了

即時

関連イベント

ev_consult_request

leg consult requestこのコマンドを使用して、指定されたレッグに対してコール転送打診 ID 要求を送信します。基盤となるプロトコルに応じて、ゲートウェイが終端点にメッセージを送信するか、またはゲートウェ

イ自身が ID を生成します。

構文

leg consult request legID

引数

legID:転送先の終端点へのコール レッグの ID。

戻り値

なし

Page 120: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-32TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg consult request $targetleg

コマンド終了

コマンドが終了すると、スクリプトが ev_consult_response イベントを受け取ります。

関連イベント

ev_consult_response

leg disconnectleg disconnect コマンドは、接続に関与しない 1 つ以上のコール レッグを切断します。

構文

leg disconnect {legID | info-tag} [-c cause_code] [-g <gtd_handle>] [-i <iec>]

引数

• legID:コール レッグの ID。

• info-tag:1 つ以上のコール レッグにマッピングされるコール レッグ情報タグ。情報タグの詳細については、第 4章「情報タグ」を参照してください。

• cause_code:整数の ISDN 切断原因コード。形式は di-xxx または xxx のみで、xxxは ISDN 原因コードです。

(注) TCL IVR では cause_code を検証しません。非 DID の呼については、次の条件が両方とも当てはまる場合、オプションの cause_code パラメータは着信テレフォニー レッグに影響しません。

1. leg setupack コマンドがこのレッグに対して発行されている。2. レッグがまだ接続状態に達していない。

この場合、cause_code パラメータは無視され、レッグは原因コード 0x10「Normal CallClearing」を使用して切断されます。

• -g <gtd_handle>:以前に作成された GTD 領域へのハンドル。

• -i <iec>:切断の理由として記録する内部エラー コード(IEC)を指定します。有効な値については、P.4-44 の「set iec」を参照してください。

戻り値

なし

コマンド終了

コマンドが終了すると、スクリプトが ev_disconnect_done イベントを受け取ります。

Page 121: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-33TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg disconnect leg_incomingleg disconnect leg_outgoingleg disconnect leg_allleg disconnect 25leg disconnect $callIdleg disconnect [info-tag get evt_legs]leg disconnect leg_incoming -i media_done_errleg disconnect leg_incoming 47 -i accounting_conn_err

使用上の注意

• 指定したコール レッグが無効な場合や、指定したコール レッグのいずれかが接続に関与する(会議通信を行っている)場合、スクリプトが終了してエラーが出力され、呼はクローズします。

• スクリプトは、ev_disconnected イベントを受け取ると、leg disconnect コマンドでレッグを消去するまで 15 秒間待ちます。15 秒後にタイマーが時間切れになると、スクリプトは終了し、コンソールにエラー メッセージが表示されます。このため、切断後にレッグが消去されていないという事態が避けられます。

• leg disconnect -<iec> コマンドで IEC を指定して、さらに set iec 情報タグを使用すると、コールレッグに関連付けられる IEC が重複します。

leg disconnect_prog_indleg disconnect_prog_ind コマンドは、切断メッセージを指定された経過インジケータ値と一緒に指定されたレッグに送信します。

構文

leg disconnect_prog_ind {legID | info-tag} [-c <cause_code>][-p <prog_ind value>]

引数

• legID:コール レッグの ID。

• info-tag:1 つ以上のコール レッグにマッピングされるコール レッグ情報タグ。情報タグの詳細については、第 4章「情報タグ」を参照してください。

• -c<cause_code>:整数の ISDN 切断原因コード。形式は di-xxx または xxx のみで、xxxは ISDN原因コードです。

• -p <prog_ind value>:呼の経過を示す値。有効な値を以下に示します。

- 1:PROG_NOT_END_TO_END_ISDN

- 2:PROG_DEST_NON_ISDN

- 4:PROG_RETURN_TO_ISDN

- 8:PROG_INBAND

- 10:PROG_DELAY_AT_DEST

戻り値

なし

コマンド終了

即時

leg disconnect_prog_ind leg_incoming -c19 -p8

Page 122: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-34TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

使用上の注意

• 呼を終了するアプリケーションは、着信レッグにアナウンスを再生する前に、

leg disconnect_prog_ind を挿入できます。

• このコマンドは通常、接続状態に達する前の着信コール レッグで使用されます。発信コールレッグにこのコマンドを使用すると、エラーになるか、または PSTN スイッチが終了することにより予期しない動作が発生する可能性があります。すでに接続している着信コール レッグにこのコマンドを使用すると、エラーになるか、PSTN スイッチを発信することにより予期しない動作が発生する可能性があります。

leg facilityleg facility コマンドは、ファシリティ メッセージを発信します。

構文

leg facility {legID | info-tag} {-s ss_Info | -g gtd_handle | -c}

引数

• legID:ファシリティ メッセージの送信先となるコール レッグ ID。

• info-tag:1 つ以上のコール レッグにマッピングされるコール レッグ情報タグ。情報タグの詳細については、第 4章「情報タグ」を参照してください。

• -s ss_Info:ファシリティ メッセージを作成するためにスタックに渡されるパラメータを含む配列。

• -g gtd_handle:指定された GTD ハンドルを使用して新しいファシリティを送信します。

• -c:受信したファシリティ メッセージをそのまま転送します。受信したファシリティ メッセージを会議コール レッグに転送する場合に使用します。前のファシリティ メッセージに含まれている生メッセージが、新しいファシリティ メッセージにコピーされて更新されます。

戻り値

なし

コマンド終了

即時

set ssInfo (ssID) “ss_mcid”leg facility leg_incoming -s ssInfo

object create gtd gtd_inr INRobject append gtd gtd_inr iri.1.inf 1leg facility leg_incoming -g gtd_inr

使用上の注意

-s ss_info、-g gtd_handle、-c のいずれかのオプションを必ず指定してください。

-s ss_Info オプションを使用する場合、必須パラメータの ssID を設定してサービス タイプを指示する必要があります。迷惑呼の識別(MCID)メッセージを示す値は ss_mcid です。

Page 123: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-35TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg proceedingleg proceeding コマンドは、呼処理メッセージを着信コール レッグに送信します。ゲートウェイは、このメッセージを(コール レッグに基づいて)適切なプロトコル メッセージに変換して発信者に送信する役割を果たします。

構文

leg proceeding {legID | info-tag}

引数

• legID:着信コール レッグの ID。

• info-tag:1 つ以上のコール レッグにマッピングされるコール レッグ情報タグ。情報タグの詳細については、第 4章「情報タグ」を参照してください。

戻り値

なし

コマンド終了

即時

leg proceeding leg_incoming

使用上の注意

• 指定したコール レッグが着信コール レッグでない場合、このコマンドによって呼が消去されます。

• leg_incoming が指定され、着信コール レッグが複数ある場合、まだ呼処理メッセージを受信していないすべての着信コール レッグに呼処理メッセージが送信されます。

• 指定したコール レッグの状態が原因で呼処理メッセージを受信できない(たとえば、コールレッグの状態が disconnecting である)場合、コマンドはエラーになります。

• 呼処理メッセージがすでに送信されている場合、このコマンドは無視されます。IVR のデバッグ機能が有効な場合(P.2-10 の「スクリプトのテストとデバッグ」を参照)、コマンドが無視された旨が表示されます。

• 指定したコール レッグがすでに接続状態の場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

leg progress指定されたレッグに経過表示メッセージを送信します。

構文

leg progress {legID | info-tag} [-p <prog_ind_value>] [-s <sig_ind_value>] [-g <GTDHandle>]

引数

• legID | info-tag:経過表示メッセージの送信先となる着信レッグを示します。

• -s <sig_ind_value>:呼の信号を示す値。この値はそのまま転送されます。

• -p <prog_ind_value>:呼の経過を示す値。有効な値を以下に示します。

- 1(PROG_NOT_END_TO_END_ISDN)

- 2(PROG_DEST_NON_ISDN)

Page 124: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-36TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

- 4(PROG_RETURN_TO_ISDN)

- 8(PROG_INBAND)

- 10(PROG_DELAY_AT_DEST)

• -g <GTD handle>:以前に作成された GTD 領域へのハンドル。

戻り値

なし

コマンド終了

即時

leg progress leg_incoming -p 8 –g gtd_progress_handle

使用上の注意

• 呼を終了するアプリケーションは、着信レッグにアナウンスを再生する前に、leg progress を挿入できます。

• 指定したコール レッグがすでに接続状態の場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

(注) 着信 ISDN コール レッグの場合、接続メッセージの前に setupack、proceeding、または alert メッセージを送信する必要があります。送信しないと、スクリプトは ev_disconnected イベントを受け取り、着信レッグは切断されます。

leg senddigit指定されたコール レッグに対してディジットを送信します。

構文

leg senddigit {legID | info-tag} digit [-t duration]

引数

• legID:ディジットを送信するコール レッグの ID。

• info-tag:1 つ以上のレッグに直接マッピングされる情報タグ。情報タグの詳細については、第4章「情報タグ」を参照してください。

• digit:1 つのディジット {0 ~ 9、A ~ D、*、#} を指定します。

• -t duration:ディジットの持続時間をミリ秒で指定します。

戻り値

なし

例:

set digit 5set duration 55leg senddigit leg_outgoing $digitorleg senddigit leg_outgoing $digit -t $duration

Page 125: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-37TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

使用上の注意

• leg senddigit 動詞に指定できるのは、1 ディジットだけです。複数ディジットが指定されていると、構文エラーが生成されます。スクリプトが終了してコンソールにエラー メッセージが表示され、呼は消去されます。

• 指定するディジットは、0 ~ 9、A ~ D、*、# のいずれかである必要があります。これ以外が指定されると、ディジットは送信されず、デバッグ メッセージが出力されます。

• デフォルトのディジット持続時間は 100 ミリ秒です。ディジット持続時間が指定されない場合は、デフォルト値が使用されます。

• 最小のディジット持続時間は 40 ミリ秒、最大のディジット持続時間は 4 秒です。最大持続時間は、長い間押された # に必要な持続時間の約 2 倍の長さです。指定された持続時間が 40 ミリ秒未満か、4 秒を超える場合、ディジット持続時間はデフォルト値にリセットされ、デバッグ メッセージが出力されます。

• DTMF リレー H245 英数字モードの転送では、ディジット持続期間は転送されません。ディジット持続期間が TCL 動詞で指定されていて、ネゴシエートされた DTMF リレー モードの転送がH245 英数字の場合、ディジット持続期間は使用されません。

• leg senddigit 動詞が実行され、ネゴシエートされた DTMF リレーが rtp-nte または cisco-rtp の場合、ディジット送信は失敗します。

• ディジットのインバンド送信はサポートされていません。leg senddigit が実行され、DTMF リレーがネゴシエートされていない場合、ディジット送信は失敗します。

leg sendhookflash指定されたコール レッグに対してフックフラッシュを送信します。

構文

leg setupack {legID | info-tag}

引数

• legID:フックフラッシュが生成されるコール レッグの ID。

• info-tag:1 つ以上のレッグに直接マッピングされる情報タグ。情報タグの詳細については、第4章「情報タグ」を参照してください。

戻り値

なし

使用上の注意

• フックフラッシュは、シグナリング タイプとプラットフォームでサポートされていれば、IPコール レッグ、FXO ポート、および T1 CAS トランクに生成できます。

• 制約事項:

- DTMF リレーがネゴシエートされていない場合、またはネゴシエートされた DTMF リレーが rtp-nte または cisco-rtp の場合、フックフラッシュ送信は失敗します。

- フックフラッシュのインバンド送信はサポートされていません。

leg setupleg setup コマンドは、指定した宛先番号へ電話をかけるようにシステムに要求します。

Page 126: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-38TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

構文

leg setup {destination | array-of-destinations} callinfo [legID | info-tag] [-g <GTDHandle>] [–d <dialpeerHandle>]

引数

• destination:宛先電話番号。

• array-of-destinations:複数の宛先電話番号を含む配列。

• callinfo:どのように電話をかけるかを指定したパラメータを含む配列。有効な値については、set callinfo コマンドを参照してください。

• legID:呼の確立に成功した場合に会議通信するコール レッグ ID。コール転送の場合、これは通常、ev_transfer_request イベントを受信したレッグと会議通信をしていたコール レッグです。このレッグは、どの会議通信にも参加していないレッグである必要があります。

• info-tag:1 つの着信レッグに直接マッピングされる情報タグ。情報タグの詳細については、第4章「情報タグ」を参照してください。

• -g <GTD handle>:以前に作成された GTD 領域へのハンドル。

• -d <dialpeerHandle>:確立に使用するダイヤル ピア ハンドルを指定します。

戻り値

なし

コマンド終了

コマンドが終了すると、スクリプトが ev_setup_done イベントを受け取ります。

set callInfo(alertTime) 25leg setup 9857625 callInfo leg_incomingset destinations(1) 9787659set destinations(2) 2621336leg setup destinations callInfo leg_incoming

set dest leg_outgoingset dialpeer_handle new_handleleg setup $dest callInfo –d $dialpeer_handle

set setupSignal(Subject) “Hotel Reservation”set setupSignal(Priority) “urgent”set setupSignal(X-ReferenceNumber) “1234567890”set callInfo(protoHeaders) setupSignalset destination “4085551234”leg setup destination callInfo leg_incoming

使用上の注意

• 指定のコール レッグが無効な場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

• 1 つの宛先番号が指定されている場合、leg setup コマンドはその宛先番号に電話をかけます。宛先の電話が鳴ると、着信コール レッグが(適宜、インバンドまたはアウトバンドで)呼び出されます。宛先の電話に誰かが出ると呼が接続され、leg setup コマンドが ev_setup_done イベントを戻します。ダイヤル ピア経由で呼が宛先まで到達できない場合、leg setup は次々と、その宛先に適合するダイヤル ピアをすべて試みます(これを「ロータリー ハンティング」といいます)。この時点で、leg setup コマンドはエラーになり、エラー コードが出力されます(呼び出しタイムアウトのステータス コードと共に ev_setup_done イベントが戻されます)。エラーコードの詳細については、P.5-6 の「ステータス コード」を参照してください。

Page 127: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-39TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• 宛先番号が複数指定されている場合、leg setup コマンドは指定したすべての番号に同時に電話をかけます(すべての宛先の電話が同時に鳴ります)。最初の宛先の電話に誰かが出ると、そ

の呼が接続され、残りの呼は切断されます(これを「ブラスト コーリング」 といいます)。このため、ev_setup_done イベントを受け取ったとき、infotag get evt_legs 情報タグ コマンドを発行すると、着信レッグが戻されます。

• スクリプトでは、それぞれ異なるコール レッグ ID で複数の leg setup コマンドを起動することができます。特定のコール レッグ ID で呼の確立メッセージが発行されると、最初のコマンドが終了するまで、このコール レッグ ID で別の leg setup コマンドを発行することはできません。

• 呼の確立を実行したときに、そのコール レッグに対してプロンプトが再生中の場合、leg setupが起動して宛先の電話が鳴ります。ただし、プロンプトの再生が終了するまで、発信者にはリ

ング トーンが聞こえません。プロンプトの再生中に宛先の電話に誰かが出ると、プロンプトが終了して呼も終了します。

• 指定のコール レッグが無効な場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

• leg setup コマンドで使用するレッグ ID では、会議通信を行わないでください。会議通信を行った場合、コマンドがエラーになり、スクリプトが終了します。

• コマンドが正常終了すると、次の ID が戻されます。

- legID:接続に関与する 2 つのレッグに割り当てられた一意の ID。着信レッグの ID は、着信レッグとして渡したものでないことがあります。この場合、渡した着信レッグは消去さ

れ、新しい着信レッグで会議通信が行われた可能性があります。これは例外のケースで、

補足サービス処理や H.450 サービスが原因で発生します。

- connectionID:この接続に割り当てられた一意の ID。この ID は、connection destroy コマンドで必要です。

上記の情報は、evt_legs および evt_connections 情報タグによって取得することができます。情報タグの詳細については、第 4章「情報タグ」を参照してください。

このコマンドがエラーになると、何も戻さないか、または 1 つのレッグ ID を戻します。着信レッグ ID が戻される場合は、渡された着信レッグが切断された可能性があります。これは例外のケースで、補足サービス処理や H.450 サービスが原因で発生します。

• スクリプトで command terminate 動詞を発行して、保留中の呼の確立を終了することができます。詳細については、command terminate のセクションを参照してください。

• leg setup は、[legID | info-tag] パラメータでダイアログが実行されているレッグを使用できません。

• [legID | info-tag] は省略可能なパラメータです。TCL IVR アプリケーションでは、着信レッグを参照することなくレッグの確立を開始できます。これは、コールバック アプリケーションなどのアプリケーションでは便利な機能です。レッグの確立が正常に終了したら、アプリケーショ

ンは connection create 動詞を使用して新しいレッグを既存のレッグに接続できます。

• destinationNum がない場合、<destination> が、発信ダイヤル ピアの選択に使用されます。destinationNum と <destination> の両方がある場合、<destination> が発信ダイヤル ピアの選択に使用されますが、destinationNum はシグナリング フィールドへの入力に使用されます。

• destinationNum や originationNum に URL が含まれている場合、アプリケーションは URL にE.164 が含まれていれば抽出し、calledNumber および callingNumber フィールドにそれぞれ直接保存します。上記以外の場合、これらは通常どおりに動作します。これらのフィールドで使用

できるのは、E.164 または sip:/tel: の URL だけです。別の URL 形式が使用された場合、アプリケーションは Unsupported Format エラーをスローします。

• SIP メッセージ本文は、渡したり、アクセスしたりできません。

• 複数の SIP ヘッダーを TCL に設定する方法の例として次のようなものがあります。set <array_name_xxx>(<header name>) <“header value”>set <array_name_xxx>(<another header name>) <"header value">...set callinfo(protoHeaders) <array_name_xxx>

Page 128: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-40TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

たとえば、次のヘッダーを設定して呼を確立するときに送信するとします。

From = [email protected] = [email protected] = "Hello"

TCL スクリプトではこれを次のように行うことができます。# The array name “headers” can be any name you wantset headers (From) "[email protected]"set headers (To) "[email protected]"set headers (Subject) "Hello"# Here, we set the array “headers” in the callInfo array, mimicking a two-dimensional arrayset callInfo(headers) headers

続いて、これを呼の確立で次のように送信します。

leg setup $dest callinfo leg_incoming

leg setup_continueleg setup_continue コマンドを使用すると、確立中にアプリケーションがシステムと対話できます。このコマンドを使用して、終端点アドレスへの確立を開始するか、イベントによる呼処理の中断後

にシステムが操作を続行するように指示します。通常、アプリケーションは、アドレス解決の結果

または呼信号を受け取った後にこの動詞を使用します。

(注) アプリケーションは、「handler terminate」動詞を使用して呼の確立を停止できます。

構文

leg setup_continue <command handle> [-a <endpointAddress | next>] [-d <dialpeerHandle>] [-g <GTDHandle>] [-c <callInfo>]

引数

• command handle:get evt_last_event_handle 情報タグから受け取ったコマンド ハンドラ。

• -a <endpointAddress|next>:システムに、特定の終端点アドレスまたは次の終端点アドレスを使用して確立を開始するように指示します。初期アドレスは通常 1 次終端点のアドレスです。アプリケーションで、アドレス解決の結果を受け取った後に「next」を指定した場合、最初の(1次)終端点のアドレスが使用されます。

• -d <dialpeerHandle>:確立に使用するダイヤル ピア ハンドルを指定します。

• -g <GTD handle>:以前に作成された GTD 領域へのハンドル。

• -c <callInfo>:この省略可能なパラメータが使用された場合、アプリケーションは終端点確立に使用するために callInfo 配列を渡します。次のパラメータを終端点の確立ごとに更新できます。

- originationNum

- originationNumToN

- originationNumPI

- originationNumSI

詳細については、P.3-72 の「set callinfo」を参照してください。

戻り値

なし

Page 129: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-41TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

コマンド終了

このコマンドを使用して終端点アドレスへの確立を開始した場合、終了時にスクリプトは、確立が

成功すれば ev_setup_done イベント、失敗すれば ev_disconnect イベントを受け取ります。

コマンドを使用し、イベントによる呼処理の中断後にシステムが操作を続行するように指示した場

合、コマンドはただちに終了します。

leg setup_continue $commandHandle -a next –g gtd_alert_handle

使用上の注意

• レッグの確立に関連付けられたコマンド ハンドルを取得するために、アプリケーションで getevt_last_event_handle 情報タグを使用できます。

• アドレス解決が ar_000 以外のステータス コードで失敗した場合、leg setup_continue を使用しないでください。この場合、アプリケーションが別のダイヤル ピアを使用して新しい leg setup コマンドを発行する可能性があります。

• callInfo 構造の別のフィールドが設定されていても、無視されます。

• 新しい callInfo パラメータ値は、変更されるまで後続の終端点の確立に引き続き使用されます。

• ev_address_resolved イベントを代行受信した後に呼の確立を続けるには、-a <endpointAddress |next> を指定する必要があります。leg setup_continue にコマンド ハンドルだけが指定されている場合、システムでは、逆方向シグナリング イベントの代行受信後に、呼の確立が継続されているものと想定されます。

leg setupackleg setupack コマンドは、指定した着信コール レッグに対して確立通知メッセージを送信します。

(注) 実際は、ISDN ステート マシンが確立通知を受け取ると着呼を接続します。

構文

leg setupack {legID | info-tag}

引数

• legID:受け渡されるコール レッグの ID。

• info-tag:1 つ以上の着信レッグにマッピングされるコール レッグ情報タグ。情報タグの詳細については、第 4章「情報タグ」を参照してください。

戻り値

なし

コマンド終了

即時

leg setupack leg_incoming

Page 130: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-42TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

使用上の注意

• TCL IVR アプリケーションで leg setupack コマンドを使用できるのは 1 回だけです。このコマンドを複数回使用したアプリケーションは中止されます。

• 指定したコール レッグが着信コール レッグでない場合、このコマンドによってコールが消去されます。

• leg_incoming が指定され、着信コール レッグが複数ある場合、まだ通知されていないすべてのコール レッグに確立通知が送信されます。

• leg setupack コマンドが着信 ISDN コール レッグに適用されると、基盤となる ISDN プロトコルスタックが proceeding メッセージ、続いて connect メッセージを発信側の ISDN スイッチに送信します。これは、音声アプリケーションがディジットを収集できるように音声パスを確立する

ために行われます。

• 指定されたコール レッグは、初期呼状態でなければなりません。setupack、proceeding、progress、alerting、connect のいずれかのメッセージが指定されたコール レッグに対してすでに送信されている場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

leg tonedetectleg tonedetect コマンドは、呼の間、特定トーンの検出をイネーブルまたはディセーブルにします。

トーン検出がイネーブルになっていて、トーンが検出された場合、an ev_tone_detected イベントが生成されます。このイベントは、<Number Cycles> から算出された最小必要時間が経過した場合にだけ生成されます。要求されたトーン タイプごとに生成されるイベントは最大でも 1 つです。検出済みのトーン タイプに対して enable コマンドが再度発行されると、そのトーン タイプは再びイネーブルにされます。

構文

leg tonedetect {legID | info-tag} enable {tonetype} [<Number Cycles>]leg tonedetect {legID | info-tag} disable <{tonetype}> <{ignoremintime}>

引数

• legID:コール レッグの ID。

• info-tag:1 つ以上の着信レッグにマッピングされるコール レッグ情報タグ。情報タグの詳細については、第 4章「情報タグ」を参照してください。

• tonetype:検出対象のトーン タイプ。

- 有効な値:cng(一連の CNG トーン)。

• Number Cycles:ここに指定した回数のシングル トーン サイクルが連続すると ev_tone_detectedが生成されます。この引数が指定されない場合、デフォルト値は 1 サイクルです。

• ignoremintime:トーン検出に許可されている時間が十分ではないと警告するメッセージを抑制します。

戻り値

• イネーブルの場合:

- トーン検出とイベント生成に必要な期間(秒単位)を示す文字列か、エラーを示す文字列。

最小必要時間は、その特定トーンに必要な最小時間に Number Cycles を乗算して計算されます。

• ディセーブルの場合:

- Tcl_OK または Tcl_ERROR。必要最小時間が経過する前にこのコマンドが呼び出され、かつ ignoremintime が指定されていない場合は、エラーになります。たとえば、必要最小時間が 7 秒であるのに、3 秒経過したところでこのコマンド呼び出された場合、ignoremintimeが指定されていれば、トーン検出をディセーブルにできます。

Page 131: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-43TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

set MIN_CNG_DETECTION_TIME [leg tonedetect leg_incoming enable cng]leg tonedetect leg_incoming disable cng ignoremintime

コマンド終了

なし

使用上の注意

なし

leg transferdoneこのコマンドは、コール レッグでのコール転送のステータスを示します。ステータスに基づいて、そのコール レッグに切断メッセージまたはファシリティ メッセージを送信します。

構文

leg transferdone {legID | info-tag} transferStatusCode

引数

• legID:コール レッグの ID。

• transferStatusCode:成功 /失敗。有効な値のリストについては、P.5-13 の「転送ステータス」を参照してください。

戻り値

このコマンドは、次のいずれかの値を戻します。

• 0(成功):成功

• 1(失敗、サポート対象外):指定されたレッグに関連付けられたシグナリング プロトコルでは、この情報を送信できません。これによってスクリプト エラーがトリガーされることはありません。

leg transferdone leg_incoming ts_011set retcode [leg transferdone leg_incoming ts_000]

コマンド終了

戻り値が「成功」の場合、コマンドは ev_disconnected をスクリプトに送信して終了します。

使用上の注意

指定されたコール レッグがこの操作には無効な場合、スクリプトはエラーを出力して終了し、呼はクローズします。

Page 132: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-44TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg vxmldialogleg vxmldialog コマンドは、指定されたレッグで VoiceXML ダイアログを開始します。ダイアログをレッグに送るためのマークアップは、URI または 文字列パラメータでの実際のマークアップで指定されます。スクリプトでは、変数のリストをパラメータとして渡すこともできます。これらの変

数のコピーを、VoiceXML ダイアログ セッションで使用できます。

VoiceXML ダイアログをレッグで実行中、command terminate および leg vxmlsend コマンドを除き、そのレッグでそのほかの操作やコマンドは許可されません。VoiceXML ダイアログが終了すると、正常終了と異常終了のどちらの場合でも、ev_vxmldialog_done イベントがスクリプトで受信され、終了の理由を示す該当ステータス コードを evt_status 情報タグを使用して取得できます。

-u および -v オプションの両方が指定されている場合、インライン VoiceXML ダイアログが -v オプションで実行され、-u URI をデフォルトのベース URI としてインライン コードがそこからダウンロードされたかのように使用します。VoiceXML ダイアログは、leg vxmldialog コマンドによってレッグで開始された VoiceXML セッション全体を参照します。これは、最初のインライン ドキュメントまたは URI から始まり、対話の流れの中で複数のドキュメントに及ぶこともあります。

TCL アプリケーション内から個々のコール レッグで VoiceXML ダイアログ セグメントを開始することをハイブリッド スクリプトといいます。ハイブリッド スクリプトは、アプリケーションの受け渡しの概念(コール レッグを終了して別のアプリケーションに受け渡し、レッグの制御を失う)とは異なります。呼の受け渡しの詳細については、P.1-6 の「TCL での呼の受け渡し」を参照してください。ハイブリッド スクリプトの詳細については、P.1-7 の「TCL/VoiceXML ハイブリッド アプリケーション」を参照してください。

構文

leg vxmldialog <legID> -u <dialog-uri> [-p <param-array>] [-v <dialog-markup-string>]

引数

• legID:受け渡されるコール レッグの ID。

• dialog-uri:ダイアログ マークアップの取得元となる URI、または -v オプションと一緒に使用される場合にベース URI として使用される URI。

• param-array:ダイアログ マークアップに渡されるパラメータのリストを含む TCL 配列VoiceXML セッションは、これらのパラメータに com.cisco.params.xxxxxx(xxxxxx は TCL 配列の指数)の形式のセッション変数を使用してアクセスできます。TCL 配列変数の値は、VoiceXML アプリケーションでテキスト文字列として使用できます。唯一の例外は、TCL 配列変数に、メモリ内の音声クリップを示すメモリ ram://URI が含まれる場合です。この場合、音声クリップは VoiceXML ドキュメントで音声クリップ オブジェクトとして使用できます。

• dialog-markup-string:レッグで開始するダイアログを指定する VoiceXML マークアップを含む文字列。

戻り値

なし

コマンド終了

ev_vxmldialog_done

leg vxmldialog leg_incoming

Page 133: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-45TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

使用上の注意

• VoiceXML ダイアログは、command terminate コマンドを使用して終了できます。

• ダイアログ コマンドがレッグで実行中、medial play、leg collectdigits、leg setup など、別の TCLIVR コマンド操作は許可されません。これらのコマンドが実行されると、アプリケーションはエラーを出力し、TCL IVR スクリプト エラーで終了します。VoiceXML ダイアログも終了します。

• <transfer> タグは、VoiceXML がダイアログ モードで実行される場合はサポートされません。VoiceXML ダイアログが <transfer> タグを実行すると、error.unsupported.transfer イベントがVoiceXML インタプリタにスローされます。

• VoiceXML ダイアログから、com.cisco.ivr.script.sendevent オブジェクトを使用して TCL にイベントを送信できます。sendevent オブジェクトの詳細については、P.1-9 の「SendEvent オブジェクト」を参照してください。

leg vxmlsendleg vxmlsend コマンドは、レッグで実行中の VoiceXML ダイアログでイベントをスローします。イベントは、 <event-name> の形式で VoiceXML ダイアログにスローされます。イベントには、<param-array> で指定したパラメータを付属させることができます。TCL 結合配列には、イベントと一緒にダイアログに送信するパラメータのリストが含まれています。配列の指数は VoiceXML ダイアログからアクセスできるパラメータの名前で、値は VoiceXML ダイアログからアクセスできるパラメータの値です。

これらのパラメータは、variable_message によって VoiceXML スクリプトから使用できます。また、TCL 配列の指数すべてをメッセージ オブジェクトのサブ要素として含むオブジェクトでもあります。レッグで実行中の VoiceXML ダイアログがない場合、このコマンドはそのまま正常に終了し、無視されます。

構文

leg vxmlsend <legID> <event-name> [-p <param-array>]

引数

• legID:受け渡されるコール レッグの ID。

• event-name:VoiceXML ダイアログにスローされるイベントの名前。

• param-array:実行中の VoiceXML ダイアログに渡すパラメータのリストを含む TCL 配列。VoiceXML セッションは、スローされた VoiceXML イベントがキャッチ ハンドラによってキャッチされると、これらのパラメータにアクセスできます。パラメータには、

_message.params.xxxxxx 変数を使用してアクセスできます。この変数はキャッチ ハンドラに適用範囲が設定されているため、キャッチ ハンドラ内で使用できます。VoiceXML アプリケーションでは、TCL 配列変数の値をテキスト文字列として使用できます。唯一の例外は、TCL 配列変数にメモリ内の音声クリップを示すメモリ ram://URI が含まれる場合です。この場合、音声クリップは VoiceXML ドキュメントで音声クリップ オブジェクトとして使用できます。

戻り値

なし

コマンド終了

即時

leg vxmlsend leg_incoming $event-name

Page 134: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-46TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

使用上の注意

なし

loglog コマンドは、syslog メッセージを発信します。

構文

log -s <CRIT | ERR | WARN | INFO> <message text>

引数

• -s <CRIT | ERR | WARN | INFO>:メッセージのシビラティ。

- CRIT:致命的

- ERR:エラー メッセージ(デフォルト)

- WARN:警告メッセージ

- INFO:情報メッセージ

• message text:メッセージの本文。スペースまたは特殊文字を含むテキストは二重引用符または波カッコで囲みます。

戻り値

なし

コマンド終了

即時

set msgStr “MCID request succeeded”append msgStr [clock format [clock seconds]]log $msgStr

使用上の注意

• log コマンドは、Cisco IOS メッセージ ファシリティを使用してメッセージを送信します。致命的メッセージを除き、IVR アプリケーション ログ メッセージの送出には、ランク制限が適用されます。同じメッセージの最小送出間隔は次のようになります。

- ERR:1 秒

- WARN:5 秒

- INFO:30 秒

アプリケーションが同じシビラティの log コマンドを発行すると、メッセージは同じものと見なされます。

• ランク制限を実行する場合、Cisco IOS メッセージ ファシリティでは、すべての IVR アプリケーションによる送出が検討されます。メッセージにランク制限を適用しない場合は、CRIT シビラティ レベルを使用してください。

• メッセージ テキストは、できるだけ明快で正確なものにする必要があります。オペレータがメッセージから実施すべき処理を判断できなければなりません。

• システムによってメッセージの後に改行文字が付加されるため、改行文字を使用する必要はあ

りません。

• エラーのレポートには、log メッセージ ファシリティを使用します。デバッグ目的には、putsコマンドを使用します。

Page 135: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-47TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• ログ メッセージは、バッファ、別の TTY、または別のシステムのログ収集サーバに送信できます。設定オプションについては、Cisco IOS Troubleshooting and Fault Management logging commandを参照してください。

• コンソールに大量のログ メッセージを送信すると、システム パフォーマンスが大幅に低下するおそれがあります。コンソールに送信されるログ メッセージは、logging console <level> CLIコマンドを使用して抑制することもできます。または、logging rate-limit console CLI コマンドを使用してコンソール出力をランク制限できます。コンソールへのロギングをまとめてディ

セーブルにするには、ロギングがすでにバッファまたは syslog サーバに送られている場合は特に、no logging console コマンドを使用します。

media pausemedia pause コマンドは、指定のコール レッグに対して現在再生中のプロンプトを一時停止します。

構文

media pause {legID | info-tag}

引数

• legID:プロンプトの再生を一時停止するコール レッグの ID。

• info-tag:1 つ以上のレッグに直接マッピングされる情報タグ。情報タグの詳細については、第4章「情報タグ」を参照してください。

戻り値

なし

コマンド終了

このコマンドは即時終了します。ただし、スクリプトは、コマンドが失敗した場合に ev_media_doneイベントを受け取れるようにしておく必要があります。ev_media_done イベントは、このコマンドが成功した場合は生成されません。

media pause $legID

使用上の注意

指定のコール レッグが無効な場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

media playmedia play コマンドは、指定のコール レッグに対して指定のプロンプトを再生します。

構文

media play {legID | info-tag} {<url> | <token>}+

引数

• legID:プロンプトを再生するコール レッグの ID。

• info-tag:1 つのレッグに直接マッピングされる情報タグ。情報タグの詳細については、第 4章「情報タグ」を参照してください。

Page 136: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-48TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• url:再生するプロンプトの URL。url-list の値は、各プロンプトの URL のリストまたは文字列のリストで、それぞれ URL の集合です。URL によって、フラッシュ メモリ、FTP サーバ、TFTPサーバからのプロンプトや、RTSP プロンプトを示すことができます。文字列にはダイナミック プロンプトを指定し、この場合、再生するプロンプトおよび言語を指定するための特別な表記法に従ってダイナミック プロンプトを記述します。下記の「使用上の注意」を参照してください。

• token:HTTP コマンド、geturl、または media record コマンドから戻されます。token は、RAMから直接再生される録音を示します。token がそのほかの録音 URL を示している場合、URL は音声を取得するために使用されます。

(注) 録音の再生から作成されたメディア コンテンツはキャッシュに格納されません。

geturl から戻された token を使用するには、コンテンツ タイプが「audio/*」でなければなりません。トークンに関連付けられている statearray にコーデック要素が定義されている場合、本文は指定されたコーデックの未加工またはヘッダーのない音声として扱われます。コーデック

要素が定義されてない場合、本文は .au または .wav ファイルに適合するように解析されます。.au または .wav ヘッダーが含まれていない場合、メディアの再生は失敗します。

• @C<string>:英数字を 1 つずつ再生します。たとえば、@Ccsco は「C」、「S」、「C」、「O」と再生されます。入力がサポートされるのは、印刷可能な ASCII 文字セットです。

• %Wday_of_week:曜日プロンプトを再生します。たとえば、%w1 は「Monday」と再生されます。1 ~ 7 の値が、月曜日から日曜日を表します。

• %Ttime_of_day:ISO 標準時刻形式を受け入れて、時刻を再生します。たとえば、%T131501 は「one」、「fifteen」、「pm」、「one」、「second」と再生されます。サポートされる形式は、hhmmss、

hhmm、および hh です。hh は時、mm は分、ss は秒を表します。時は 24 時間形式です。

• %Ddate:ISO 標準日付形式を受け入れて、日付を再生します。サポートされる形式は、CCYYMMDD、CCYYMM、CCYY、--MMDD、--MM、または ---DD です。CC は世紀、YY は年、MM は月、DD は日を表します。たとえば、%D20000914 は「year」、「two」、「thousand」、「september」、「fourteenth」、%D199910 は、「year」、「nineteen」、「ninety」、「nine」、「october」、

%D2001 は「year」、「two」、「thousand」「one」、%D--0102 は「January」、「second」、%D--12 は「december」、%D---31 は「thirty」、「first」と再生されます。

戻り値

なし

コマンド終了

media play コマンドが終了すると、スクリプトは ev_media_done イベントではなく、ev_synthesizerイベントを受け取ります。下位互換性のために、ゲートウェイでは引き続き ev_media_done イベントがサポートされますが、今後、再生終了の検出には ev_synthesizer を使用することをお勧めします。

Page 137: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-49TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

media play leg_incoming@C$alphamedia play leg_incoming@C$asciimedia play leg_incoming@C\ !\"#\$%&'()*+,-./0123456789:\;<=>?@\[\\]^_`{|}~media play leg_incoming%D2001media play leg_incoming%D201211media play leg_incoming%D20300830

media play leg_incoming%D---01 %D---02 %D---03 %D---04 %D---05 %D---06 %D---07 %D---08 %D---09 %D---10 %D---11 %D---12 %D---13 %D---14 %D---15 %D---16 %D---17 %D---18 %D---19 %D---20 %D---30

media play leg_incoming%D---21 %D---22 %D---23 %D---24 %D---25 %D---26 %D---27 %D---28 %D---29 %D---31

media play leg_incoming%T01 %T02 %T03 %T04 %T05 %T06 %T07 %T08 %T09 %T10 %T11 %T12 %T13 %T14 %T15 %T16 %T17 %T18 %T19 %T20 %T21 %T22 %T23 %T00

media play leg_incoming%T24media play leg_incoming%W1 %W2 %W3 %W4 %W5 %W6 %W7

set audio_file http://prompt-server1/prompts/en_welcome.aumedia play leg_incoming $audio_file

使用上の注意

• media play コマンドを発行するときにプロンプトがすでに再生中の場合、最初のプロンプトが終了して 2 つめのプロンプトが再生されます。

• media play コマンドは、URL またはプロンプトのリストに従ってプロンプトを順番に再生し、1 つのプロンプトを構成します。プロンプトの各構成要素は、完全 URL にするか、TTS(Text-to-Speech)表記にすることができます。プロンプトの有効な構成要素は次のとおりです。

- URL—音声ファイルの格納場所。URL にはコロンが含まれていることが必要です。コロンが含まれていない場合、そのコードはファイル名として扱われ、.au が付加されます。

- name.au:音声ファイル名。現在使用されている言語と音声ファイル格納場所の値が、name.au に追加されます。ファイル名にはコロンを含むことができません。コロンを含む場合、URL として扱われます。

- %anum:通貨合計(米セント)。123 を指定した場合の値は $1.23 です。最大値は 99999999で、$999,999.99 を示します。

- %tnum:時間(秒)。最大値は 999999999 で、277,777 時間 46 分 39 秒を示します。

- %dday_time:曜日と時刻。形式は DHHMM です。この場合、D は曜日を表し、1=月曜日、7=日曜日です。たとえば、%d52147 は「Friday, 9:47 PM.」と再生します。

- %stime:無音を再生する時間(ミリ秒)。

- %pnum:電話番号を再生します。最大桁数は 64 桁です。「the number is」などのテキストは挿入されませんが、数桁おきにポーズが挿入されます。何桁おきかは、共通のナンバリン

グ プランを前提とします。たとえば、18059613641 は 1 805 961 3641 として読み取ります。数桁おきに挿入されるポーズは 500 ミリ秒です。

- %nnum:ポーズを挿入しないでディジットの文字列を再生します。

- %iid:アナウンスを再生します。id は、2 桁であることが必要です。ピリオド(.)を除くすべての文字を使用できます。アナウンスの URL は、_announce_<id>.au に言語と音声ファイル格納場所の各フィールドが付加されたものになります。

- %clanguage-index—プロンプトの残りで使用する言語。現在の media play コマンドにおける、プロンプトの残り部分の言語を変更します。次の media play コマンドの言語や、使用中の言語は変更しません。

• TTS 表記法に引数が指定されない場合、その表記法は IVR によって無視され、エラーはレポートされません。

Page 138: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-50TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• %c にヌル引数を指定した media play では、有効なプロンプトがあり、%c にヌル文字列が指定された場合、プロンプトの再生にはデフォルトの言語が使用されます。以前は、スクリプトは

中止されていました。

• 指定のコール レッグが無効な場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

• 情報タグで指定されたコール レッグが複数のレッグにマッピングされる場合は、スクリプトが終了してコンソールにエラー メッセージが送信され、呼は消去されます。leg_all の使用は、複数レッグにマッピングされる可能性が高くなるためお勧めしません。

• media play コマンドは、接続に関与するレッグには適用できません。会議レッグに対して実行されると、スクリプトは「Leg is in Conferenced state」のメッセージを表示して中止されます。接続を破棄してから、media play を実行して再び接続を確立してください。

• @Ccharacters、%Wday_of_week、%Ttime_of_day、%Ddate という、新しく定義されたダイナミック プロンプトを使用するには、TCL ベースの言語スクリプトを使用した複数言語のサポートをイネーブルにする必要があります。『Enhanced Multi-Language Support for Cisco IOS InteractiveVoice Response』マニュアルの call language voice コマンドを参照してください。この新しいダイナミック プロンプトでは、英語版だけがサポートされています。

media recordmedia record コマンドは、指定されたコール レッグで受信した音声を録音し、URL で指定された場所に保存します。

構文

media record {legID | info-tag} [-p <recordInfo>] [<url>]

引数

• legID:音声が録音されるコール レッグの ID。

• info-tag:1 つのレッグだけに直接マッピングされる情報タグ。情報タグの詳細については、第4章「情報タグ」を参照してください。

• -p <recordInfo>:次のいずれかを含む TCL 配列。

- codec:録音中に使用するコーデックを指定するための整数値。有効な値は次のとおりです。

2:voipCodecG726r163:voipCodecG726r244:voipCodecG726r32

5:voipCodecG711ulaw6:voipCodecG711Alaw7:voipCodecG7288:voipCodecG723r639:voipCodecG723r5310:voipCodecGSM

11:voipCodecGSMefr12:voipCodecG729b13:voipCodecG729ab14:voipCodecG723ar6315:voipCodecG723ar5316:voipCodecG729IETF

Page 139: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-51TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

- finalSilence:最後の無音をミリ秒で指定します。0 は最後の無音がないことを示します。

範囲:0 ~ MAXINTデフォルト:0

- dtmfTerm:DTMF キーで録音を終了します。

enable:DTMF キーによる録音の終了をイネーブルにします。disable:DTMF キーによる録音の終了をディセーブルにします。デフォルト:enable

- maxDuration:録音できる最大持続時間をミリ秒で指定します。0 は設定された上限に達したら録音が終了することを示します。

範囲:0 ~ MAXINTデフォルト:0

- maxMemory:録音できる最大メモリをバイトで指定します。0 は設定されたセッションの上限に達したら録音が終了することを示します。

範囲:0 ~ MAXINTデフォルト:0

- fileFormat:許容されるファイル形式。有効な値を以下に示します。

au:Sun ファイル形式wav:wav ファイル形式none:未加工の音声(ファイル ヘッダーが追加されない)デフォルト:au

- beep:録音する前に電子音を再生します。有効な値を以下に示します。

nobeep:録音する前に電子音を再生しないbeep:録音する前に電子音を再生するデフォルト:nobeep

(注) これらの値のいずれかが有効でない場合、media record 動詞はエラーになります。

• url:音声の録音先となる対象ファイルの場所。有効な値は次のとおりです。

- rtsp:rtsp サーバが録音をサポートしている場合、rtsp サーバに音声を録音します。

- tftp:tftp サーバに録音します。

- flash:フラッシュに録音します。

- http:http サーバに録音します。

- ram:メモリに録音します。

URL が指定されていない場合は、RAM への録音が想定されます。戻されたトークンが録音を表します。このトークンを使用して録音を再生したり、録音に関する情報を取得したりできま

す。

戻り値

録音で作成されたメディア コンテンツを記述するトークン。録音に関する情報を取得するためのTCL 配列として使用できます。次の構成を使用して、使いやすい配列変数を作成できます。

upvar #0 $token myrecording

次の配列の要素が戻されます。

• url:録音の URL が含まれます。

Page 140: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-52TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• duration:録音の長さ(ミリ秒単位)が保存されます。

• totalsize:録音のサイズ(バイト単位)が含まれます。

• type:音声ファイルのコンテンツ タイプが含まれます。有効な値を以下に示します。

- audio/basic

- audio/wav

• body:実際の音声データへのポインタ。

コマンド終了

指定した持続時間が経過してアプリケーションが media stop コマンドを発行した後、または DTMFによって録音が終了した場合、スクリプトは ev_recorder イベントを受け取ります。録音が legdisconnect コマンドによって終了した場合、スクリプトが ev_media_done イベントを受け取ることはなく、レッグの ev_disconnected イベントだけを受け取ります。録音が正常に終了すると、URL に指定された場所でアクセスできます。

録音のステータスには、ev_media_done イベントを受け取った後に、infotag get evt_status を使用してアクセスできます。

media seek と media pause は、メディア録音に影響しません。

有効な値を以下に示します。

• ms_101:録音に失敗しました。

• ms_103:URL が無効です。

• ms_105:dtmfKey での終了により録音が停止しました。

• ms_106:最大許容時間に達したため録音が停止しました。

• ms_107:最大許容メモリに達したため録音が停止しました。

• ms_109:無音タイムアウトにより録音が停止しました。

set recordInfo(codec) g711ulawset recordInfo(finalSilence) 0set recordInfo(dtmfTerm) enableset recordInfo(maxDuration) 5000 set recordInfo(fileFormat) auset recordInfo(beep) nobeep set url rammedia record leg_incoming $recordInfo $url

使用上の注意

• 指定したコール レッグが無効な場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

• 情報タグで指定されたコール レッグが複数のレッグにマッピングされる場合は、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。leg_all の使用は、複数レッグにマッピングされる可能性が高くなるためお勧めしません。

• 指定されたコール レッグがすでに録音中の場合、スクリプトは、media record が重複して呼び出されたことによるエラーを示す ev_media_done イベントを受け取ります。最初の録音が終了すると、スクリプトはもう 1 回 ev_media_done イベントを受け取ります。

• 指定されたコール レッグが会議通信を行っている状態にあっても問題ありません。この場合、指定されたレッグから受信した音声だけが録音されます。

• 1 つのコール レッグで再生と録音を同時に行うことはできません。同時に試行すると、予期しない動作または望ましくない動作が発生する可能性があります。

Page 141: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-53TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

media resumemedia resume コマンドは、指定のコール レッグに対して現在一時停止されているプロンプトの再生を再開します。

構文

media resume {legID | info-tag}

引数

• legID:プロンプトの再生を再開するコール レッグの ID。

• info-tag:1 つ以上のレッグに直接マッピングされる情報タグ。情報タグの詳細については、第4章「情報タグ」を参照してください。

戻り値

なし

コマンド終了

このコマンドは即時終了します。ただし、スクリプトは、コマンドが失敗した場合に ev_media_doneイベントを受け取れるようにしておく必要があります。ev_media_done イベントは、このコマンドが成功した場合は生成されません。

media resume $legID

使用上の注意

指定のコール レッグが無効な場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

media seekmedia seek コマンドは、現在再生中のプロンプトに対して相対検索を行います。このコマンドによって、指定の秒数先までプロンプトのメッセージが前送りされます。

構文

media seek {legID | info-tag} time-in-seconds

引数

• legID:コール レッグの ID。

• info-tag:1 つ以上のレッグに直接マッピングされる情報タグ。情報タグの詳細については、第4章「情報タグ」を参照してください。

• time-in-seconds:前方検索する秒数。負の数を指定すると、プロンプトのメッセージが後戻しされます。

戻り値

なし

Page 142: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-54TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

コマンド終了

このコマンドは即時終了します。ただし、スクリプトは、コマンドが失敗した場合に ev_media_doneイベントを受け取れるようにしておく必要があります。ev_media_done イベントは、このコマンドが成功した場合は生成されません。

media seek $legID +25media seek $legID -10

使用上の注意

• 指定のコール レッグが無効な場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

• このコマンドは、RTSP プロンプトに対してのみ有効です。現在再生中のプロンプト リストにRTSP ベースでないプロンプトがある場合、このコマンドは無効になります。

• プロンプトの残り時間を超える秒数を指定した場合、プロンプトの最後まで検索が行われ、ス

クリプトが ev_media_done イベントを受け取ります。

media stopmedia stop コマンドは、指定のコール レッグに対して現在再生中のプロンプトを停止します。

構文

media stop {legID | info-tag}

引数

• legID:プロンプトを停止するコール レッグの ID。

• info-tag:1 つ以上のレッグに直接マッピングされる情報タグ。情報タグの詳細については、第4章「情報タグ」を参照してください。

戻り値

なし

コマンド終了

即時。ただし、停止する前にプロンプトが終了した場合、スクリプトは ev_media_done イベントを受け取ります。

media stop $legID

使用上の注意

指定のコール レッグが無効な場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

Page 143: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-55TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

modulespacemodulespace コマンドを使用すると、モジュール空間の作成、アクセス、および削除を可能にし、その中でモジュールがコードを実行できます。

構文

modulespace new argmodulespace terminate argmodulespace listen argmodulespace unlisten argmodulespace return final argmodulespace return interim argmodulespace event intercept argmodulespace event consume argmodulespace children module-handlemodulespace code script modulespace current modulespace eval module-handle arg arg modulespace exists module-handle modulespace inscope module-handle arg argmodulespace parent

引数

• modulespace new <context-string>:モジュール空間を作成して、新しいサブモジュールを作成およびインストールし、その中でサブモジュールを実行できるようにします。新しいモジュー

ル空間は、親モジュール空間の下に作成されます。このモジュール空間では、既存の fsm defineコマンドによって初期化されるサブ ステート マシンを実行できます。modulespace new コマンドは、module-handle を新しく作成されたモジュール空間に戻します。モジュール空間を作成すると、関連するインタプリタに変数の名前空間も作成されます。この変数の名前空間は、モ

ジュール空間の作動中は常に作動します。

モジュール空間とその名前空間は、定義された modulespace コマンドを使用して起動されます。これらの modulespace コマンドは、対応する namespace コマンドによく似ており、それぞれのセクションで説明されているように制限があります。context-string の値は、ev_module_event やev_module_done イベントなど、このモジュールで生成されるすべてのイベントで使用できます。このコンテキスト文字列は、このモジュールに関連するコンテキスト情報(データ構造の名前

やハンドル、またはこのようなイベントで呼び出すコールバック関数など)を提供するために

使用できます。この情報には、evt_module_context 情報タグを使用してモジュール イベントを処理するときに、親モジュール空間でアクセスできます。

• modulespace terminate <module-handle>:このコマンドは、作動しているモジュール空間の終了を開始します。モジュール空間が終了すると、そのリスナーは ev_module_done イベントを受け取ります。

• modulespace listen <leg-id | connection-id>:このコマンドは、モジュール空間のリッスン リストにレッグまたは接続オブジェクトを追加します。つまり、レッグまたはコンテキストに関連

付けられているイベントはすべて、このモジュールで確認されてから親モジュールで確認され

ます。そのため、このモジュールは機能を実装する処理を実行できるだけでなく、親モジュー

ルにこのイベントを確認させるか、またはイベントを消費するのか、親からフィルタ処理する

のかを決定できます。このようなモジュールをインストールしてオブジェクトをリッスンする

場合、モジュールは特定の順番で追加されます。また、システムがそのオブジェクトに関する

イベントを受け取ったとき、イベントは、検査のためにオブジェクトのリッスン リストにあるモジュール に 1 つずつ送信されます。現在のモジュールによってすでにリッスン中のレッグでリッスンを行っても問題はなく、何の操作も行われません。

• modulespace unlisten <leg-id | connection-id>:このコマンドは、modulespace listen コマンドと逆の操作を実行します。指定されたオブジェクトのリッスン リストからモジュールを削除します。このコマンドの実行後、オブジェクトに関連付けられたイベントすべてがこのモジュール

に送信されなくなります。現在のモジュールによってリッスンされていないレッグでリッスン

の解除を行っても問題はなく、何の操作も行われません。

Page 144: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-56TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• modulespace return final <param-array>:このコマンドを実行すると、モジュールの実行が終了し、ev_module_done イベントがコマンドを起動した親モジュールに送られます。この処理では、モジュールは現在リッスン中のすべてのオブジェクトから削除され、オブジェクトの戻り

リストに追加されます。親モジュールは、ev_module_done イベントを受け取ると、このリストにアクセスできます。これらのオブジェクトには、親モジュールから evt_legs およびevt_connections 情報タグを使用してアクセスできます。

このコマンドはまた、TCL の <param-array> 変数またはオブジェクトを現在のモジュール空間から定義解除または削除し、親モジュールに ev_module_done イベントと一緒に渡します。<param-array> 内の情報は、ev_module_done イベントを処理するときに evt_params 情報タグを使用して親モジュール空間でアクセスできます。この情報タグは、<param-array> 情報のエイリアスを親モジュール空間内に作成し、親モジュールからアクセスできるようにします。

ev_module_done イベントを受け取ったモジュールは、このイベントを生成したモジュール ハンドルに evt_module_handle 情報タグを使用してアクセスできるようになります。

(注) modulespace return final コマンドは、終了中のモジュールのモジュール空間から実行する必要があります。モジュール自身がクリーンアップを実行するのは孤立した場合だけ

です。モジュールは、別のオブジェクトやモジュールを一切リッスンしておらず、AAA、タイマー、media コマンド、HTTP 要求など、未処理のイベントがない場合に孤立と分類されます。レッグが disconnect イベントを受け取り、一定時間内にアプリケーションによって切断されなかった場合、安全タイマーがクリーンアップ イベントを開始し、切られた呼とそれに関連付けられたモジュール、オブジェクト、リソースのすべてを消去

します。

• modulespace return interim <module-sub-event-name> <param-array>:このコマンドを実行すると、中間の ev_module_event イベントが発生します。このイベントは、コマンドが実行されたモジュールによって生成され、現在のモジュールを起動した親モジュールによって受け取られま

す。 ev_module_event イベントを受け取ったモジュールは、このイベントを生成したモジュールハンドルに evt_module_handle 情報タグを使用してアクセスできるようになります。また、evt_module_subevent 情報タグを使用して、特定のモジュール サブイベント名にもアクセスできます。

親モジュールが ev_module_event イベントを処理するとき、<param-array> 内の情報にもアクセスできます。親モジュールは、この情報に evt_params 情報タグを使用してアクセスできます。この情報タグには、<param-array> 情報のエイリアスを作成して、親モジュール空間内でアクセスできるようにします。

(注) このコマンドは、中間イベントを生成するモジュールのモジュール空間から実行する必

要があります。

• modulespace event intercept:このコマンドを実行すると、イベントは親モジュール空間の代わりに現在のモジュール空間によって代行受信されます。このモジュールによって処理されてい

る現在のイベントは、現在のモジュールがこのイベントに属するオブジェクトをリッスンして

いなくても、現在のモジュールの親に送信されます。このコマンドを実行しないと、イベント

はこのオブジェクトをリッスンしているすべてのモジュールにリッスンしている順番で送信

されます。

(注) このコマンドは、現在のイベントを処理しているモジュールのモジュール空間内から実

行する必要があり、別のモジュール空間から実行すると失敗します。指定がない場合、

デフォルトで処理が続行されます。

Page 145: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-57TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• modulespace event consume:このコマンドを実行すると、イベントが現在のモジュールによって消費されます。処理中の現在のイベントは終了して解放され、このイベントが属するオブ

ジェクトをリッスンしていても別のモジュールには送信されません。このコマンドを実行しな

いと、イベントはこのオブジェクトをリッスンしているオブジェクトすべてに、リッスンして

いる順番で送信されます。

(注) このコマンドは、現在のイベントを処理しているモジュールのモジュール空間内から実

行する必要があり、別のモジュール空間から実行すると失敗します。指定がない場合、

デフォルトで処理が続行されます。

• modulespace children module-handle:モジュール空間 module-handle に属するすべての子モジュール空間のハンドルのリストを戻します。module-handle が指定されないと、現在のモジュール空間の子が戻されます。

• modulespace code script:現在のモジュール空間コンテキストを、後のスクリプトの実行のためにキャプチャします。新しいスクリプトが戻されますが、その中で script は modulespace codeコマンド内にラップされています。新しいスクリプトには 2 つの重要なプロパティがあります。まず、スクリプトはどのモジュール空間内でも評価が可能で、script が現在のモジュール空間(modulespace code コマンドが起動された場所)で評価されます。次に、生成されたスクリプトに追加の引数を付加し、script に追加の引数として渡すことができます。たとえば、set script[modulespace code {foo bar}] コマンドがモジュール空間 module-x で起動されたとします。すると、script の値が正しく渡されたと想定され、どのモジュール空間でも eval "$script x y" を実行でき、modulespace eval module-x {foo bar x y} コマンドと同じ結果が得られます。適用範囲が設定されたコマンドが、コマンドとそのモジュール空間コンテキストを後で正しく実行でき

るような方法でキャプチャします。

• modulespace current:現在のモジュール空間のモジュール ハンドルを戻します。

• modulespace eval module-handle arg arg...:module-handle から参照されるモジュール空間を作動させて、そのコンテキストのコードを評価します。複数の arg 引数が指定された場合、eval コマンドの場合と同様に、各引数は間にスペース 1 文字をはさんで連結され、その結果が評価されます。

• modulespace exists module-handle:module-handle が現在のコンテキストで有効なモジュール空間である場合は 1 を戻し、それ以外の場合は 0 を戻します。

• modulespace inscope module-handle arg arg ...:特定のモジュール空間のコンテキストでスクリプトを実行します。このコマンドは、直接使用しないでください。このコマンドの呼び出しは、

アプリケーションが modulespace code コマンドを使用してコールバック スクリプトを作成し、コンテキスト サブモジュールとして提供する場合に暗黙的に生成されます。

modulespace inscope コマンドは、lappend セマンティックがあり、モジュール空間がすでに存在しなければならないという点を除いて、modulespace eval コマンドによく似ています。最初の引数をリストとして扱い、2 つめ以降の引数があれば、最後に適切なリスト要素として追加します。modulespace inscope module-handle a x y z コマンドは、modulespace eval module-handle[concat a [list x y z]] に相当します。多くのコールバック スクリプトは実際にはプレフィックスであるため、この lappend セマンティックは重要です。

• modulespace parent:現在のモジュール空間の親モジュール空間のモジュール ハンドルを戻します。

戻り値

なし

コマンド終了

即時

Page 146: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-58TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

modulespace new leg_incomingmodulespace terminate leg_incomingmodulespace listen leg_incomingmodulespace unlisten leg_incomingmodulespace return final PARAMgood|PARAMnull modulespace return interim an-event PARAMgood|PARAMnull modulespace event intercept leg_incomingmodulespace event consume leg_incomingmodulespace children $modHandle

set script [modulespace code {foo bar}]modulespace code $script

modulespace current modulespace eval module-x {foo bar x y} modulespace exists $modHandle modulespace inscope $modHandle $modScriptmodulespace parent

使用上の注意

• なし

object create dial-peer<peer_handle_spec> をハンドル名のプレフィックスとして使用し、ダイヤル ピア ハンドルのリストを作成します。

構文

object create dial-peer <peer_handle_spec> <destination_number>

引数

• peer_handle_spec:ダイヤル ピア ハンドルを表すために作成された TCL 変数の名前を指定します。peer_handle_spec の形式は、<handle_prefix>:<from_index> です。システムでは、プレフィックスに <from_index> から始まるシーケンス番号を連結し、ダイヤル ピア ハンドル名を作成します。

• destination_number:宛先電話番号。

戻り値

作成されたダイヤル ピア ハンドルの番号を戻します。

コマンド終了

即時

object create dial-peer dp_handle:0 $dest

使用上の注意

• システムがハンドル名を生成する方法の例として、2 つのダイヤル ピアが同じ宛先に適合する場合を考えてみます。この場合、戻り値は 2 で、作成されるハンドル名は dp_handle0 およびdp_handle1 になります。

• 指定した名前のハンドルがすでに存在する場合は、タイプに関係なくそのハンドルは削除さ

れ、新しいハンドルが作成されます。

Page 147: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-59TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

object create gtd新しい GTD 領域への GTD ハンドルを新しく作成するために使用されます。システムが、関連した基盤となるデータ構造を作成し、アプリケーションがそこに GTD パラメータを挿入(付加)できるように準備します。

構文

object create gtd <GTDHandle> {<message-id>|<reference-handle>}

引数

• GTDHandle:アプリケーションが作成し、その後の GTD メッセージの操作で使用するハンドルの名前。

• message-id:アプリケーションが作成するメッセージの名前。次の値がサポートされています。

- IAM

- CPG

- ACM

- ANM

- REL

- INF

- INR

• reference-handle:既存の GTD ハンドルを示します。形式は &<handle_name> です。

戻り値

数値を戻します。ハンドルを作成できる場合は 1、それ以外は 0 です。

コマンド終了

即時

set gtd_creation_cnt [object create gtd gtd_setup_ind IAM]set gtd_creation_cnt [object create gtd gtd_setup_ind2 &gtd_setup_ind]

使用上の注意

• このオプションは、アプリケーションがまったく新しく GTD 領域を作成する場合に使用します。ハンドルを作成したら、通常、アプリケーションは 1 つ以上の GTD 属性を付加します。

• 「:」文字は object destroy コマンドで特別な意味を持つため、ハンドル名に含めないでください。

• 指定した名前のハンドルがすでに存在する場合は、(タイプに関係なく)そのハンドルは削除

され、新しいハンドルが作成されます。

• そのほかの場合と同様、アプリケーションはハンドルを使用する前に戻り値をチェックする必

要があります。

• GTD ハンドルを別のアプリケーションに受け渡すことはできません。

Page 148: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-60TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

object destroyhandle 、または handle_spec で指定されたすべてのハンドルに関連付けられた特定のダイヤル ピア項目を破棄します。

構文

object destroy [<handle> | <handle_spec>]

引数

• handle:破棄するダイヤル ピアのハンドル。

• handle_spec:削除するダイヤル ピア ハンドルの範囲を指定します。handle_spec の形式は、<handle_prefix>:<from_index>:<to_index> です。システムでプレフィックスに指数を連結し、ハンドルの削除に使用します。

戻り値

破棄したオブジェクトの数を戻します。

コマンド終了

即時

object destroy dp_handle2object destroy dp_handle:0:2

上の 2 つめの例では、システムは dp_handle0、dp_handle1、および dp_handle2 を破棄しようとします。

使用上の注意

• ダイヤル ピア項目または一連のダイヤル ピアが破棄されると、関連付けられているダイヤルピア データも破棄されます。

object append gtdハンドルに 1 つ以上の GTD 属性を付加します。

構文

object append gtd <GTDHandle> <GTDSpec>

引数

• GTDHandle:アプリケーションが変更を適用する GTD 領域へのハンドル。<GTDHandle> には、以前の infotag get evt_gtd で作成および割り当てられたハンドルと、object create gtd コマンドを使用してまったく新しく作成したハンドルのどちらでも指定できます。

• GTDSpec:変更する GTD 属性。

戻り値

なし

コマンド終了

即時

Page 149: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-61TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

object append gtd gtdhandleA &gtdhandleB.pci.-1object append gtd gtdhandleA &gtdhandleB.pci.2object append gtd gtdhandleA pci.1.dat "F4021234 " &gtdhandleB.fdc.-1object append gtd gtdhandleA &gtdhandleB.fdc.-1 pci.1.dat "F4021234 "

使用上の注意

• GTD 属性インスタンスを GTD メッセージに付加する場合、GTD 構造のすべてのフィールドを指定する必要があります。

• TCL パーサーの制限を超えない限り、1 回の GTD 変更で必要なだけの属性をアプリケーションで指定できます。長いコマンドを複数行に分けるには、改行シーケンスを使用します。

• 1 つの属性フィールドが 1 つのコマンドで複数回指定されている場合、最後に処理された属性フィールドの値が使用されます。

• この append コマンドでは、<gtd_spec> として <instance_ref> を持つことができます。

• <instance_ref> の <attr_instance> には、フィールド名が含まれません。つまり、<instance_ref> に関与する操作では常に属性全体が参照されます。

• 1 つの属性に複数の操作が適用されると、最後の操作の結果で前の結果が上書きされることがあります。これは、複数のコマンドを次々と実行するのに似ています。

• 構文チェック中にエラーが発見されると、コマンドは中止されます。

object delete gtd1 つ以上の GTD 属性を削除します。

構文

object delete gtd <GTDHandle> <GTD spec>

引数

• GTDHandle:アプリケーションが変更を適用する GTD 領域へのハンドル。<GTDHandle> には、以前の infotag get evt_gtd で作成および割り当てられたハンドルと、object create gtd コマンドを使用してまったく新しく作成したハンドルのどちらでも指定できます。

• GTDSpec:変更する GTD 属性。

戻り値

なし

コマンド終了

即時

object delete gtd gtdhandleA pci.1object delete gtd gtdhandleA pci.-1

使用上の注意

• TCL パーサーの制限を超えない限り、1 回の GTD 変更で必要なだけの属性をアプリケーションで指定できます。長いコマンドを複数行に分けるには、改行シーケンスを使用します。

• 1 つの属性フィールドが 1 つのコマンドで複数回指定されている場合、最後に処理された属性フィールドの値が使用されます。

• この delete コマンドの <attr_instance> にはフィールド名を指定できません。

Page 150: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-62TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• この delete コマンドでは <attr_value> は使用できません。

• この delete コマンドは、<instance_ref> を <attribute_spec> として使用しません。

• 1 つの属性に複数の操作が適用されると、最後の操作で前の結果が上書きされることがあります。

• 構文チェック中にエラーが発見されると、コマンドは中止されます。

• 複数インスタンス形式(-1)を使用して削除しても、削除するインスタンスが見つからない場合は、スクリプトが失敗することはありません。そのため、スクリプトは、属性を削除する前

に属性が存在するかどうかをチェックすることなく、処理を円滑かつ迅速に行うことができま

す。

object replace gtd1 つ以上の GTD 属性を置き換えます。

構文

object replace gtd <GTDHandle> <GTD spec>

引数

• GTDHandle:アプリケーションが変更を適用する GTD 領域へのハンドル。<GTDHandle> には、以前の infotag get evt_gtd で作成および割り当てられたハンドルと、object create gtd コマンドを使用してまったく新しく作成したハンドルのどちらでも指定できます。

• GTDSpec:変更する GTD 属性。

戻り値

なし

コマンド終了

即時

object replace gtd gtdhandleA pci.1 &gtdhandleB.pci.5object replace gtd gtdhandleA pci.-1 &gtdhandleB.pci.-1object replace gtd gtdhandleA pci.-1 &gtdhandleB.pci.3object replace gtd gtdhandleA pci.1 &gtdhandleB.pci.5 fdc.1.dat F4021234 object replace gtd gtdhandleA fdc.1.dat " F4021234" pci.1 &gtdhandleB.pci.5

使用上の注意

• TCL パーサーの制限を超えない限り、1 回の GTD 変更で必要なだけの属性をアプリケーションで指定できます。長いコマンドを複数行に分けるには、改行シーケンスを使用します。

• 1 つの属性フィールドが 1 つのコマンドで複数回指定されている場合、最後に処理された属性フィールドの値が使用されます。

• <instance_ref> の <attr_instance> には、フィールド名が含まれません。つまり、<instance_ref> に関与する操作では常に属性全体が参照されます。

• 1 つの属性に複数の操作が適用されると、最後の操作の結果で前の結果が上書きされることがあります。これは、複数のコマンドを次々と実行するのに似ています。

• 構文チェック中にエラーが発見されると、コマンドは中止されます。

• <attr_instance> の直後に <instance_ref> が続く場合、その値は指定された <attr_instance> の更新に使用されます。

• 参照ハンドルが使用される場合、参照ハンドルが -1 をインスタンス番号として使用していれば、スクリプトはエラーになりません。

Page 151: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-63TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

object get gtd指定された GTD ハンドルに関連付けられた属性インスタンスの値、または属性のリストを取得します。

構文

object get gtd <GTDHandle> <attr_instance>

引数

• GTDHandle:アプリケーションが変更を適用する GTD 領域へのハンドル。<GTDHandle> には、以前の infotag get evt_gtd で作成および割り当てられたハンドルと、object create gtd コマンドを使用してまったく新しく作成したハンドルのどちらでも指定できます。

• attr_instance:属性インスタンス。形式は <attr_name>,<field_instance>,<field_name> です。

戻り値

なし

コマンド終了

即時

object get gtd setup_gtd_handle pci.1.datobject get gtd setup_gtd_handle fdc.-1.dat

使用上の注意

• アプリケーションで、属性のフィールドの全インスタンスの値を取得する必要がある場合、

<field_instance> の内容を「-1」に設定します。複数のインスタンスが使用できる場合は、それぞれの値がスペース 1 文字で区切られます。属性が複数のインスタンスを持っているかどうかは関係ありません。「-1」は常に「すべてのインスタンスを取得する」と解釈されます。

object get dial-peerダイヤル ピア項目または一連のダイヤル ピアのダイヤル ピア情報を戻します。

構文

object get dial-peer { <handle> | <handle_spec> } <attribute_name>

引数

• handle:データ取得の対象となるダイヤル ピアへのハンドル。

• handle_spec:ダイヤル ピア ハンドルの範囲を <handle_prefix>:<from_index>:<to_index> の形式で指定します。一定範囲のダイヤル ピア ハンドルから属性情報を取得するには、この形式を使用します。

• attribute_name:次のいずれかの値を指定できます。

- encapType

- voicePeerTag

- matchTarget

- matchDigitsE164

- sessionProtocol

Page 152: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-64TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

戻り値

要求されたダイヤル ピア情報を含む文字列。コマンド引数に応じて、一連のダイヤル ピア ハンドルか、特定のダイヤル ピア ハンドルの情報が戻されます。複数のダイヤル ピアの情報が戻された場合、それぞれの値はスペースで区切られます。

コマンド終了

即時

object get dial-peer dp_handle3 matchTargetobject get dial-peer dp_handle:0:2 matchTarget

使用上の注意

• 指定されたダイヤル ピア項目が存在しないか、ダイヤル ピアが含まれていない場合は、何も戻されません。

• encapType の値は次のいずれかになります。

- Telephony

- VoIP

- Other(上記以外)

• voicePeerTag の値はピア項目を表す番号です。

• matchTarget の値は、設定されている宛先仕様を含む文字列です。たとえば、RAS セッションの宛先の matchTarget の値は、session target ras です。

• matchDigitsE164 の値は、ダイヤル ピアに一致する数値文字列です。

• sessionProtocol の値は次のいずれかになります。

- H323

- SIP

- Other(上記以外)

param readparam read コマンドは、呼に関連付けられた設定パラメータを、<variable-name> という名前の変数に読み込み、読み取り専用にします。

構文

param read <variable-name> [<package name>]

引数

• package name:package provide コマンドを実行するパッケージの名前を指定します。パッケージ名が指定されない場合、このコマンドがサービスによって実行されていることが暗黙に示さ

れます。

戻り値

なし

コマンド終了

即時

Page 153: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-65TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

param read userid

使用上の注意

なし

param registerparam register コマンドは、パラメータを説明およびデフォルト値と一緒に登録し、CLI によって設定および検証できるようにします。これらのコマンドが実行されるのは、サービスまたはパッ

ケージが設定され、さらに、設定されたモジュールとそれに関連付けられたスクリプトの機能を登

録する package provide などのコマンドと一緒にロードされた場合です。

設定されたモジュールとそのスクリプトは、スレーブ インタプリタにロードされ実行されて提供するパッケージを認識し、別のサービスまたはパッケージがこのパッケージを参照したときに使用で

きるようにします。param register コマンドは、モジュールが登録してサポートするパラメータを認識するためにも実行されます。

構文

param register<param-name> [<param-description>] [<param-default>] [<param-type>]

引数

• param-name:登録されるパラメータの名前。

• param-description:パラメータの説明。

• param-type:現在、3 つの予約タイプ(文字列、整数、ブール)に制限されています。タイプを指定するための構文は、"s" | "I" | "b" で、"s"、"I"、"b" はそれぞれ文字列(string)、整数(integer)、ブール(boolean)を示します。

• param-default:パラメータのデフォルト値。

戻り値

なし

コマンド終了

即時

param register uid-len “The user ID length” “7” “i”

使用上の注意

なし

Page 154: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-66TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

phone assign

phone assign コマンドは、 MAC アドレスを発信者の電話から既存の ephone テンプレートにバインド します。 このコマンドは内線割り当て機能と一緒に使用します。

構文

phone assign {legID | info-tag} tag

引数

• legID:コール レッグの ID で、このコール レッグから MAC アドレスが取得され、ephone タグに割り当てられます。

• info-tag:1 つのレッグに直接マッピングされる情報タグ。

• tag:ephone タグ。

戻り値

1:割り当てが成功しました。

2:割り当てが失敗しました。

コマンド終了

即時

set result [phone assign leg_incoming 20]if {$result = "2"} puts "Assignment of 20 failed.\n"

使用上の注意

このコマンドが処理するレッグは 1 つだけです。

phone query

phone query コマンドは、 ephone タグに MAC アドレスが割り当てられているかど うかを確認します。 このコマンドは内線割り当て機能と一緒に使用します。

構文

phone query {legID | info-tag} -t tag

引数

• legID:着信コール レッグの ID。これは現在の発信者および電話の識別に使用されるため、詳細な割り当て戻り値を提供できます。

• info-tag:1 つのレッグに直接マッピングされる情報タグ。

• -t tag:ephone タグ。

戻り値

• -1:エラー。

• 0:タグ番号が無効です。

• 1:割り当てられていません。

• 2:発信者の電話に割り当てられています。

Page 155: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-67TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

• 3:別の電話に割り当てられ、電話が登録されていません。

• 4:別の電話に割り当てられ、電話はアイドル状態です。

• 5:別の電話に割り当てられ、電話が使用中です。

コマンド終了

即時

set result [phone query leg_incoming -t 20]if {$result = "1"} puts "ephone 20 is available.\n"

使用上の注意

このコマンドが処理するレッグは 1 つだけです。

phone unassignphone unassign コマンドは ephone タグから MAC アドレスを削除します。このコマンドは内線割り当て機能と一緒に使用します。

構文

phone unassign {legID | info-tag} tag

引数

• legID:コール レッグの ID。

• info-tag:1 つのレッグに直接マッピングされる情報タグ。

• tag:ephone タグ。

戻り値

1:割り当ての解除が成功しました。

2:割り当ての解除が失敗しました。

コマンド終了

即時

set result [phone unassign leg_incoming 20]if {$result = "2"} puts "Unassignment of ephone 20 failed.\n"

使用上の注意

このコマンドが処理するレッグは 1 つだけです。

playtoneplaytone コマンドは、指定のコール レッグに対してトーンを再生します。会議通信が行われている場合、トーンを再生する間、デジタル シグナリング プロセッサ(DSP)がリモート エンドへのデータ送信を停止します。このコマンドは、通常、スクリプトでディジット収集が必要な場合、発信者

にダイヤル トーンを発するために使用します。

Page 156: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-68TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

構文

playtone {legID | info-tag} {Tone | StatusCode}

引数

• legID:受け渡されるコール レッグの ID。

• info-tag:1 つ以上のレッグに直接マッピングされる情報タグ。情報タグの詳細については、第4章「情報タグ」を参照してください。

• Tone:次のいずれかです。

- tn_none—現在再生中のトーンを停止します。

- tn_dial—ダイヤル トーンを再生します。

- tn_busy—ビジー トーンを再生します。

- tn_addrack—アドレス通知トーンを再生します。

- tn_disconnect—切断トーンを再生します。

- tn_oos—アウト オブ サービス トーンを再生します。

- tn_offhooknotice—オフフック通知トーンを再生します。

- tn_offhookalert—オフフック警告トーンを再生します。

• StatusCode:evt_status 情報タグによって戻されるステータス コード。ステータス コードを指定する場合、playtone コマンドによってそのステータス コードと関連したトーンが再生されます。

戻り値

なし

コマンド終了

即時

playtone leg_incoming [getInfo evt_status]playtone leg_all tn_oos

使用上の注意

• 指定のコール レッグが無効な場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

• playtone コマンドは、テレフォニー コール レッグにのみ有効であり、VoIP レッグに使用した場合は何の処理もされずに無視されます。

putsputs コマンドは、IVR 状態デバッグ フラグが(debug voip ivr script コマンドによって)設定されている場合、デバッグ文字列をコンソールに出力します。

構文

puts string

引数

• string:出力する文字列。

Page 157: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-69TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

戻り値

なし

コマンド終了

なし

例:

puts “Hello $name”

requiredversionrequiredversion コマンドは、スクリプトが正しいバージョンの TCL IVR API を実行していることを確認します。

構文

requiredversion majorversion.minorversion

引数

• majorversion:基盤となる Cisco IOS コードがサポートする TCL IVR API のメジャー バージョンを示します。

• minorversion:基盤となる Cisco IOS コードがサポートする TCL IVR API のマイナー バージョンにおける最小レベルを示します。

戻り値

なし

コマンド終了

なし

requiredversion 2.5

使用上の注意

スクリプトのバージョンが、指定したメジャー バージョンと一致しない場合や、指定したマイナーバージョンと異なるかそれ以降である場合、スクリプトが終了してコンソールにエラーが表示され

ます。

sendmsg別のアプリケーション インスタンスにメッセージを送信します。

構文

sendmsg {<app-name> | <handle>} -p <parameter_array>

引数

• <app-name>:このアプリケーション名を使用して新しいインスタンスを作成します。

• <handle>:既存のアプリケーション インスタンスのハンドル。

• -p <parameter_array>:渡されるパラメータのリストを含む TCL 配列。

Page 158: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-70TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

戻り値

「unavailable」または「success」が戻されます。

コマンド終了

即時

set iid newappset fruit_message(text) “Request for Fruit”set fruit_message(fruit) “Bananas”set rval [sendmsg $iid -p fruit_message]if $rval == “unavailable” {

call close}

使用上の注意

• インスタンスがゲートウェイで実行中でない場合、戻り値「unavailable」を戻します。

• アプリケーション名が指定されると、そのアプリケーションの新しいインスタンスが生成され

ます。新しいインスタンスに作動中のレッグはありませんが、ev_msg_indication イベントを受け取ります。

• メッセージでアプリケーションの新しいインスタンスを生成することを想定していたにもか

かわらず、ゲートウェイ リソースの設定で新しいインスタンスが許可されていない場合、sendmsg コマンドは失敗し、処理中のすべてのコール レッグを破棄します。『Call AdmissionControl (CAC)』マニュアルの call treatment コマンドおよび call threshold コマンドを参照してください。

• このメッセージを受信するインスタンスは、生成済みか実行中かに関係なく、ev_msg_indicationイベントを受け取ります。インスタンスは、ev_msg and ev_msg_source 情報タグを使用して詳細な情報を取得できるようになります。

• メッセージは別のゲートウェイやサービスに送信できません。

serviceサービスを登録または登録解除します。

構文

service {register | unregister} <service-name>

引数

• <service-name>:サービスの名前。

戻り値

service register <service-name> は、「service already registered」または「registered」を戻します。

service unregister <service-name> は、「service not registered」または「unregistered」を戻します。

セッションが別のセッションによって登録されたサービス名の登録または登録解除を試みると、戻

り値「service registered by another session」を受け取ります。

コマンド終了

即時

Page 159: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-71TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

set ret [service register cisco]if {$ret=”registered”} puts “Service successfully registered”

set ret [service unregister cisco]if {$ret=”unregistered”} puts “Service successfully unregistered”

使用上の注意

• このコマンドは、現在実行中のハンドルをサービス テーブルに置きます。

• 別の呼が同じサービスを登録しようとすると、「service already registered」が戻されます。

• セッションが終了すると、サービスの登録は解除されます。

• 1 つのセッションで複数の service-name を使用して登録できます。別のセッションが同じ service-name で登録しようとすると、「service already registered」が戻されます。

• 登録が成功すると「registered」が戻されます。

• 登録されたサービスのリストは、show call application CLI コマンドを使用して表示できます。

• TCL スクリプトでは、mod_handle_services 情報タグを使用して登録されたサービスを検索できます。

set avsend標準の AV ペアまたは VSA ペアを含む結合配列を設定します。

構文

set avSend (attrName [, index] value

(注) Cisco IOS リリース 12.1(2) から、avSend 引数が導入されました。

引数

• attrName:IVR 固有の属性は、h323-ivr-out と h323-credit-amount の 2 種類がサポートされています。これらの種類の詳細については、P.4-3 の「AV ペアの名前」を参照してください。

• index:省略可能な整数の指数で、0 を開始値とし、1 つの属性に対して複数の値を区別する場合に使用します。

戻り値

なし

コマンド終了

即時

set avsend(h323-credit-amount) 25.0

set avsend(h323-ivr-out,0) "payphone:true"set avsend(h323-ivr-out,1) "creditTime:3400"

使用上の注意

指定のコール レッグが無効な場合、スクリプトが終了してコンソールにエラーが表示され、呼は消去されます。

Page 160: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-72TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

set callinfo配列内に電話のかけ方を決定するパラメータを設定します。これにより、leg setup コマンドを使用して電話をかけることができます。

構文

set callinfo (tagName [,index]) value

引数

• tagName:電話のかけ方を決定するパラメータ。配列に定義できるパラメータは次のとおりです。

- destinationNum:着信または宛先番号。mode では、この引数は transfer-target または forwarded-to の番号として使用されます。このパラメータには、URL 文字列を指定できます。このパラメータには、指数付けはできません。

- originationNum:発信者番号。mode では、この引数は transfer-by または forwarded-by の番号として使用されます。このパラメータには、URL 文字列を指定できます。このパラメータには、指数付けはできません。

- originationNumPI:発信者番号のプレゼンテーションを示す値。

有効な値を以下に示します。presentation_allowedpresentation_restrictednumber_lost_due_to_interworkingreserved_valueこのパラメータには、指数付けはできません。

- originationNumSI:発信者番号のスクリーニングを示す値。

有効な値を以下に示します。usr_provided_unscreenedusr_provided_screening_passedusr_provided_screening_failednetwork_providedこのパラメータには、指数付けはできません。

- accountNum:発信者の課金番号。このパラメータには、指数付けはできません。

- redirectNum:リダイレクト番号。当初は、エンドツーエンドの ISDN リダイレクト IE のフィールドを変更するために追加されました。コール転送を要求する番号の指定にも使用

されます。通常、ev_transfer_request イベントを受け取るレッグの発信者番号です。デフォルト値は、null です。このパラメータには、指数付けはできません。

- redirectNumPI:リダイレクト番号のプレゼンテーションを示す値。

有効な値を以下に示します。presentation_allowedpresentation_restrictednumber_lost_due_to_interworkingreserved_valueこのパラメータには、指数付けはできません。

- redirectNumSI:リダイレクト番号のスクリーニングを示す値。

有効な値を以下に示します。usr_provided_unscreenedusr_provided_screening_passedusr_provided_screening_failednetwork_providedこのパラメータには、指数付けはできません。

Page 161: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-73TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

- redirectCount<count>:リダイレクト番号のスクリーニングを示す値を設定する場合に使用します。有効な値の範囲は 0 ~ 7 です。このカウントは、宛先から転送要求が来るたびに自動的に増えます。どのカウントに達したら転送を停止するのかは、スクリプトが決定し

ます。このパラメータには、指数付けはできません。

- redirectReason<value>:リダイレクト番号の理由の値を設定する場合に使用します。このパラメータには、指数付けはできません。

有効な値を以下に示します。rr_no_reasonrr_cfbrr_cfnrrr_rsvd1rr_rsvd2rr_rsvd3rr_rsvd4rr_rsvd5rr_rsvd6rr_rsvd7rr_rsvd8rr_rsvd9rr_rsvd10rr_ctrr_cprr_not_presentmode を併用して、次の値でコール転送開始時のタイプを指定します。rr_cfurr_cfbrr_cfnrrr_cd

- redirectCfnrInd<value>:CFNR インジケータの設定に使用します。

有効な値を以下に示します。cfnr_truecfnr_false(デフォルト)このパラメータには、指数付けはできません。

- alertTimer:何秒間電話を鳴らしてから呼を中止するかを指定します。デフォルトは infiniteです。このパラメータには、指数付けはできません。

- usrDstAddr:このタグは、H.323-Setup メッセージのユーザ間情報に含まれるdestinationAddress に直接マッピングされます。タグでは、このフィールドを e164 形式または h323-id 文字列形式で設定できます。このタグでは最大 10 インスタンスが許容されます。このパラメータには、指数付けはできません。

- usrSrcAddr:このタグは、H.323-Setup メッセージのユーザ間情報に含まれる sourceAddressに直接マッピングされます。タグでは、このフィールドを e164 形式または h323-id 文字列形式で設定できます。このタグでは最大 10 インスタンスが許容されます。このパラメータには、指数付けはできません。

- addrResSrcInfo:このタグは、ゲートキーパーへの ARQ RAS メッセージの srcInfo に直接マッピングされます。タグでは、このフィールドを e164 形式または h323-id 文字列形式で設定できます。このタグでは最大 10 インスタンスが許容されます。このパラメータには、指数付けはできません。

- addrResDstInfo:このタグは、ゲートキーパーへの ARQ RAS メッセージの dstInfo に直接マッピングされます。タグでは、このフィールドを e164 形式または h323-id 文字列形式で設定できます。このタグでは最大 10 インスタンスが許容されます。このパラメータには、指数付けはできません。

- displayInfo:このタグは、H323-Setup メッセージの displayInfo に直接マッピングされます。このパラメータには、指数付けはできません。

Page 162: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-74TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

- mode:有効な値は、rotary / redirect / redirect_rotary です。指定がない場合、デフォルト値は rotary です。このパラメータには、指数付けはできません。

• rotary:呼の確立では、通常の呼の確立(rotary)ルーチンを使用することで、宛先とlegID の間に呼を確立し、レッグの会議通信を行おうとします。

• redirect:呼の確立では、legID 終端点を宛先電話番号に転送することで、宛先と legIDの間に呼を確立しようとします。プロトコル固有の転送要求が、転送を開始するためにlegID に送られます。転送の試行が失敗すると、コマンドは中止されます。転送が成功すると、legID は最終的に終端点から切断され、その影響でアプリケーションはレッグの制御を放棄します。

• redirect_rotary:呼の確立では、まず legID 終端点を宛先電話番号に転送することで、宛先と legID の間に呼を確立しようとします。転送の試行が、コール レッグのタイプをチェックして内部的に失敗するか、転送メッセージのラウンドトリップ後に失敗すると、コマンドは通常の呼の確立(rotary)方式を使用して宛先に到達し、レッグの会議通信を行おうとします。アプリケーションでは、legID と新しいレッグの制御を保持します。転送が成功すると、legID は最終的に終端点から切断され、その影響でアプリケーションはレッグの制御を放棄します。

- rerouteMode:有効な値は none / rotary / redirect / redirect_rotary です。指定がない場合、値は mode と同じになります。この引数と mode のどちらも指定されない場合、デフォルト値は rotary になります。このパラメータには、指数付けはできません。

• none:ロータリーの呼の確立を試行中に宛先終端点がリダイレクト要求を発行した場合、呼の確立は中止され、ev_setup_done イベントがリダイレクト先の番号と共にスクリプトに送信されます。リダイレクトの理由は、evt_redirect_info 情報タグで指定されます。

• rotary:ロータリーの呼の確立を試行中に宛先終端点がリダイレクト要求を発行した場合、リダイレクト先番号に対して通常のロータリーの呼の確立が行われます。

• redirect:ロータリーの呼の確立を試行中に宛先終端点がリダイレクト要求を発行した場合、要求を legID に伝達しようと試みられます。legID がまだ接続されていない場合は、コール転送要求が送信されます。legID が接続されている場合、コール転送要求が送信されます。legID がリダイレクト メカニズムをサポートしていない場合、ev_setup_done イベントが該当するエラー コードと共にスクリプトに送信されます。

• redirect_rotary:legID がリダイレクト メカニズムをサポートしていない場合に通常のロータリーの呼の確立がリダイレクト先番号に対して行われるという点を除いて、redirect と似ています。

- transferConsultID:打診のコール転送で使用されるトークン。通常は、ev_transfer_requestイベントから抽出されます。デフォルト値は、null です。このパラメータには、指数付けはできません。

- notifyEvents:イベント名からなる文字列。ロータリーの呼の確立中およびリダイレクトの呼の確立中に、このパラメータにリストされたシグナリング メッセージを通知します。内部的には、呼の確立はイベントをスクリプトにレポートした後も続行されます。デフォル

ト値は、null です。このパラメータには、指数付けはできません。

- originationNumTON:ccCallInfo 構造に含まれる発信者番号のオクテット 3 TON フィールドを設定します。このパラメータには、指数付けはできません。

有効な値を以下に示します。ton_unknownton_internationalton_nationalton_network_specificton_subscriberton_reserved1ton_abbreviatedton_reserved2ton_not_present

Page 163: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-75TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

- destinationNumTon:ccCallInfo 構造に含まれる送信先番号のオクテット 3 TON フィールドを設定します。このパラメータには、指数付けはできません。

有効な値を以下に示します。ton_unknownton_internationalton_nationalton_network_specificton_subscriberton_reserved1ton_abbreviatedton_reserved2ton_not_present

- originationNumNPI:既存の ccCallInfo 構造に含まれる発信者番号のオクテット 3 NPI フィールドを設定します。このパラメータには、指数付けはできません。

有効な値を以下に示します。npi_unknownnpi_isdn_telephony_e164npi_reserved1npi_data_x121npi_telex_f69npi_reserved2npi_reserved3npi_reserved4npi_national_stdnpi_privatenpi_reserved5npi_reserved6npi_reserved7npi_reserved8npi_reserved9npi_reserved10npi_not_present

- destinationNumNPI:既存の ccCallInfo 構造に含まれる送信先番号のオクテット 3 NPI フィールドを設定します。このパラメータには、指数付けはできません。

有効な値を以下に示します。npi_unknownnpi_isdn_telephony_e164npi_reserved1npi_data_x121npi_telex_f69npi_reserved2npi_reserved3npi_reserved4npi_national_stdnpi_privatenpi_reserved5npi_reserved6npi_reserved7npi_reserved8npi_reserved9npi_reserved10npi_not_present

- guid:発信コール レッグの GUID。このパラメータには、指数付けはできません。

- incomingGuid:発信コール レッグの incoming GUID フィールド。このパラメータには、指数付けはできません。

- originalDest:元の送信先番号。このパラメータには、指数付けはできません。

Page 164: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-76TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

- protoHeaders:呼の確立で送信するヘッダーの AV ペアを含む配列。

- newguid:true に設定すると、新しい GUID を生成して発呼の確立に使用することが指定されます。デフォルトでは、発呼に新しい GUID は生成されません。

• index:省略可能な整数で、0 を開始値とし、1 つのタグの複数インスタンスを区別する場合に使用します。

• value:設定する値。

戻り値

なし

コマンド終了

即時

set callInfo(usrDstAddr,0) “e164=488539663”set callInfo(addrResSrcInf,1) “h323Id=09193926573”set callInfo(displayInfo) “hi there”set callInfo(mode) “REDIRECT_ROTARY”set callInfo(rotaryRedirectMode) “ROTARY”set callInfo(notifyEvents) “ev_transfer_status ev_alert”set callInfo(transferConsultID) $targetConsultID

set setupSignal(Subject) “Hotel Reservation”set setupSignal(Priority) “urgent”set setupSignal(X-ReferenceNumber) “1234567890”set callInfo(protoHeaders) setupSignal

使用上の注意

• TCL スクリプトでは、leg setup コマンドに名前 callInfo を使用する規定ですが、この名前がCisco IOS ソフトウェアによって強制されるわけではありません。別な名前を使用できます。次の例を参考にしてください。

set dest “5550100”set myInfoForCallSetup(mode) "REDIRECT_ROTARY"leg setup $dest myInfoForCallSetup

• leg setup コマンドが実行されるまでコードは呼の確立を開始しないため、TCL の set コマンドでは、呼の確立の引数をチェックしません。次の例を参考にしてください。

set callInfo(redirectCount) BadValue

ここではエラーは発生せず、呼も失敗しません。呼は、leg setup コマンドがこの後に実行されたとき失敗します。

subscription open登録サーバに登録要求を送信します。

構文

subscription open {URL} subscriptionInfoArray -s subscription_id

引数

• URL:登録要求の送信先となるサーバの URL。SIP URL だけがサポートされます。

• subscriptionInfoArray:登録に関する属性を含む配列。有効な値は次のとおりです。

- event:登録するイベントの名前。

Page 165: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-77TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

- expirationTime:登録が期限切れになった後の時間(秒単位)。

- protoHeaders:登録要求で送信するヘッダーを含む配列。

- subscriptionContext:登録のコンテキストの AV ペアを含む配列。この引数では、登録側のシステムが AV ペアのリストをコンテキスト情報として指定し、通知を受け取るモジュールやアプリケーションで役立てることができます。配列に定義できるパラメータは次のと

おりです。

- content_type:プレーンまたは XML などコンテンツのタイプ。サポートされるのはテキストのコンテンツだけです。

- content:アプリケーションにだけ意味を持つ文字列。コンテンツには、AV ペア形式、または content_type で指定されたそのほかの形式の情報を指定できます。コンテンツはプロトコル メッセージ本文で送信されます。サポートされるのはテキストのコンテンツだけです。

- notificationReceiver:この引数は、appName 属性または moduleHandle 属性を取ります。アプリケーションの名前が指定され、アプリケーションが設定されている場合、そのアプリケー

ションが通知を受け取るために生成されます。moduleHandle 属性では、モジュールまたはセッションの実行中のインスタンスが指定されます。moduleHandle は、infotag getmod_handle コマンドを使用して取得できます。このハンドルは、アプリケーションの実行中のインスタンスを表します。

• -s subscription_id:登録の ID。この引数は、パラメータとして登録 ID を取り込み、すでに登録されている場合は再登録に使用されます。

戻り値

subscriptionID:登録に割り当てられた一意の ID。

コマンド終了

このコマンドが終了すると、スクリプトが ev_subscribe_done イベントを受け取ります。

set subcriptionInfoArray (notificationReceiver) notifyAppset mySubID [subscription open sip:[email protected] subscriptionInfoArray]

次の例では、イベント パッケージ「msg:」について、登録要求をサーバに送信します。

-----------------------------------------------------------set url sip:[email protected] # set the event-package set subinfo(event) msg

#set the expiration time for the subscription in seconds set subinfo(expirationTime) 500

# specify a header set headers(Subject) "Hi There" set subinfo(protoHeaders) headers

# specify the content set subinfo(protoContentTypes) "text/plain" set subinfo(protoContents) "This is from client"

#set context information for subscription set context(actNum) 1234 set context(pinNum) 5678 set subinfo(subscriptionContext) context

# send the request subscription open $url subinfo -----------------------------------------------------------

Page 166: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-78TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

使用上の注意

• TCL IVR 2.0 では、ハンドラあたりの登録数が 18 に制限されています。スクリプト インスタンスはそれぞれがハンドラであるため、アプリケーション インスタンスが同時に処理できる登録数は最大 18 です。

• ユーザは、サーバから受信する通知の処理方法として次のいずれかの方法を指定できます。

- 登録を実行中の現在のスクリプト インスタンスが通知を処理できる。この方法で処理する場合は、引数にアプリケーション名(appName)と moduleHandle のどちらも指定しないでください。

- 同じまたは別のアプリケーション内に新しいアプリケーション インスタンスを作成して通知を処理できる。この方法で処理する場合は、引数にアプリケーション名(appName)を指定してください。

- 別の実行中のアプリケーション インスタンスが通知を処理できる。この方法で処理する場合は、引数に moduleHandle を指定してください。

• 登録を行うアプリケーションが制御を行うアプリケーションになります。たとえば、通知を処

理して登録を削除します。

• 別のアプリケーションがアプリケーションの制御を引き継ぐようにするには、登録を行ったア

プリケーションを終了する必要があります。たとえば、アプリケーション A が登録を行って「notificationReceiver」がアプリケーション B となるように指定します。アプリケーション A が「call close」を呼び出して終了しない限り、通知はアプリケーション B に送信されません。A が

moduleHandle を指定する場合も同じです。

• スクリプトは、レッグに関連付けられた legID を実行中の登録要求に渡すことができます。そのため、レッグに基づいたデバッグが可能になります。

• event と expirationTime は必須の引数であり、スクリプトで必ず指定する必要があります。

• コンテキスト情報はサーバには送信されず、登録情報と一緒に保持されます。たとえば、

accountNumber や pinNumber など、ユーザに固有の情報は登録内に保持されます。コンテキスト情報は、登録が削除されると常に削除されます。

subscription close既存の登録を削除します。

構文

subscription close subscription_id

引数

• subscription_id:終了する登録の ID。

戻り値

なし

コマンド終了

このコマンドが終了すると、スクリプトが ev_unsubscribe_done イベントを受け取ります。

set mySubID openSubsubscription close mySubID

使用上の注意

なし

Page 167: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-79TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

subscription notify_ack通知イベントへの肯定応答または否定応答を送信します。

構文

subscription notify_ack <subscription_id> [-i notifyAckInfo]

引数

• subscription_id:登録の ID。

• -i notifyAckInfo:次の値を含むことができる結合配列。

- protoHeaders:ヘッダー情報。

- protoContents:コンテンツ情報。

- protoContentTypes:コンテンツ タイプ情報。

- respCode:有効な値は、ack または nak です。指定されない場合、デフォルト値の ack が想定されます。ack の場合は通知への肯定応答が送信され、nak の場合は通知が拒否されます。アプリケーションが通知を拒否する場合、「Warning」などのヘッダーを挿入して、該当する理由がサーバに送信されるようにします。

戻り値

なし

コマンド終了

即時

set mySubID [infotag get evt_subscription_id]set headers(Hello) “Hello, this is ACK header”set ackinfo(protoHeaders) headersset ackinfo(respCode) “ack”subscription notify_ack $mySubID -i ackinfo

使用上の注意

なし

timer lefttimer left は、名前に関連付けられたタイマーの残り秒数を戻します。

構文

timer left type [name]

引数

• type:タイマーの種類(named_timer など)。

• name:アソシエーションのキーとしてこのタイマーに関連付けられた文字列の名前。

戻り値

タイマーの残り秒数。

Page 168: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-80TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

コマンド終了

なし

timer left named_timer timer_1timer left named_timer 1

使用上の注意

なし

timer starttimer start コマンドは、指定した秒数のタイマーを開始します。各タイマーはキーとしての名前に関連付けられており、スクリプトごとに複数の named_timers を指定できます。

構文

timer start type time [name]

引数

• type:タイマーの種類(named_timer など)。

• time:タイマーが作動する時間(秒)。

• name:アソシエーションのキーとしてこのタイマーに関連付けられた文字列の名前。

戻り値

なし

コマンド終了

タイマーが時間切れになると、スクリプトが ev_named_timer イベントを受け取ります。このnamed_timer に関連付けられた名前は、evt_timer_name 情報タグを使用して取得できます。

timer start named_timer 60 timer_1timer start named_timer 100 1

使用上の注意

• 別のタイマーがまだ実行中の場合、このコマンドは前のタイマーを停止し、指定されたタイ

マーを開始します。

timer stoptimer stop コマンドは名前に関連付けられたタイマーを停止します。

構文

timer stop type [name]

引数

• type:タイマーの種類(named_timer など)。

• name:アソシエーションのキーとしてこのタイマーに関連付けられた文字列の名前。

Page 169: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-81TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

戻り値

なし

コマンド終了

なし

timer stop named_timer timer_1timer stop named_timer 1

使用上の注意

なし

Page 170: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 3章 TCL IVR API のコマンド リファレンスTCL IVR コマンド

3-82TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

Page 171: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

C H A P T E R

4-1TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

4

情報タグ

情報タグは、コール レッグ、イベント、スクリプト、現在の設定、および RADIUS から戻された値に関する情報の取得に使用できる識別子です。

(注) 情報タグには 1 つまたは複数のパラメータを持つものもあり、このパラメータは取得、設定、変更が行われる情報をより詳細に特定するために使用します。

情報タグは、用途に応じてグループ分けされます。情報タグ ラベルの最初の 3 文字がグループを示します。

• aaa—RADIUS 情報

• cfg—設定情報

• con—接続情報

• evt—イベント情報

• leg—コール レッグ情報

• med—メディア サービス情報

• sys—システム情報

この章では、使用可能な情報タグとその情報について記載します。

• 説明—情報タグの用途の説明。

• 構文—情報タグの構文。

• モード—情報タグが読み取りまたは読み取り /書き込みのいずれであるか。

• 適用範囲—情報タグを使用できるコンテキスト。一部の情報タグは常時(グローバルに)使用できますが、その他の情報タグは、特定のイベントを受け取ったときだけ有効です。それ以外の状

況で情報タグを使用した場合、スクリプトが終了してエラーが出力されます。たとえば、

ev_setup_done イベントの処理中に evt_dcdigits を呼び出すことはできません。つまり、leg setupコマンドの実行後、ev_setup_done イベントがまだ戻されないうちに infotag get evt_dcdigits コマンドを実行することはできません。実行した場合、スクリプトが終了してエラーが出力されます。

• 戻り値のタイプ:infotag get または infotag set コマンドと一緒に使用した場合に情報タグによって戻される情報のタイプ。

• ダイレクト マッピング:コマンド(infotag get または infotag set コマンドを除く)によって情報タグを直接使用できるかどうか、また、どのコマンドで使用できるか。

(注) 情報タグやパラメータを誤って指定した場合や、目的の適用範囲外で情報タグを使用した場合、ス

クリプトが終了してエラーが出力されます。

Page 172: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-2TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

aaa_accounting_last_sent

aaa_avpair

aaa_avpair_exists

説明 voice-aaa サブシステムから送信された最後のアカウンティング レコードのタイムスタンプを取得します。

構文 infotag get aaa_accounting_last_sent {servertag}

• servertag:サーバ(またはサーバ グループ)の識別子。この値は、次の AAA 設定と同様に method-list-name を示します。aaa accounting connection {default | method-list-name} group group-name

モード 読み取り

適用範囲 servertag の登録が正常に終了したときだけ有効です。

戻り値のタイプ timestamp

ダイレクト マッピング なし

説明 RADIUS によって戻された AV ペアの値を戻します。

authorize コマンドの終了後、RADIUS サーバによってパラメータがAV ペアで戻された可能性があります。この情報タグを aaa_avpair_exists と一緒に使用して、パラメータが戻されたことを確認した後、そのパラメータの値を取得します。有効な VSA AV ペアの名前のリストについては、P.4-3 の「AV ペアの名前」の表を参照してください。

構文 infotag get aaa_avpair avpair-name

モード 読み取り

適用範囲 グローバル

戻り値のタイプ RADIUS によって設定または戻される文字列、数字、ブール(1 または 0)などのすべての値

ダイレクト マッピング なし

説明 RADIUS サーバの戻り値の中で一致した AV ペアの数を戻します。

authorize コマンドの終了後、RADIUS サーバによってパラメータがAV ペアとして戻される場合があります。この情報タグを aaa_avpair と一緒に使用して、パラメータの値を取得する前にパラメータが存在す

るかどうかを確認します。有効な VSA AV ペアの名前のリストについては、P.4-3 の「AV ペアの名前」の表を参照してください。

構文 infotag get aaa_avpair_exists avpair-name

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字

ダイレクト マッピング なし

Page 173: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-3TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

AV ペアの名前

情報タグ aaa_avpair_exists を使用して、VSA の可用性を確認することができます。また、情報タグaaa_avpair を使用して、この VSA で戻された値を取得することができます。これらのコマンドにパラメータとして渡すことができる有効な VSA 名を、次に示します。

(注) aaa 変数が「0」を戻す場合、戻された名前と一致する VSA がないことを示します。

タイプ 名前 説明

aaa h323-ivr-in 「color:blue」または「advprompt:rtsp://www.cisco.com/rtsp/areyouready.au」などの AV ペア形式で、課金サーバからゲートウェイへ情報を送信するための総称 VSA。

h323-ivr-out 「color:blue」または「advprompt:rtsp://www.cisco.com/rtsp/areyouready.au」などの AV ペア形式で、ゲートウェイから課金サーバへ情報を送信するための総称 VSA。

h323-credit-amount アカウントの預金残高が戻されます。

h323-credit-time アカウントの残り通話時間が戻されます。

h323-prompt-id プロンプトの ID が戻されます。

h323-redirect-number 呼の転送番号が戻されます。

h323-redirect-ip-addr 優先ルートの IP アドレスが戻されます。

h323-preferred-lang エンド ユーザの優先言語として課金システムが戻す言語。en(英語)、sp(スペイン語)、ch(中国語)の 3 つの言語がサポートされています。必要に応じて、追加の

言語を定義することができます。

h323-time-and-day 宛先の時刻と曜日。

h323-return-code この情報は、authorization コマンドの発行後にのみ戻され、数値または「Unknown variable name」のいずれかが戻されます。数値は、IVR アプリケーションがどの処理を行う必要があるか、つまり、許可に失敗した原因をエ

ンド ユーザに知らせるために特定の音声ファイルを再生することを示します。「Unknown variable name」が戻される場合、外部の AAA サーバはアウト オブ サービスです。

h323-billing-model 呼で使用される課金モデルを示します。初期値は

0=Credit、1=Debit です。注意 : デビット カード アプリケーションでは、Debit 課金モデルを前提としています。

h323-currency 残高の再生に使用される単位を示す ISO 通貨。デビット カード アプリケーションでは、preferred_language_dollar.au および preferred_language_cent.au の単位を前提としています。

Page 174: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-4TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

aaa_new_guid

cfg_avpair

cfg_avpair_exists

con_all

説明 システムに新しい GUID を生成して戻すように要求します。

構文 infotag get aaa_new_guid

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 CLI によって設定された AV ペアの値を戻します。

構文 infotag get cfg_avpair avpair-name

モード 読み取り

適用範囲 グローバル

戻り値のタイプ RADIUS によって設定または戻される文字列、数字、ブール(1 または 0)などのすべての値

ダイレクト マッピング なし

説明 指定のパラメータまたは AV ペアが CLI によって設定されたかどうかの結果を戻します。

構文 infotag get cfg_avpair_exists avpair-name

モード 読み取り

適用範囲 グローバル

戻り値のタイプ ブール(1 = true; 0=false)

ダイレクト マッピング なし

説明 スクリプトのすべての接続 ID のリストを戻すか、またはマッピングします。

構文 infotag get con_all

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字リスト

ダイレクト マッピング 接続

Page 175: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-5TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

con_ofleg

evt_aaa_status_info

evt_address_resolve_reject_reason

説明 レッグが関与するすべての接続のリストを取得します。確立または破

棄されている接続は含まれません。この情報タグは、1 つのレッグのみにマッピングする必要があります。

構文 infotag get con_ofleg {info-tag | legID}

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字リスト

ダイレクト マッピング 接続

説明 aaa 情報を取得します。たとえば、方式リストを ev_accounting_status_indイベントから取得します。

構文 infotag get evt_aaa_status_info [attribute-name]

• attribute-name:アクセス対象の属性。定義される属性は、method-list-name と status です。属性を指定しない場合、属性のリストを av1#av2#(「#」はデリミタ)の形式で戻します。ステータスの値を次に示します。

- 000:アカウンティングが失敗しました。

- 001:アカウンティングが成功しました。

モード 読み取り

適用範囲 ev_accounting_status_ind

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 set method_list [infotag get evt_aaa_status_info method-list-name]

説明 アドレス解決拒否の理由を戻します。

構文 infotag get evt_address_resolve_reject_reason

モード 読み取り

適用範囲 ev_address_resolved

戻り値のタイプ 数字

ダイレクト マッピング なし

Page 176: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-6TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_address_resolve_term_cause

evt_connections

evt_consult_info

evt_dcdigits

説明 アドレス解決終了の理由を戻します。

構文 infotag get evt_address_resolve_term_cause

モード 読み取り

適用範囲 ev_address_resolved

戻り値のタイプ 数字

ダイレクト マッピング なし

説明 受け取ったイベントと関連した接続 ID のリストを戻します。

構文 infotag get evt_connections

モード 読み取り

適用範囲 ev_handoffev_returnedev_setup_doneev_create_doneev_destroy_done

戻り値のタイプ 数字リスト

ダイレクト マッピング 接続

説明 打診応答イベントから打診情報を戻します。

構文 infotag get evt_consult_info {consultID | transferDest}

モード 読み取り

適用範囲 ev_consult_response

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 leg collectdigits コマンドで収集したディジットを戻します。

構文 infotag get evt_dcdigits

モード 読み取り

適用範囲 ev_collectdigits_done

戻り値のタイプ 文字列

ダイレクト マッピング なし

Page 177: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-7TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_dest_handle

evt_digit

evt_digit_duration

説明 宛先番号に対して登録されているインスタンスのアプリケーション ハンドルを戻します。この値は、宛先がアナログ FXS 電話でビジー(話中)の場合にだけ使用できます。宛先番号に登録されているアプリケー

ションがない場合、値は空の文字列になります。

構文 infotag get evt_dest_handle

モード 読み取り

適用範囲 ev_setup_done

戻り値のタイプ 文字列:TCL アプリケーション ハンドルを表します。

ダイレクト マッピング なし

説明 押されたディジット キーを戻します。

構文 infotag get evt_digit

モード 読み取り

適用範囲 ev_digit_end

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 ディジットが押された秒数を戻します。

構文 infotag get evt_digit_duration

モード 読み取り

適用範囲 ev_digit_end

戻り値のタイプ 数字

ダイレクト マッピング なし

Page 178: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-8TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_disc_iec

evt_disc_rsi

説明 内部エラー コード(IEC)を戻します。複数の IEC がある場合、最後の 1 つだけを戻します。IEC は RADIUS VSA と同じ形式で、ピリオドで区切られた「version.entity.category.subsystem.error.diagnostic」文字列として戻します。

<component> を指定しない場合、このコマンドはピリオドで区切った文字列を IEC の構成要素と一緒に戻します。たとえば、「1.1.180.3.21.0」のようになります。切断に関連付けられた内部エラーがない場合、戻

される文字列は「0.0.0.0.0.0」です。

構文 infotag get evt_disc_iec [<component>]

省略可能な <component> 引数には、次のパラメータのいずれかを使用できます。

• entity:IEC のエンティティ構成要素を戻します。たとえば「1」です。

• category:IEC のカテゴリ構成要素を戻します。たとえば「180」です。

• subsystem:サブシステム構成要素を戻します。たとえば「3」です。

• errcode:サブシステム固有のエラー コード構成要素を戻します。たとえば「21」です。

モード 読み取り

適用範囲 ev_disconnected

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 どこからリリースされたかを示す RSI 数値を戻します。 使用できる RSI がない場合、このコマンドは 0 を戻します。

(注) ev_disconnected イベントを受け取ったときだけ有効です。別のイベントの処理中に呼び出されると、このコマンドはTCL_ERROR を戻し、スクリプトは終了します。

構文 infotag get evt_disc_rsi

モード 読み取り

適用範囲 ev_disconnected

戻り値のタイプ 文字列

ダイレクト マッピング なし

Page 179: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-9TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_endpoint_addresses

evt_event

evt_facility_id

説明 終端点アドレスのリストを戻します。

構文 infotag get evt_endpoint_addresses

モード 読み取り

適用範囲 ev_address_resolved

戻り値のタイプ 文字列

戻り値は次の構造を持ちます。

<endpointAddress>#<endpointAddress>#...

最初の endpointAddress は主アドレスです。その後に続く endpointAddresses は代替アドレスです。

ダイレクト マッピング なし

説明 受け取ったイベントの名前を戻します。

構文 infotag get evt_event

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 ファシリティ メッセージ応答のサービス タイプを戻します。MCID 呼び出し応答の場合、値は ss_mcid_resp です。

構文 infotag get evt_facility_id

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 set facility_id [infotag get evt_facility_id]

使用上の注意 なし

Page 180: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-10TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_facility_report

evt_feature_param

説明 ファシリティ イベントの受け取りをイネーブルにします。

構文 infotag set evt_facility_report <mcid | gtd>

モード 書き込み

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 infotag set evt_facility_report gtd

使用上の注意 • MCID 応答からファシリティ応答を受け取るには、この情報タグの mcid オプションを設定する必要があります。

• GTD 情報を含むファシリティ イベントを受け取るには、この情報タグの gtd オプションを設定する必要があります。

説明 特定機能イベントに関連するパラメータを戻します。

構文 infotag get evt_feature_param {parameter_name}

media_inactivity に対する有効な戻り値は次のとおりです。

no media received:メディアの非作動を検出しました。設定された時間内に RTP または RTCP パケットを受信していません。メディアの非作動条件が満たされる前に RTCP パケットを受信しました。

no control info received:メディアの非作動を検出しました。設定された時間内に RTP または RTCP パケットを受信していません。メディアの非作動条件が満たされる前に RTCP パケットを受信していません。

モード 読み取り

適用範囲 ev_feature

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 infotag get evt_feature_param media_inactivity_type

Page 181: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-11TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_feature_report

説明 スクリプトによる特定の機能イベントの代行受信をイネーブルまたは

ディセーブルにします。

構文 infotag set evt_feature_report {["no_"]event_names}

• event_names:呼の作動中にアプリケーションへのレポートが必要な(または不要な)イベントを定義する、アプリケーション イベント名のリスト。イベント名に「no_」のプレフィックスが付いている場合、レポート不要を意味します。有効な event_names の値は次のとおりです。

- fax

- modem

- modem_phase

- hookflash

- onhook

- offhook

- media_inactivity

モード 書き込み

適用範囲 ev_feature

戻り値のタイプ なし

ダイレクト マッピング なし

例 スクリプトによるフックフラッシュ機能イベントの受け取りをイネー

ブルにし、ファックスおよびモデム機能イベントの受け取りをディ

セーブルにする場合:infotag set evt_feature_report hookflash

nofax nomodem

スクリプトによる media_inactivity の受け取りをイネーブルにする場合:infotag set evt_feature_report media_activity

Page 182: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-12TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_feature_type

evt_gtd

説明 機能イベントを受け取ったときに機能タイプ文字列を戻します。

構文 infotag get evt_feature_type

• 戻り値として有効なイベント名は次のとおりです。

- fax

- modem

- modem_phase

- hookflash

- onhook

- offhook

- media_inactivity

- media_activity

モード 読み取り

適用範囲 ev_feature

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 ハンドルをイベントに含まれる GTD パラメータに関連付けます。

アプリケーションはこのハンドルを使用して、関連付けられている

GTD パラメータを発呼シグナル メッセージに含めることができます。

構文 infotag get evt_gtd <gtd_handle>

モード 読み取り

適用範囲 ev_address_resolvedev_alertev_connectedev_disconnectedev_proceedingev_progressev_setup_indication

戻り値のタイプ 数字。ハンドルをイベントから作成できる場合は 1、それ以外の場合は 0 を戻します。

ダイレクト マッピング なし

例 set handle [infotag get evt_gtd gtd_inf]

使用上の注意 なし

Page 183: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-13TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_handoff ani

evt_handoff argstring

evt_handoff dnis

説明 leg setup コマンドの <transfer>/ フィールドに着信アプリケーションが設定した ani を戻します。

構文 infotag get evt_handoff ani

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 set ani [infotag get evt_handoff ani]

使用上の注意 このコマンドは、handoff イベントでだけ使用できます。

説明 このコマンドは、既存の evt_handoff_string 情報タグに代わるものです。

構文 infotag get evt_handoff argstring

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 set hstring [infotag get evt_handoff argstring]

使用上の注意 このコマンドは、handoff イベントでだけ使用できます。

説明 leg setup コマンドの <transfer>/ フィールドに着信アプリケーションが設定した dnis を戻します。handoff イベントでだけ使用できます。

構文 infotag get evt_handoff dnis

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 set dnis [infotag get evt_handoff dnis]

使用上の注意 なし

Page 184: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-14TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_handoff_legs

evt_handoff proto_headers

evt_handoff_string

説明 アプリケーションに受け渡されたすべてのレッグを戻します。通常は

複数レッグの受け渡しでのコール レッグすべてを取得するために使用しますが、レッグ 1 つの受け渡しにも使用できます。

構文 infotag get evt_handoff_legs

モード 読み取り

適用範囲 ev_handoff

戻り値のタイプ 文字列:スペース文字で区切られた複数の legID を表します。

ダイレクト マッピング なし

説明 受け渡しのヘッダーを取得します。

構文 infotag get evt_handoff proto_headers [<attribute-name>]

<attribute-name>:取得するヘッダーの名前。

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 set AccountInfo [infotag get evt_handoff proto_headers AccountInfo]

The following command returns all headers in a concatenated string. Each header av-pair is separated by a ‘&’:

set allHeaders [infotag get evt_handoff proto_headers]

使用上の注意 <attribute-name> を指定しない場合、各ヘッダーを「&」記号で区切り、すべてのヘッダーを連結した文字列で戻します。

説明 1 つ以上のコール レッグがスクリプトに受け渡されるか、または戻されると、handoff 文字列を戻します。

構文 infotag get evt_handoff_string

モード 読み取り

適用範囲 ev_handoffev_returned

戻り値のタイプ 文字列

ダイレクト マッピング なし

Page 185: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-15TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_iscommand_done

evt_last_disconnect_cause

説明 コマンドが終了したかどうかの結果を戻します。

構文 infotag get evt_iscommanddone

モード 読み取り

適用範囲 ev_returnedev_setup_doneev_collectdigits_doneev_vxmldialog_done

戻り値のタイプ ブール(1 = true; 0 = false)

ダイレクト マッピング なし

説明 この呼の間に検出された最後のエラーの値を戻します。エラーは、こ

の呼に関連付けられたコール レッグで発生した可能性があります。呼の間にエラーが発生しなかった場合は、di_000 を戻します。

この情報タグの値を、次のイベントの処理中に更新します。

• ev_disconnected:プロトコル メッセージで受信した理由種別に設定します。

• ev_disc_prog_ind:プロトコル メッセージで受信した理由種別に設定します。

• ev_collectdigits_done:ev_collectdigits_done イベントがステータスcd_006 を戻した場合、di_028(無効な番号)に設定します。別のディジット収集ステータス コードが戻された場合、変更しません。

• ev_setup_done:呼の確立の試行に関連付けられた原因コードに設定します。呼の確立が成功した場合、値は di_016(正常)です。

• ev_authenticate_done:ev_authenticate_done イベント ステータスがau_000 以外の場合、di_057(ベアラ機能は使用不可)に設定します。イベント ステータスが au_000 の場合、変更しません。

• ev_authorize_done:ev_authorize_done イベント ステータスが ao_000以外の場合、di_057(ベアラ機能は使用不可)に設定します。イベント ステータスが ao_000 の場合、変更しません。

構文 infotag get evt_last_disconnect_cause

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列。文字列の形式については、P.5-8 の「切断の原因」を参照してください。

ダイレクト マッピング なし

Page 186: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-16TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_last_event_handle

evt_last_iec

説明 確立のコマンド ハンドルを戻します。

構文 infotag get evt_last_event_handle

モード 読み取り

適用範囲 ev_address_resolvedev_alert

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 スクリプトが ev_setup_done イベントでエラー ステータスを受け取り、詳細な情報が必要な場合、この情報タグにポーリングしてロータリー

確立の試行に関連する最後の内部エラー コード(IEC)を検索し、着信レッグの発信者に IEC に基づいて該当するメッセージを再生します。この情報タグはどのイベントにも有効です。呼に関連付けられた

IEC がまだない場合、文字列「0.0.0.0.0.0」、または構成要素に対して 0を戻します。

構文 infotag get evt_last_iec [<component>]

省略可能な <component> 引数には、次のパラメータのいずれかを使用できます。

• entity:IEC のエンティティ構成要素を戻します。たとえば「1」です。

• category:IEC のカテゴリ構成要素を戻します。たとえば「180」です。

• subsystem:サブシステム構成要素を戻します。たとえば「3」です。

• errcode:サブシステム固有のエラー コード構成要素を戻します。たとえば「21」です。

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

Page 187: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-17TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_legs

evt_module_handle

evt_module_subevent

説明 受け取ったイベントに関連したレッグ ID のリストを戻します。特定のイベントに対して evt_legs 情報タグがどのレッグを戻すかについては、第 5章「イベント」を参照してください。

構文 infotag get evt_legs

モード 読み取り

適用範囲 ev_authorize_doneev_leg_timerev_digit_endev_hookflashev_disconnectedev_disconnect_doneev_grabev_setup_indicationev_media_doneev_handoffev_returnedev_setup_doneev_collectdigits_doneev_vxml_dialog_doneev_vxmldialog_event

戻り値のタイプ 数字リスト

ダイレクト マッピング レッグ

説明 現在のモジュール イベントを生成したモジュールのモジュール ハンドルを戻します。

構文 infotag get evt_module_handle

モード 読み取り

適用範囲 ev_module_done, ev_module_event

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 処理中の ev_module_event を生成した module return interim コマンドで指定されたモジュール サブイベント名を戻します。そのため、処理中の特定のモジュール イベントに関連付けられたパラメータにアクセスできるようになります。

構文 infotag get evt_module_subevent

モード 読み取り

適用範囲 ev_module_event

戻り値のタイプ 文字列

ダイレクト マッピング なし

Page 188: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-18TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_module_context

evt_msg

説明 このモジュールを module new コマンドで作成したときに指定されたモジュール コンテキストを戻します。

構文 infotag get evt_module_context

モード 読み取り

適用範囲 ev_module_done, ev_module_event

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 メッセージ本文を取得します。

(注) ev_msg_indication イベントの処理時にだけ有効です。

構文 infotag get evt_msg <array-name>

<array_name>:sendmsg コマンドの -p 属性から情報を入力された TCL配列の名前。

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 配列項目名のリスト。

ダイレクト マッピング なし

例 proc act_handle_msg {infotag get evt_msg rx_message

if { [info exists rx_message(fruit)] == 1 } { set fruit $rx_message(fruit) } else { set fruit “peaches” }

set ident [infotag get evt_msg_source] set return_msg(text) “Got your message requesting $fruit, ignoring it”

sendmsg $ident -p return_msg}

使用上の注意 なし

Page 189: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-19TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_msg_source

evt_params

説明 メッセージのソースのハンドルを取得します。

構文 infotag get evt_msg_source

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 proc act_handle_msg {infotag get evt_msg rx_message

if { [info exists rx_message(fruit)] == 1 } { set fruit $rx_message(fruit) } else { set fruit “peaches” }

set ident [infotag get evt_msg_source] set return_msg(text) “Got your message requesting $fruit, ignoring it”

sendmsg $ident -p return_msg}

使用上の注意 • これは、mod_handle 情報タグで戻されるハンドルと同じ種類のハンドルです。sendmsg または handoff コマンドで使用できます。

• この情報タグは、ev_msg_indication イベントの後にだけ有効です。別の場合に呼び出されるとエラーが発生し、スクリプトが失敗し

ます。

説明 module return コマンドの <param-array> パラメータで提供される情報から現在のモジュール空間内に <array-name> という名前の配列変数を作成します。そのため、処理中の特定のモジュール イベントに関連付けられたパラメータにアクセスできるようになります。

構文 infotag get evt_params <array-name>

モード 読み取り

適用範囲 ev_module_done, ev_module_event

戻り値のタイプ 文字列

ダイレクト マッピング なし

Page 190: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-20TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_progress_indication

evt_proto_content

evt_proto_content_type

説明 受信した alert、connected、disconnect、disconnect with PI、proceeding、progress のいずれかのメッセージの経過を示す値を戻します。

構文 infotag get evt_progress_indication

モード 読み取り

適用範囲 ev_alertev_connectedev_progressev_proceedingev_disconnectedev_disc_prog_ind

戻り値のタイプ 数字

ダイレクト マッピング なし

例 set progress [infotag get evt_progress_indication]

使用上の注意 なし

説明 受け取ったイベントのコンテンツを取得するために使用します。コン

テンツはプロトコル メッセージの本文です。

構文 infotag get evt_proto_content

モード 読み取り

適用範囲 ev_notify、ev_subscribe_done、ev_unsubscribe_indication

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 set r_content [infotag get evt_proto_content]

使用上の注意 プレーン テキストや XML テキストなど、テキスト コンテンツだけがサポートされます。

説明 受け取ったイベントのコンテンツ タイプを取得するために使用します。このイベントでは、プロトコル メッセージの本文に含まれるコンテンツのタイプを指定します。

構文 infotag get evt_proto_content_type

モード 読み取り

適用範囲 ev_notify、ev_subscribe_done、ev_unsubscribe_indication

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 set content_type [infotag get evt_proto_content_type]

使用上の注意 プレーン テキストや XML テキストなど、テキスト コンテンツだけがサポートされます。

Page 191: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-21TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_proto_headers

evt_report ev_transfer_request

説明 イベントに関連付けられたプロトコル ヘッダー情報へのアクセスに使用します。

構文 infotag get evt_proto_headers <attribute-name>

<attribute-name>:取得するヘッダーの名前。

モード 読み取り

適用範囲 ev_notify、ev_subscribe_done、ev_unsubscribe_indication

戻り値のタイプ ヘッダー属性の値を含む文字列

ダイレクト マッピング なし

例 set event [infotag get evt_proto_headers Event]set inviteSubject [infotag get evt_proto_headers “Subject”]set all_headers [infotag get evt_proto_headers]

使用上の注意 • このコマンドを使用して、標準および標準以外のヘッダーにアク

セスできます。アプリケーションでは、ヘッダー値をキャッシュ

に格納しません。アプリケーションでヘッダー情報の保管が必要

な場合は、ローカル変数またはグローバル変数に情報を保存する

必要があります。

• <attribute-name> を指定しない場合、各ヘッダーを「&」記号で区切り、すべてのヘッダーを連結した文字列で戻します。

説明 終端点からアプリケーションにコール転送要求イベントを通知できる

ようにします。

構文 infotag set evt_report ev_transfer_request

モード 書き込み

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 infotag set evt_report ev_transfer_request

使用上の注意 • スクリプトは、転送先の終端点へのレッグの確立を実行します。

callinfo(transferCall、transferBy、consultID)フィールドに evt_transfer_info 情報タグで入手できる情報が入力されます。

• callinfo フィールドが入力されたら、転送先の終端点への呼が確立されます。

Page 192: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-22TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_redirect_info

evt_service_control

説明 呼が転送されるときに、転送要求情報を戻します。

構文 infotag get evt_redirect_info {redirectDest | redirectReason | redirectCount| originalDest}

• redirectDest:宛先への呼の確立中に取得したリダイレクト先の番号。

• redirectReason:リダイレクションのタイプ。

- rr_cfb:CF-busy

- rr_cfnr:CF-no answer

- rr_cd:CD-call deflection

- rr_cfu:CF-unconditional

• redirectCount:発生したコール転送の数。

• originalDest:元の送信先番号。

モード 読み取り

適用範囲 ev_setup_done

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 <index> で指数付けされたサービス コントロールを戻します。<index>1 が最初のサービス コントロール フィールドになります。

構文 infotag get evt_service_control <index>

モード 読み取り

適用範囲 ev_address_resolved

戻り値のタイプ 文字列

文字列のコンテンツはアプリケーションによって異なります。コンテ

ンツの形式は、アプリケーションとルート エンティティ間で取り決められます。

(注) アプリケーションがサービス記述子フィールドを処理します。ゲートキーパーとゲートウェイはどちらもサービス記述子のコンテンツを解釈しません。

ダイレクト マッピング なし

Page 193: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-23TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_service_control_count

evt_status

説明 サービス コントロール フィールドの数を戻します。

構文 infotag get evt_service_control_count

モード 読み取り

適用範囲 ev_address_resolved

戻り値のタイプ 数字

ダイレクト マッピング なし

説明 受け取ったイベントのステータスを戻します。この情報タグは、その

イベントを処理する関数の適用範囲でのみ有効です。有効なステータ

スのリストについては、P.5-6 の「ステータス コード」を参照してください。

構文 infotag get evt_status

モード 読み取り

適用範囲 ev_setup_doneev_collectdigits_doneev_media_doneev_disconnectedev_authorize_doneev_authenticate_doneev_vxmldialog_doneev_subscribe_doneev_unsubscribe_doneev_unsubscribe_indication

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 proc act_SubscribeDone { } { puts "***** act_Subscribe : SUBSCRIPTION DONE received" set sub_id [infotag get evt_subscription_id] set status [infotag get evt_status] puts "*** act_subscribe: subscription status=$status" if {$status == "su_000"} { puts "\n Subscription accepted." return } else if {$status == "su_001"} { puts "\n Subscription is pending" return } else {$status == "su_002"} { # subscription request has failed; close the subscription puts "\nSubscription request has failed." set status_text [infotag get evt_status_text] puts "text is: $status_text\n" subscription close $sub_id }}

使用上の注意 戻りコードは何らかのタイプのエラーが発生したことを示します。こ

のため、スクリプトはそのようなエラーを適切に処理できるように記

述する必要があります。

Page 194: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-24TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_status_text

evt_subscription_id

evt_timer_name

説明 イベントに関連付けられたエラー情報を取得します。

構文 infotag get evt_status

モード 読み取り

適用範囲 ev_subscribe_done、ev_unsubscribe_done、ev_unsubscribe_indication

戻り値のタイプ エラー情報がある場合は、それを含む文字列

ダイレクト マッピング なし

例 set sub_id [infotag get evt_subscription_id]set status [infotag get evt_status]puts "*** act_subscribe: subscription status=$status" if {$status == "su_002"} { # subscription request has failed; close the subscription puts "\nSubscription request has failed." set status_text [infotag get evt_status_text] puts "text is: $status_text\n" subscription close $sub_id }

説明 登録または通知に関連するイベントに関連付けられた登録 ID を取得します。

構文 infotag get evt_subscription_id

モード 読み取り

適用範囲 ev_subscribe_done、ev_notify、ev_subscribe_cleanup、ev_unsubscribe_indication

戻り値のタイプ 登録 ID

ダイレクト マッピング なし

例 set sub_id [infotag get evt_subscription id]

使用上の注意 なし

説明 時間切れになった named_timer に関連付けられた名前を取得します。

構文 infotag get evt_timer_name

モード 読み取り

適用範囲 ev_named_timer

戻り値のタイプ 文字列

ダイレクト マッピング なし

Page 195: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-25TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_transfer_info

evt_vxmlevent

説明 転送要求イベントからの転送情報を戻します。

構文 infotag get evt_transfer_info {transferBy | transferDest | consultID}

モード 読み取り

適用範囲 ev_transfer_request

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 スローされた VXML イベントを含む文字列を戻します。これらのイベントの形式は一般に vxml.* です。

VXML sendevent object 拡張を使用してダイアログ マークアップまたはドキュメントからスローされたイベントの形式は、vxml.dialog.* です。sendevent オブジェクトの詳細については、P.1-9 の「SendEvent オブジェクト」を参照してください。

<disconnect/> タグを実行する vxml ドキュメントなど、何らかのイベントが原因でシステムからスローされたイベントの形式は vxml.session.*です。

構文 infotag get evt_vxmlevent

モード 読み取り

適用範囲 ev_vxmldialog_doneev_vxmldialog_event

戻り値のタイプ 文字列

ダイレクト マッピング なし

Page 196: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-26TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

evt_vxmlevent_params

gtd_attr_exists

last_command_handle

説明 イベントに付属するパラメータを取得します。この情報タグは、配列

変数を消去して、sendevent オブジェクト タグの param オプションに含まれるパラメータ名で示されたパラメータ値を入力します。パラメー

タはまた、<exit/> タグと namelist 属性によって戻すこともできます。sendevent オブジェクトの詳細については、P.1-9 の「SendEvent オブジェクト」を参照してください。

どちらの場合も、namelist に音声クリップ変数が含まれていれば、音声クリップ用の ram:// uri 形式を含む文字列値を使用して、TCL スクリプトからパラメータとして使用できます。この情報タグは、指数のスペー

ス区切りリストを戻します。この指数は、パラメータとして情報タグ

に渡された戻り配列変数に追加されたものです。

構文 infotag get evt_vxmlevent_params <array-variable-name>

モード 読み取り

適用範囲 ev_vxmldialog_doneev_vxmldialog_event

戻り値のタイプ 文字列

Parameter: array-variable-name

ダイレクト マッピング なし

説明 属性インスタンスが GTD メッセージ内に存在するかどうかの判別に使用します。

構文 infotag get gtd_attr_exists <gtd_handle><attr_instance>

• <gtd_handle>:GTD ハンドルの名前。ここからアプリケーションが GTD 属性インスタンスの存在を確認します。

• <attr_instance>:このパラメータの形式は <attr_name>、<attr_instance> です。<attr_instance> には、値 -1(「どちらでもよい」という意味)を指定できます。

モード 読み取り

適用範囲 グローバル

戻り値のタイプ ブール(1 = true、0 = false)

ダイレクト マッピング なし

説明 最後のコマンド ハンドルを取得します。

構文 infotag get last_command_handle

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

Page 197: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-27TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg_all

leg_ani

leg_ani_pi

説明 1 つ以上のコール レッグを戻すか、またはマッピングします。これは、leg_incoming と leg_outgoing を組み合わせたものです。

構文 infotag get leg_all

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字リスト

ダイレクト マッピング レッグ

説明 CallInfo の ANI フィールドを戻します。

構文 infotag get leg_ani [legID]

レッグ ID を指定しない場合、この情報タグは、最初の着信コール レッグの ANI フィールドを戻します。着信コール レッグが 1 つ以上ある場合に限り、レッグ ID を指定しなくても有効です。

レッグ ID を指定する場合、この情報タグは、そのコール レッグの ANIフィールドを戻します。コール レッグが無効な場合、スクリプトが終了してエラーが出力されます。

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 発信者番号のプレゼンテーションを示す値を取得します。

構文 infotag get leg_ani_pi

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字リスト

取得する値は、次のいずれかになります。

1:presentation_allowed2:presentation_restricted3:number_lost_due_to_interworking4:reserved_value5:not_present(着信シグナリング メッセージに発信者番号 IE が存在しないことを示す)

ダイレクト マッピング なし

Page 198: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-28TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg_ani_si

leg_dn_tag

leg_dnis

説明 発信者番号のスクリーニングを示す値を取得します。

構文 infotag get leg_ani_si

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字リスト

取得する値は、次のいずれかになります。

1:usr_provided_unscreened2:usr_provided_screening_passed3:usr_provided_screening_failed4:network_provided5:not_present(着信シグナリング メッセージに発信者番号 IE が存在しないことを示す)

ダイレクト マッピング なし

説明 CallInfo の DN フィールドを戻します。ephone から発信された呼では、このフィールドに発信者の DN タグが含まれます。

構文 infotag get leg_dn_tag legID

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 CallInfo の DNIS フィールドを戻します。

構文 infotag get leg_dnis [legID]

レッグ ID を指定しない場合、この情報タグは、最初の着信コール レッグの DNIS フィールドを戻します。着信コール レッグが 1 つ以上ある場合に限り、レッグ ID を指定しなくても有効です。

レッグ ID を指定する場合、この情報タグは、そのコール レッグの DNISフィールドを戻します。コール レッグが無効な場合、スクリプトが終了してエラーが出力されます。

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

Page 199: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-29TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg_display_info

leg_guid

leg_incoming

leg_incoming_guid

説明 CallInfo の display_info フィールドを戻します。ephone から発信された呼では、このフィールドには発信者の名前が含まれます。

構文 infotag get leg_display_info legID

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 レッグの GUID を戻します。

構文 infotag get leg_dnis [legID]

legID が指定しない場合、最初の着信レッグの GUID を戻します。

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 1 つ以上の着信コール レッグを戻すか、マッピングします。

構文 infotag get leg_incoming

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字リスト

ダイレクト マッピング レッグ

説明 レッグの着信 GUID を戻します。

構文 infotag get leg_incoming_guid [legID]

legID が指定しない場合、最初の着信レッグの GUID を戻します。

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

Page 200: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-30TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg_inconnection

leg_isdid

leg_outgoing

説明 この接続に関与するレッグのリストを取得します。この情報タグのパ

ラメータは、1 つの接続にのみマッピングされます。

構文 infotag get inconnection {connID | info-tag}

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字リスト

ダイレクト マッピング レッグ

説明 CallInfo の DID フィールドを戻します。このフィールドは、コール レッグの FinalDestination フラグを反映したブール フィールド(1 と 0)です。

構文 infotag get leg_isdid [legID]

レッグ ID を指定しない場合、この情報タグは、最初の着信コール レッグの DID フィールドを戻します。着信コール レッグが 1 つ以上ある場合に限り、レッグ ID を指定しなくても有効です。

レッグ ID を指定する場合、この情報タグは、そのコール レッグの DIDフィールドを戻します。コール レッグが無効な場合、スクリプトが終了してエラーが出力されます。

モード 読み取り

適用範囲 グローバル

戻り値のタイプ ブール(1 = true; 0 = false)

ダイレクト マッピング なし

説明 1 つ以上の発信コール レッグを戻すか、またはマッピングします。

構文 infotag get leg_outgoing

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字リスト

ダイレクト マッピング レッグ

Page 201: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-31TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg_password

leg_proto_headers

説明 レッグ ID を指定しない場合、この情報タグは、最初の着信コール レッグのパスワード フィールドを戻します。着信コール レッグが 1 つ以上ある場合に限り、レッグ ID を指定しなくても有効です。レッグ ID を指定する場合、この情報タグは、そのコール レッグのパスワードフィールドを戻します。コール レッグが無効な場合、スクリプトが終了してエラーが出力されます。

構文 infotag get leg_password [legID]

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 使用中のプロトコルに関連付けられたヘッダーにアクセスできるよう

にします。

構文 infotag get leg_proto_headers [<attribute-name>] [legID]

<attribute-name>:取得するヘッダーの名前。

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 set AccountInfo [infotag get leg_proto_headers AccountInfo]set inviteSubject [infotag get evt_proto_headers "Subject"]set inviteFrom [infotag get leg_proto_headers “From” leg_incoming]

次のコマンドは、着信 invite メッセージから受信したすべてのヘッダーを連結した文字列で戻します。各ヘッダーの AV ペアは「&」で区切られます。

set allHeaders [infotag get evt_proto_headers]

使用上の注意 • この情報タグを使用すると、VXML ドキュメントまたは TCL IVR2.0 スクリプトから SIP ヘッダーにアクセスできます。

• 現在、SIP invite、subscribe、notify、H.323 setup メッセージのヘッダーへのアクセスだけがサポートされています。

• <attribute-name> を指定しない場合、各ヘッダーを「&」記号で区切り、すべてのヘッダーを連結した文字列で戻します。

• legID を指定しない場合、最初の着信レッグが適用されます。

Page 202: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-32TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg_rdn

leg_rdn_pi

leg_rdn_si

説明 最初の着信レッグからリダイレクト番号を取得します。

構文 infotag get leg_rdn

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 リダイレクト番号のプレゼンテーションを示す値を取得します。

構文 infotag get leg_rdn_pi

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字リスト

取得する値は、次のいずれかになります。

1:presentation_allowed2:presentation_restricted3:number_lost_due_to_interworking4:reserved_value5:not_present(着信シグナリング メッセージにリダイレクト番号 IEが存在しないことを示す)

ダイレクト マッピング なし

説明 リダイレクト番号のスクリーニングを示す値を取得します。

構文 infotag get leg_rdn_si

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字リスト

取得する値は、次のいずれかになります。

1:usr_provided_unscreened2:usr_provided_screening_passed3:usr_provided_screening_failed4:network_provided5:not_present(着信シグナリング メッセージにリダイレクト番号 IEが存在しないことを示す)

ダイレクト マッピング なし

Page 203: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-33TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg_redirect_cnt

leg_remoteipaddress

leg_remote_media_ip_address

leg_remote_signaling_ip_address

説明 最初の着信コール レッグからリダイレクト カウント情報を、または、callid を指定した場合はレッグのリダイレクト カウント情報を取得します。

構文 infotag get leg_redirect_cnt

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字。取得する値は 0 ~ 7 です。

ダイレクト マッピング なし

説明 呼の送信元である終端点のリモート IP アドレスを戻します。IP アドレスを取得できない場合は、空の文字列を戻します。

構文 infotag get leg_remoteipaddress <leg-id>

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列(IP アドレス)

ダイレクト マッピング なし

説明 終端点のリモート メディア IP アドレスを戻します。IP アドレスを取得できない場合は、空の文字列を戻します。

構文 infotag get leg_remote_media_ip_address <leg_id>

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列(IP アドレス)

ダイレクト マッピング なし

説明 終端点のリモート シグナリング IP アドレスを戻します。IP アドレスを取得できない場合は、空の文字列を戻します。

構文 infotag get leg_remote_signaling_ip_address <leg_id>

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列(IP アドレス)

ダイレクト マッピング なし

Page 204: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-34TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg_rgn_noa

説明 リダイレクト番号のアドレス値の種類を取得します。

構文 infotag get leg_rgn_noa

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字

取得する値は、次のいずれかになります。

00:不明、番号あり01:不明、番号なし、プレゼンテーション制限あり02:一意の登録者番号03:一意でない登録者番号04:一意の国(有効)番号05:一意でない国番号06:一意の国際番号07:一意でない国際番号08:ネットワーク固有の番号09:非登録者番号10:登録者番号、オペレータ要11:国番号、オペレータ要12:国際番号、オペレータ要13:番号なし、オペレータ要14:番号なし、キャリアへのカットスルー コール15:キャリアの電話局、ホテル / モーテル、または電話局以外のアクセス終端局からの 950+ コール16:テスト回線テストコード17:一意の 3 桁国番号18:クレジット カード19:国際着信20:キャリアのアクセス コードを含む国または国際番号21:セルラー - グローバル ID GSM22:セルラー - グローバル ID NWT 90023:セルラー - グローバル ID autonet24:モバイル(その他)25:ポーティングされた番号26:VNET27:WZ1 外の国際オペレータ間28:WZ1 内の国際オペレータ間29:オペレータ要 - 処理済み30:国(有効)形式のネットワーク ルーティング番号31:ネットワーク固有形式のネットワーク ルーティング番号32:発信者電話番号と連結されたネットワーク ルーティング番号33:番号ポータビリティ用にスクリーニング済み34:短縮番号

ダイレクト マッピング なし

Page 205: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-35TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

(注) この情報タグは、特定のシグナリング情報にアクセスするための中間メカニズムとして提供されま

す。将来の IOS リリースでこの情報への代替アクセス方法が利用可能になると、使用されなくなる可能性があります。

leg_rgn_npi

(注) この情報タグは、特定のシグナリング情報にアクセスするための中間メカニズムとして提供されま

す。将来の IOS リリースでこの情報への代替アクセス方法が利用可能になると、使用されなくなる可能性があります。

leg_rgn_num

(注) この情報タグは、特定のシグナリング情報にアクセスするための中間メカニズムとして提供されま

す。将来の IOS リリースでこの情報への代替アクセス方法が利用可能になると、使用されなくなる可能性があります。

説明 リダイレクト番号のナンバリング プラン インジケータ値を戻します。

構文 infotag get leg_rgn_npi

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字

取得する値は、次のいずれかになります。

1:ISDN ナンバリング プラン2:データ ナンバリング プラン3:テレックス ナンバリング プラン4:プライベート ナンバリング プラン5:国6:海上モバイル7:陸上モバイル8:ISDN モバイル252:不明

ダイレクト マッピング なし

説明 リダイレクト番号アドレスを戻します。

構文 infotag get leg_rgn_num

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

Page 206: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-36TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg_rgn_pi

(注) この情報タグは、特定のシグナリング情報にアクセスするための中間メカニズムとして提供されま

す。将来の IOS リリースでこの情報への代替アクセス方法が利用可能になると、使用されなくなる可能性があります。

leg_rgn_si

(注) この情報タグは、特定のシグナリング情報にアクセスするための中間メカニズムとして提供されま

す。将来の IOS リリースでこの情報への代替アクセス方法が利用可能になると、使用されなくなる可能性があります。

説明 リダイレクト番号のプレゼンテーションを示す値を戻します。

構文 infotag get leg_rgn_pi

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字

取得する値は、次のいずれかになります。

0:不明1:プレゼンテーション可能2:プレゼンテーション不可3:アドレス使用不可

ダイレクト マッピング なし

説明 リダイレクト番号のスクリーニングを示す値を戻します。

構文 infotag get leg_rgn_si

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字

取得する値は、次のいずれかになります。

1:指定されたユーザはスクリーニングされません。2:指定されたユーザはスクリーニングに合格しました。3:指定されたユーザはスクリーニングに合格できませんでした。4:ネットワークが指定されました。252:不明

ダイレクト マッピング なし

Page 207: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-37TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg_settlement_time

leg_source_carrier_id

leg_subscriber_type

説明 指定したレッグのリストに関連した OSP 決済時間(秒)の最小値を戻します。

構文 infotag get leg_settlement_time {legID | info-tag} [minimum]

minimum を指定すると、レッグ リストの OSP 決済時間の最小値、および AAA AV-pair creditTime の値を戻します。この AAA AV-paircreditTime の値は、これ以前に実行された aaa authorize コマンドによって戻されたものです。

すべての残り通話時間が初期化されていない場合、「uninitialized」が戻されます。

すべての残り通話時間に制限がない場合や、一部は初期化されてそれ

以外は制限がない場合、「uninitialized」が戻されます。

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字

ダイレクト マッピング なし

説明 発信元キャリア ID を取得します。

構文 infotag get leg_source_carrier_id

モード 読み取り

適用範囲 グローバル

戻り値のタイプ なし

ダイレクト マッピング なし

説明 登録者タイプを戻します。

構文 infotag get leg_subscriber_type

モード 読み取り

適用範囲 グローバル

戻り値のタイプ なし

ダイレクト マッピング なし

Page 208: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-38TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg_suppress_outgoing_auto_acct

leg_target_carrier_id

leg_tdm_hairpin

説明 設定した場合、サービス プロバイダー モジュールが自動的に発信コール レッグにアカウンティング パケットを生成することはありません。

構文 infotag get leg_suppress_outgoing_auto_acctinfotag set leg_suppress_outgoing_auto_acct

モード 読み取り /書き込み

適用範囲 グローバル

戻り値のタイプ 設定の場合はなし

取得の場合はブール(0 | 1)

ダイレクト マッピング レッグ

説明 宛先キャリア ID を設定します。

構文 infotag set leg_target_carrier_id

モード 書き込み

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 着信コール レッグで TDM ヘアピニングをイネーブルにします。TDMヘアピン値を発信レッグにコピーし、TDM ヘアピニングに使用できるようにします。

構文 infotag set leg_tdm_hairpin [legID | info-tag] [enable | disable]

モード 書き込み

適用範囲 グローバル

戻り値のタイプ なし

ダイレクト マッピング なし

Page 209: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-39TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg_type

説明 指定されたレッグのインターフェイス タイプを戻します。detail パラメータを指定した場合、指定したレッグのインターフェイス サブタイプを含む詳細な文字列を戻します。detail パラメータは省略可能です。レッグの指定に使用する情報タグに対応するレッグは 1 つだけにする必要があります。

構文 infotag get leg_type [detail] {legID | info-tag}

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

有効な戻り値を以下に示します。

telephonyvoipmmoipvoatmvofrunknownnone

detail パラメータを指定した場合の有効な戻り値は次のとおりです。

voip-h323voip-siptele-analog-emtele-analog-fxotele-analog-fxstele-analog-efxstele-analog-efxotele-digital-isdntele-digital-castele-digital-britele-digital-r2msp-docmsp-faxunknown

ダイレクト マッピング なし

Page 210: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-40TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

leg_username

med_backup_server

説明 レッグ ID を指定しない場合、この情報タグは、最初の着信コール レッグの username フィールドを戻します。着信コール レッグが 1 つ以上ある場合に限り、レッグ ID を指定しなくても有効です。レッグ ID を指定する場合、この情報タグは、そのコール レッグの username フィールドを戻します。コール レッグが無効な場合、スクリプトが終了してエラーが出力されます。

構文 infotag get leg_username [legID]

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 バックアップ サーバを戻すか、または設定します。これは、RTSP ベースのプロンプトに適用されます。

スクリプト再生の試行に URL を使用して URL エラーが発生した場合、URL のサーバ部分を置き換えて、バックアップ サーバのリストから URL の再生を試みます。

たとえば、スクリプトが次の URL からプロンプトの再生を試みて(失敗し)、

rtsp://www.cisco.com:5554/audiofiles/english/anounce.au

バックアップ サーバ 0 が次の URL で構成されている場合、

rtsp://www.real.com/cisco/

次のバックアップ URL から試みます。

rtsp://www.real.com/cisco/audiofiles/english/anounce.au

最大 2 つのバックアップ サーバ(0 と 1)の構成が可能です。

この情報タグは、いずれのプロンプトも再生していないストリームに

だけ適用され、通常、スクリプトで一度だけ実行される初期化セクショ

ンで使用されます。

構文 infotag get med_backupserver index

infotag set med_backupserver index server-URL

モード 読み取り /書き込み

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

Page 211: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-41TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

med_language

med_language_map

med_location

説明 メディアの再生で現在使用されている言語を戻すか、または設定しま

す。

この情報タグは、現在使用されている言語の言語インデックスまたは

(プレフィックスが指定されている場合)言語プレフィックスを戻しま

す。

構文 infotag get med_language [prefix]

infotag set med_language [index | prefix prefix]

モード 読み取り /書き込み

適用範囲 グローバル

戻り値のタイプ 文字列 /数字

ダイレクト マッピング なし

説明 言語インデックスと言語プレフィックスの間のマッピングを戻すか、

または設定します。

この情報タグは、現在使用されている言語の言語インデックスまたは

(プレフィックスが指定されている場合)言語プレフィックスを戻しま

す。

構文 infotag get med_language_map [index | prefix prefix]

infotag set med_language_map index prefix

モード 読み取り /書き込み

適用範囲 グローバル

戻り値のタイプ 文字列 /数字

ダイレクト マッピング なし

説明 スクリプトで使用されるすべての言語のロケーションを戻すか、また

は設定します。言語プレフィックス、カテゴリ、および場所は、CiscoIOS コマンドライン インターフェイス(CLI)から設定可能なものと同じです。

構文 infotag get med_location prefix category有効なカテゴリ値は、1、2、3、4 です。

infotag set med_location prefix category location.カテゴリ 0 を使用すると 1 ~ 4 のカテゴリすべてを設定できます。

モード 読み取り /書き込み

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

Page 212: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-42TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

med_total_languages

media_timer_factor

mod_all_handles

説明 設定されている言語の合計数を戻します。

構文 infotag get med_total_languages

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 数字

ダイレクト マッピング なし

説明 receive-rtcp タイマーを設定します。新しい値はスクリプトの適用範囲内で使用され、ゲートウェイの設定は変更されません。

構文 infotag set media_timer_factor <timer_factor>

timer_factor:2 ~ 1000 の整数。この値は、RTCP 送信間隔の倍数です。推奨値は 5 です。

(注) 2 ~ 1000 の範囲以外の値を使用すると、スクリプトはエラーメッセージを受け取ります。

モード 書き込み

適用範囲 なし

戻り値のタイプ なし

ダイレクト マッピング なし

例 infotag set media_timer_factor 5

説明 ゲートウェイで実行中のすべてのインスタンスのリストを取得しま

す。戻されたハンドルは、handoff および sendmsg コマンドの引数として使用できます。

構文 infotag get mod_all_handles

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 set all_handles [infotag get mod_all_handles]

使用上の注意 • ハンドルはゲートウェイ内でだけ有効な ASCII 文字列です。別のゲートウェイにあるセッションのハンドルは、そのゲートウェイ

へのメッセージ送信には使用できません。

• ハンドルの形式は、TCL スクリプトによる解析や出力向けには設計されていません。ハンドルは、sendmsg または handoff コマンドで内部的に使用されます。

Page 213: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-43TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

mod_handle

mod_handle_service

説明 現在実行中のアプリケーション セッションのハンドルを取得します。戻されたハンドルは、handoff および sendmsg コマンドの引数として使用できます。

構文 infotag get mod_handle

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 set id [infotag get mod_handle]

set my_name new_customerset recorded_name ([infotag get mod_handle]) $my_name

使用上の注意 • ハンドルはゲートウェイ内でだけ有効な ASCII 文字列です。別のゲートウェイにあるセッションのハンドルは、そのゲートウェイ

へのメッセージ送信には使用できません。

• ハンドルの形式は、TCL スクリプトによる解析や出力向けには設計されていません。ハンドルは、sendmsg または handoff コマンドで内部的に使用されます。

• サービスが実行されていない場合は、「unavailable」を戻します。

説明 ネームド サービスのハンドルを取得します。

構文 infotag get mod_handle_service <service>

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 set serv_hndl [infotag get mod_handle_service]

使用上の注意 • ネームド サービスが実行されていない場合は、「unavailable」を戻します。

• 戻されたハンドルは、handoff および sendmsg コマンドの引数として使用できます。

Page 214: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-44TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

set iec

subscription_context

説明 call close または leg disconnect コマンドを発行する前に内部エラーコード(IEC)を設定します。

(注) leg disconnect -<iec> コマンドで、IEC を指定した後に set iec 情報タグを使用すると、コール レッグに関連付けられる IEC が重複します。

構文 infotag set iec <legID | info-tag> <iec>

<iec>:次の引数のいずれかを指定できます。

• media_done_err:ev_media_done イベントからエラー ステータスが戻されたため、スクリプトが呼を終了することを示します。

• collectdigits_done_err:ev_collectdigits_done イベントからエラー ステータスが戻されたため、スクリプトが呼を終了することを示し

ます。

• authenticate_done_err:ev_authenticate_done イベントからエラー ステータスが戻されたため、スクリプトが呼を終了することを示し

ます。

• authorize_done_err:ev_authorize_done イベントからエラー ステータスが戻されたため、スクリプトが呼を終了することを示します。

• media_inactivity_err:メディアの非作動が検出され、報告されたときに呼を切断します。

• accounting_conn-err:アカウンティング サーバへの接続が失われたことをスクリプトが検出したことを示します。

モード 書き込み

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

説明 登録 ID に関連付けられた登録コンテキスト情報を取得します。

構文 infotag get subscription_context <subscription_id> [attribute]

• subscription_id:登録に関連付けられた ID。

• attribute:コンテキスト情報内の属性。

モード 読み取り

適用範囲 グローバル

戻り値のタイプ コンテキストを含む文字列

ダイレクト マッピング なし

例 set accountNumber [infotag get subscription_context $MySubID accountNumber]

使用上の注意 attribute 引数がない場合、すべての属性と値を含む文字列を戻します。各 AV ペアは、「#」文字でエスケープされます。

Page 215: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-45TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

subscription_info

subscription_server_ipaddress

sys_version

説明 登録 ID に関連付けられた登録情報を取得します。取得可能な登録属性は、url、event、expirationTime、subscription_context、および notificationReceiver です。

構文 infotag get subscription_info <subscription_id> <attribute>

• subscription_id:登録に関連付けられた ID。

• attribute:アクセス対象の属性。

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

例 set exp_time [infotag get subscription_info $sub_id expirationTime]

使用上の注意 なし

説明 登録サーバの IP アドレスを取得します。

構文 infotag get subscription_server_ipaddress <subscription_id>

• subscription_id:登録に関連付けられた ID。

モード 読み取り

適用範囲 グローバル

戻り値のタイプ サーバの IP アドレスを含む文字列

ダイレクト マッピング なし

例 set ipaddr [infotag get subscription_server_ipaddress $sub_id]

使用上の注意 なし

説明 TCL IVR API のバージョンを戻します。

構文 infotag get sys_version

モード 読み取り

適用範囲 グローバル

戻り値のタイプ 文字列

ダイレクト マッピング なし

Page 216: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 4章 情報タグ

4-46TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

Page 217: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

C H A P T E R

5-1TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

5

イベントとステータス コード

この章では、TCL IVR スクリプトが受け取るイベントと、戻すステータス コードについて説明します。次の項で構成されます。

• イベント(P.5-1)

• ステータス コード(P.5-6)

イベント

TCL IVR スクリプトが受け取るイベントを以下の表に示します。表に含まれないイベントを受け取ると、そのイベントは無視されます。

イベント 説明

ev_accounting_status_ind 方式リストまたはサーバ グループが到達不能とマークされている場合に受け取ります。

アカウンティング ステータスおよび方式リストは、infotag getevt_aaa_status_info [attribute-name] を使用して求めることができます。

ev_address_resolved 終端点アドレスのリスト。

ev_alert 呼を確立するために、leg setup または leg setup_continue コマンドで生成される中間イベント。callinfo パラメータの notifyEvents に指定された場合、宛先の終端点に正常に警告が送られると、スクリプトが

ev_alert メッセージを受信します。そのため、転送中継地のゲートウェイで実行されるスクリプトは、転送元の終端点へのレッグを切断でき

ます。

このイベントが代行受信イベントの場合、アプリケーションは legsetup_continue コマンドを使用してシステムが確立を続行できるようにする必要があります。

ev_any_event スクリプトが受け取る任意のイベントを表すためにステート マシンで使用できる、特別なワイルドカード イベント。

ev_authorize_done aaa authorize コマンドが終了したことを確認します。evt_status 情報タグを使用して、許可ステータス(許可に成功したか失敗したか)を判

別することができます。

Page 218: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 5章 イベントとステータス コードイベント

5-2TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

ev_authenticate_done authenticate コマンドが終了したことを確認します。evt_status 情報タグを使用して、認証ステータス(認証に成功したか失敗したか)を判別

することができます。

ev_call_timer0 コール レベルのタイマーが時間切れになったことを示します。

ev_collectdigits_done コール レッグの leg collectdigits コマンドが終了したことを確認します。evt_status 情報タグを使用してコマンドの終了ステータスを判別したり、evt_dcdigits 情報タグを使用して収集したディジットを取得することができます。

ev_connected 呼を確立するために、leg setup または leg setup_continue コマンドで生成される中間イベント。

callinfo パラメータの notifyEvents が指定されている場合、システムが宛先スイッチから接続イベントを受け取ると、スクリプトが

ev_connected メッセージを受信します。

このイベントが代行受信イベントの場合、アプリケーションは legsetup_continue コマンドを使用してシステムが確立を続行できるようにする必要があります。

ev_consult_request 終端点からのコール転送打診 ID 要求を示します。

ev_consult_response leg consult request コマンドへの応答を示します。戻りコードについては、ステータス コードの打診ステータスを参照してください。

ev_consultation_done leg consult response コマンドが終了したことを示します。戻りコードについては、ステータス コードの打診応答を参照してください。

ev_create_done connection create コマンドが終了したことを確認します。evt_connection 情報タグを使用して、確立された接続の ID を判別することができます。

ev_destroy_done connection destroy コマンドが終了したことを確認します。evt_connection 情報タグを使用して、破棄された接続の ID を判別することができます。

ev_digit_end ディジット キーが押され、放されたことを示します。evt_digit 情報タグを使用してどのディジットが押されたかを判別したり、

evt_digit_duration 情報タグを使用してディジットが何秒間押されたかを判別することができます。長い間押された # またはディジットを検出する場合にこのイベントを使用します。

ev_disconnect_done コール レッグが消去されたことを示します。

ev_disconnected コール レッグの 1 つを切断する必要があることを示します。このイベントを受け取ったら、スクリプトはそのコール レッグに対して legdisconnect を発行する必要があります。evt_legs 情報タグを使用して、どのコール レッグが切断されたかを判別することができます。

ev_disc_prog_ind DISC/PI メッセージがコール レッグで受信されたことを示します。

ev_facility leg facility コマンドへの応答を示します。

ev_feature スクリプトが受け取る機能イベントを示します。スクリプトは、setevt_feature_report 情報タグを使用して、代行受信する機能イベントをイネーブルまたはディセーブルにできます。スクリプトが ev_feature イベントを受け取ると、get evt_feature_type 情報タグを使用して機能タイプ文字列を取得できます。

イベント 説明

Page 219: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 5章 イベントとステータス コードイベント

5-3TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

ev_grab このスクリプトを呼び出したアプリケーションが、コール レッグを戻すようにスクリプトに要求していることを示します。このイベントを

受け取ると、スクリプトは handoff return コマンドによってレッグを終了して戻すことができます。レッグが戻されるかどうかは、ev_grabイベントを受け取るスクリプトによります。

ev_hookflash フック フラッシュ(通話中のクイック オンフック オフフックなど)を示します。基盤となるプラットフォームまたはインターフェイスで、

フック フラッシュ検出がサポートされていることが前提です。ユーザがフックフラッシュを押すと、TCL スクリプトによって受信されます。

ev_handoff 別のアプリケーションから 1 つ以上のコール レッグを受け取ったことを示します。このイベントを受け取ると、evt_legs および evt_connections 情報タグを使用して、ev_handoff イベントに伴うコールレッグと接続 ID のリストを取得することができます。

ev_leg_timer レッグ タイマーが時間切れになったことを示します。evt_legs 情報タグを使用して、どのレッグ タイマーが時間切れになったかを判別することができます。

ev_media_activity 作動中の呼を検出したことを示します。ある期間メディアが非作動

だった後に、RTP および RTCP パケットが再度送信されると生成されます。

ev_media_done プロンプトの再生が終了または失敗したことを示します。evt_status 情報タグを使用して、終了ステータスを判別することができます。

ev_media_inactivity 非作動の呼を検出したことを示します。指定された時間内に RTP または RTCP パケットが受信されないと生成されます。時間は、CLI ip rtcpreport interval および timer receive-rtcp で指定されます。

ev_named_timer named_timer が時間切れになると受信されます。named_timer の名前は、get evt_timer_name 情報タグを使用して求められます。

ev_proceeding 呼を確立するために、leg setup または leg setup_continue コマンドで生成される中間イベント。

callinfo パラメータの notifyEvents が指定されている場合、システムがリモートの終端から処理イベントを受け取ると、スクリプトは

ev_proceeding メッセージを受信します。

このイベントが代行受信イベントの場合、アプリケーションは legsetup_continue コマンドを使用してシステムが確立を続行できるようにする必要があります。

ev_progress 呼を確立するために、leg setup または leg setup_continue コマンドで生成される中間イベント。

callinfo パラメータの notifyEvents が指定されている場合、システムが宛先スイッチから進捗イベントを受け取ると、スクリプトは

ev_progress メッセージを受信します。

このイベントが代行受信イベントの場合、アプリケーションは legsetup_continue コマンドを使用してシステムが確立を続行できるようにする必要があります。

イベント 説明

Page 220: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 5章 イベントとステータス コードイベント

5-4TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

ev_returned (handoff callappl によって)別のアプリケーションに受け渡されたコール レッグが戻されたことを示します。このイベントには、受け渡し先のアプリケーションで生成された 1 つ以上のコール レッグを伴います。このイベントを受け取ると、evt_legs および evt_connections 情報タグを使用して、ev_returned イベントに伴うコール レッグと接続 ID のリストを取得することができます。また、evt_iscommand_done 情報タグを使用して、転送されたすべてのコール レッグの処理が終了した、つまり handoff callappl コマンドが終了したことを確認することができます。

ev_setup_done leg setup コマンドが終了したことを示します。evt_status 情報タグを使用して、コマンドの終了ステータス(呼の確立に成功したか、または

何らかの原因で失敗したか)を判別することができます。

ev_setup_indication システムが呼を受信したことを示します。このイベントと ev_handoffイベントは、実行インスタンスを開始するイベントです。

ev_synthesizer media play コマンドが終了したことを示します。

ev_tone_detected 要求されたトーンを検出したことを示します。leg tonedetect enable コマンドが発行された後に、最大 1 回生成されます。トーン検出は、このイベントの到着後ディセーブルになります。evt_status 情報タグを使用して、検出されたトーンを判別します。有効なトーン検出ステータ

ス値については、P.5-6 の「ステータス コード」を参照してください。

例:

set fsm(WAIT_FOR_CNG, ev_tone_detected) "act_process_td_event, same_state")

proc act_process_td_event { } { set Tone1 [infotag get evt_status] if { $Tone1 == "td_003" } # Do stuff here }

ev_transfer_request 終端点からアプリケーションへのコール転送を示します。

ev_transfer_status leg setup コマンドで生成される中間イベント。callinfo パラメータのnotifyEvents で指定された場合、スクリプトは ev_trasfer_status メッセージを受信します。そのため ev_status 情報タグにコール転送のステータス値が含まれることになります。

ev_vxmldialog_done VXML ダイアログが終了したときに受け取ります。VXML ダイアログが <exit/> タグを実行した場合か、現在のドキュメントのインタプリタ処理が別のドキュメントに移行されることなく終了した場合に発生す

ることがあります。ダイアログはまた、インタプリタ処理の失敗か、

ドキュメント エラーが原因で終了することもあります。この終了ステータスは、evt_status 情報タグを使用しても入手できます。

ev_vxmldialog_event レッグで開始された VXML ダイアログが sendevent オブジェクト タグを実行したときに、TCL IVR アプリケーションが受け取ります。VXMLサブイベント名は、evt_vxmlevent 情報タグで入手できます。ダイアログ マークアップからスローされたすべてのイベントの形式は、vxml.dialog.* です。ダイアログ終了イベントのような、システムが(おそらく VXML ドキュメントによるタグの実行やイベントのスローへの間接的な反応として)生成したすべてのイベントの形式は

vxml.session.* です。

ev_msg_indication 着信メッセージをシグナル通知します。

イベント 説明

Page 221: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 5章 イベントとステータス コードイベント

5-5TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

ev_session_indication 新しいセッションの開始をシグナル通知します。

ev_session_terminate 現在の TCL セッションを停止します。

ev_subscribe_done 登録要求が完了しました。

ev_unsubscribe_done 登録解除要求が完了しました。

ev_unsubscribe_indication サーバが登録を終了しました。

ev_notify 結果を受け取ったことを通知します。

ev_notify_done 通知要求が完了しました。

ev_subscribe_cleanup 「clear subscription <session id | all」CLI が実行されると受け取ります。

ev_returned 別のアプリケーション インスタンスがコール レッグを戻すと受け取ります。

ev_grab ユーザが、呼をすでに 2 つめのセッションに受け渡した TCL セッションを停止する場合、そのセッションは ev_grab イベントを 2 つめのセッションに送信します。 2 つめのセッションがコール レッグを戻すと、最初のセッションが終了します。2 つめのセッションがコール レッグを戻さない場合、最初のセッションは実行を停止しますが、2 つめのセッションがコール レッグを切断するか戻すまでは、完全には終了しません。

使用上の注意:

• スクリプトは、ev_subscribe_done イベントの戻りステータスを確認する必要があります。このイベントは、応答をサーバから受信したことを示します。戻りコード su_000 は、肯定応答を受け取ったことを示します。戻りコード su_002 以上の場合は、サーバから否定応答を受け取ったことを示します。

• 登録は、ev_subscribe_done イベントと最初の通知をサーバから受信した場合だけ終了します。アプリケーションは、登録が終了したことを確認してからインスタンスを終了する必要があ

ります。

• スクリプトは、サーバが登録を終了すると ev_unsubscribe_indication イベントを受け取ります。このスクリプトは、このイベントに関連付けられたヘッダー情報とコンテンツ情報にアクセ

スできます。

• 登録タイマーが時間切れになった場合、スクリプトは ev_unsubscribe_indication イベントとステータス コード ui_003 を受け取ります。これは内部イベントであるため、このイベントに関連付けられたヘッダー情報やコンテンツ情報はありません。

• スクリプトは、ev_subscribe_cleanup イベントを受け取ったら、登録を終了する必要があります。5 秒以内に応答がない場合、インフラストラクチャが登録を終了します。必ずスクリプトでこのイベントを処理してください。

• 登録を行うインスタンスがすでに終了していて、ev_notify_indication、ev_subscribe_cleanup、または ev_unsubscribe_indication イベントを受け取った場合、新しいインスタンスが作成され、そのインスタンスにイベントが渡されます。

イベント 説明

Page 222: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 5章 イベントとステータス コードステータス コード

5-6TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

ステータス コードevt_status 情報タグは、受け取ったイベントのステータス コードを戻します。ここでは、有効なステータス コードとそれぞれの説明について記載します。

ステータス コードは、機能ごとにグループ分けされています。ステータス コードの最初の 2 文字でグループを表しています。

• au:認証ステータス

• ao:許可ステータス

• cd:ディジット収集ステータス

• cr:打診応答

• cs:打診ステータス

• di:切断の原因

• fa:ファシリティ

• ft:機能タイプ

• ls:レッグの確立ステータス

• ms:メディア ステータス

• td:トーン検出

• ts:転送ステータス

• vd:音声ダイアログ終了ステータス

認証ステータス

認証ステータスは、au_xxx の形式でレポートされます。

許可ステータス

許可ステータスは、ao_xxx の形式でレポートされます。

xxx の値 説明

000 許可に成功しました

001 許可エラーです

002 許可に失敗しました

xxx の値 説明

000 許可に成功しました

001 許可エラーです

002 許可に失敗しました

Page 223: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 5章 イベントとステータス コードステータス コード

5-7TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

ディジット収集ステータス

ディジット収集ステータスは、cd_xxx の形式でレポートされます。

打診応答

機能タイプは、cr_xxx の形式でレポートされます。

打診ステータス

機能タイプは、cs_xxx の形式でレポートされます。

xxx の値 説明

001 ディジットが押されず、収集したディジットが照合に不十分なため、ディジッ

ト収集がタイムアウトになりました

002 ユーザが中止キーを押したため、ディジット収集が中止されました

003 バッファがオーバフローし、収集したディジットが照合に不十分なため、ディ

ジット収集に失敗しました

004 ダイヤル プランに適合するディジットの収集に成功しました

005 パターンの 1 つに適合するディジットの収集に成功しました

006 収集した数字が無効なため、ディジット収集に失敗しました

007 コール レッグに対して ev_disconnected イベントを受け取ったため、ディジット収集が終了しました

008 コール レッグに対して ev_grab イベントを受け取ったため、ディジット収集が終了しました

009 ディジット収集によって、スクリプトにディジット レポートを設定することに成功しました

010 機能またはイベントがサポートされていないか不明であるため、ディジット

収集が終了しました

xxx の値 説明

000 成功

001 失敗(無効な状態)

002 失敗(タイムアウト)

003 失敗(放棄)

004 失敗(プロトコル エラー)

xxx の値 説明

000 打診が成功しました(打診 ID を使用できます)

001 打診が失敗しました(要求がタイムアウトしました)

002 打診が失敗しました

003 打診が失敗しました(要求が拒否されました)

004 打診が失敗しました(レッグが切断されています)

005 打診が失敗しました(操作がサポートされていません)

Page 224: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 5章 イベントとステータス コードステータス コード

5-8TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

切断の原因

切断の原因では、di_xxx の形式が使用され、xxx は Q931 原因コードです。有効な値を以下に示します。

xxx の値 説明

000 初期化されていません

001 割り当てられていない数字です

002 伝送ネットワークへのルートがありません

003 宛先へのルートがありません

004 送信情報トーン

005 トランク プレフィックスのダイヤルミスです

006 不適切なチャネルです

007 呼が認められています

008 プリエンプション

009 プリエンプションが予約されています

016 標準

017 ビジー

018 ユーザが応答しません

019 ユーザが電話に出ません

020 利用者が不在です

021 呼が拒否されました

022 番号が変更されています

026 選択したユーザを消去しています

027 宛先で障害が発生しています

028 無効な番号です

029 ファシリティが拒否されました

030 ステータスの問い合せに対する応答です

034 使用可能な回線はありません

035 要求した VPCI VCI は使用できません

036 VPCI VCI 割り当てエラー

037 セル レートが使用できません

038 ネットワークに障害が発生しています

039 固定フレーム モードはアウト オブ サービスです

040 固定フレーム モードは作動しています

041 一時エラー

042 スイッチが輻輳状態です

043 アクセス情報が廃棄されています

044 要求する回線はありません

045 使用できる VPCI VCI がありません

046 優先呼がブロックされています

047 使用できるリソースがありません

048 DSP エラー

049 QoS が使用できません

Page 225: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 5章 イベントとステータス コードステータス コード

5-9TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

050 ファシリティが契約されていません

053 発呼が妨げられました

055 着呼が妨げられました

057 ベアラ機能が許可されていません

058 ベアラ機能が使用できません

062 情報とクラスが矛盾しています

063 サービスまたはオプションが使用できません

065 ベアラ機能が実装されていません

066 変更タイプが実装されていません

069 ファシリティが実装されていません

070 ディジット情報のみに制限されています

079 サービスが実装されていません

081 呼参照値が無効です

082 チャネルが存在しません

083 呼が存在し、呼 ID が使用中です

084 呼 ID が使用中です

085 中断されている呼はありません

086 呼が消去されています

087 ユーザは CUG ではありません

088 宛先が適合しません

090 CUG が存在しません

091 伝送ネットワークが無効です

093 AAL パラメータはサポートされていません

095 メッセージが無効です

096 必須の情報要素(IE)が見つかりません

097 メッセージ タイプが実装されていません

098 メッセージ タイプが適合しません

099 IE が実装されていません

100 IE コンテンツが無効です

101 不完全な呼の状態のメッセージです

102 タイマーの時間切れで復旧しました

103 実装されていないパラメータが渡されました

110 認識されないパラメータ メッセージが廃棄されました

111 プロトコル エラー

127 インターネットワーキング エラー

128 次のノードへ到達できません

129 Holst Telephony service Provider Module(HTSPM)はアウト オブ サービスです

160 DTL 伝送が適切なノード ID ではありません

xxx の値 説明

Page 226: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 5章 イベントとステータス コードステータス コード

5-10TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

ファシリティ

アドレス解決ステータスを要求するレッグの確立は、ls_xxx の形式でレポートされます。

機能タイプ

機能タイプは、ft_xxx の形式でレポートされます。

レッグの確立ステータス

レッグの確立ステータスは、ls_xxx の形式でレポートされます。

xxx の値 説明

000 補足サービス要求が成功しました

003 補足サービス要求が使用できません

007 無効な呼の状態で補足サービスが起動されました

009 補足サービスが非着信コール レッグで起動されました

010 補足サービスの対話は使用できません

050 MCID サービスが登録されていません

051 MCID 要求がタイムアウトしました

052 MCID がこのインターフェイスには設定されていません

053 不明なエラーです

054 初期化エラーです

xxx の値 説明

001 ファックス

002 モデム

003 Modem_phase

004 フックフラッシュ

005 オンフック

006 オフフック

xxx の値 説明

000 呼が進行中であるか、または正常終了しました。

001 発信コール レッグがループしました。

002 呼の確立がタイムアウトになりました(宛先の電話が鳴っても誰も出ません

でした)。このタイムアウトの上限は、leg setup コマンドで指定できます。

003 ネットワークのリソース不足のため、呼の確立に失敗しました。

004 無効な数字のため、呼の確立に失敗しました。

005 リソース不足や無効な数字以外の原因で、呼の確立に失敗しました。

006 未使用です。確立に失敗しました。

007 宛先がビジー(話中)です。

008 呼が着信側で切断されました。

009 呼が発信側で切断されました。

010 2 つのコール レッグの会議通信または接続に失敗しました。

Page 227: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 5章 イベントとステータス コードステータス コード

5-11TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

メディア ステータスメディア ステータスは、ms_xyy の形式でレポートされます。

011 補足サービスの内部エラーです。

012 補足サービス エラーです。

013 補足サービス エラーです。着信コール レッグが切断されました。

014 呼は別のアプリケーションに受け渡されました。

015 呼の確立はアプリケーション要求により終了しました。

016 送信先番号の発信がブロックされました。

026 レッグがリダイレクトされました。

031 転送要求が確認されました。

032 転送先が警告しています(将来 SIP で使用)。

033 転送先が試行中です(将来 SIP で使用)。

040 転送が成功しました。

041 転送が成功し、転送先が接続されました(SIP のみ)。

042 転送の成功が確認できません(SIP のみ)。

050 転送が失敗しました。

051 要求不備のため転送が失敗しました(SIP のみ)。

052 宛先がビジーのため、転送が失敗しました。

053 要求がキャンセルされたため、転送が失敗しました。

054 内部エラーで転送が失敗しました。

055 実装されていないため、転送が失敗しました(SIP のみ)。

056 サービスが使用不可または未サポートであるため、転送が失敗しました。

057 レッグが切断されているため、転送が失敗しました。

058 複数の選択肢があるため、転送が失敗しました(SIP のみ)。

059 転送要求に応答がなくタイムアウトしたため、転送が失敗しました。

xxx の値 説明

x はコマンドを示す yy はコマンドのステータスを示す

x の値 説明 yy の値 説明

0 media play コマンドのステータス 00 コマンドが正常終了し、プロンプトが

終了しました1

1. 別の media コマンドが正常終了しても media_done イベントを受け取らないため、media play コマンドにだけ有効です。

1 media record コマンドのステータス 01 コマンドが失敗しました

2 media stop コマンドのステータス 02 サポートされていない機能または要

求です

3 media pause コマンドのステータス 03 無効なホストまたは URL が指定されています

4 media resume コマンドのステータス 04 受け取り、切断されました

5 前送りのための media seek コマンドによるステータス

05 キーが押されたため、プロンプトが中

断されました

6 後戻りのための media seek コマンドによるステータス

   

Page 228: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 5章 イベントとステータス コードステータス コード

5-12TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

登録 /通知登録 /通知イベントには次の戻りコードが定義されています。

• ev_subscribe_done su_xxx

• ev_notify_done no_xxx

• ev_unsubscribe_done us_xxx

• ev_unsubscribe_ind ui_xxx

文字列の xxx は、次の値を表します。

トーン検出

トーン検出は、td_xxx の形式でレポートされます。

xxx の値 説明

000 成功

001 保留中です

002 総称エラーです

003 登録の期限が切れています

004 ソケット エラーです

005 DNS エラーです

006 要求のタイムアウト エラーです

007 接続のタイムアウト エラーです

008 接続の作成に失敗しました

009 内部エラーです

010 応答エラーです

099 未定義です

xxx の値 説明

000 無効なインバンド信号

001 FAX_V21

002 FAX_CED

003 FAX_CNG

004 MODEM_2100HZ

005 MODEM_2100HZ_PHASE

006 VOICE_SILENCE

007 CP_TONE

Page 229: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 5章 イベントとステータス コードステータス コード

5-13TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

転送ステータス

転送ステータスは、ts_xxx の形式でレポートされます。

VoiceXML ダイアログ終了ステータスVoiceXML ダイアログ終了ステータスは、vd_xxx の形式でレポートされます。

xxx の値 説明

000 総称転送が成功しました

001 転送が成功し、転送先が警告しています

002 転送が成功し、転送先が応答しています

003 転送が終了しましたが、転送結果は保証されません

004 転送要求が受け付けられました

005 転送中継先が転送先に到達しようとしています

006 転送要求が転送中継先によって拒否されました

007 転送番号が無効です

008 転送先に到達できません

009 転送先がビジーです

xxx の値 説明

000 <exit> タグ、または実行がドキュメントの最後に達したことによる正常な終了です

001 デフォルトの VXML イベント処理が VXML の終了を要求したことによる終了です

002 TCL IVR アプリケーションによる終了です

003 内部エラーです

Page 230: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

第 5章 イベントとステータス コードステータス コード

5-14TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

Page 231: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-1TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

A P P E N D I X A

スクリプト例

(注) ここに挙げるスクリプトは、あくまでも例です。完全に機能するように作成されたものではありま

せん。すべてのスクリプト例の最新バージョンについては、Developer Support Web サイト(http://www.cisco.com/go/developersupport)を参照してください。

SIP ヘッダー

SIP ヘッダーの引き渡し次のスクリプトは、課金番号を求めるプロンプトを再生し、URL「sip:[email protected]」に電話をかけます。課金番号は「AccountInfo」という名前のヘッダーの下にある SIP ヘッダーでこの URLに渡されます。他の静的なヘッダー(Subject、To、From、Priority など)もスクリプトから URL の一部として、または別途渡されます。

# prompt_digit_xfer.tcl# Script Version: 2.0.0#------------------------------------------------------------------## Copyright (c) 2004 by cisco Systems, Inc.# All rights reserved.#------------------------------------------------------------------

proc init { } { global param

set param(interruptPrompt) true set param(abortKey) * set param(terminationKey) #

}

proc act_Setup { } {

leg setupack leg_incoming leg proceeding leg_incoming leg connect leg_incoming

media play leg_incoming http://townsend.cisco.com/vxml/audio/enterAccount.au}

proc act_MediaDone { } {

Page 232: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-2TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例SIP ヘッダー

global param

set pattern(account) .+ set callinfo(alertTime) 30 leg collectdigits leg_incoming param pattern

}proc act_GotAccount { } { global dest global callinfo global headers global account set status [infotag get evt_status] if { $status == "cd_005" } {

set account [infotag get evt_dcdigits]

# These are additional headers for the setup request message set headers(AccountInfo) "[set account]"# this Subject header overwrites the one overloaded in the destination URLset headers(Subject) "HelloSipTCL"set headers(To) "sip:[email protected]"set headers(From) "sip:nobody" set callinfo(protoHeaders) headers

# this destination URL has an overloaded header named "Subject"set dest "sip:[email protected]?Subject=Hello&Priority=Urgent"

leg setup $dest callinfo leg_incoming

} else {puts "\nCall [infotag get con_all] got event $status collecting destination"call close

}}

proc act_CallSetupDone { } {

set status [infotag get evt_status] puts "\n STATUS=$status" if { $status == "ls_000"} { timer start leg_timer 30 leg_incoming return } call close}

proc act_Cleanup { } {

set status [infotag get evt_status] puts "\n STATUS is $status"

# puts "\nCAME BACK FROM TRANSFER AND CLOSING CALL" call close}

init requiredversion 2.0

#----------------------------------# State Machine#---------------------------------- set fsm(any_state,ev_disconnected) "act_Cleanup same_state" set fsm(CALL_INIT,ev_setup_indication) "act_Setup MEDIAPLAY" set fsm(MEDIAPLAY,ev_media_done) "act_MediaDone GETDEST"

Page 233: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-3TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例SIP ヘッダー

set fsm(GETDEST,ev_collectdigits_done) "act_GotAccount PLACECALL" set fsm(PLACECALL,ev_setup_done) "act_CallSetupDone CALLACTIVE" set fsm(CALLACTIVE,ev_leg_timer) "act_Cleanup same_state" set fsm(CALLACTIVE,ev_disconnected) "act_Cleanup CALLDISCONNECT" set fsm(CALLDISCONNECT,ev_disconnected) "act_Cleanup same_state" set fsm(CALLDISCONNECT,ev_media_done) "act_Cleanup same_state" set fsm(CALLDISCONNECT,ev_disconnect_done) "act_Cleanup same_state" set fsm(CALLDISCONNECT,ev_leg_timer) "act_Cleanup same_state"

fsm define fsm CALL_INIT

SIP ヘッダーの取得次のスクリプトは、プロンプト「The number is」に続けて発信側のゲートウェイから受信した課金番号を再生します。受信した別のヘッダーは、デバッグ メッセージに表示されます。

# prompt_digit_xfer.tcl# Script Version: 2.0.0#------------------------------------------------------------------## Copyright (c) 2004 by cisco Systems, Inc.# All rights reserved.#------------------------------------------------------------------

proc init { } { global param

set param(interruptPrompt) true set param(abortKey) * set param(terminationKey) #

}

proc act_Setup { } { leg setupack leg_incoming leg proceeding leg_incoming leg connect leg_incoming infotag set med_language 1

set ani [infotag get leg_ani] set dnis [infotag get leg_dnis]

puts "\n get_headers.tcl: ani is $ani" puts "\n get_headers.tcl: dnis is $dnis" set Subject [infotag get evt_proto_headers Subject] puts "\n get_headers.tcl: Subject = $Subject" set Priority [infotag get evt_proto_headers Priority] puts "\n get_headers.tcl: Priority = $Priority" set From [infotag get evt_proto_headers From] puts "\n get_headers.tcl: From = $From" set To [infotag get evt_proto_headers To] puts "\n get_headers.tcl: To = $To" set Via [infotag get evt_proto_headers Via] puts "\n get_headers.tcl: Via = $Via" set tsp [infotag get evt_proto_headers tsp] puts "\n get_headers.tcl: tsp = $tsp" set phone_context [infotag get evt_proto_headers phone-context] puts "\n get_headers.tcl: phone-context = $phone_context" set AccountInfo [infotag get leg_proto_headers AccountInfo]

Page 234: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-4TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例SIP ヘッダー

puts "\n get_headers.tcl - act_Setup: AccountInfo = $AccountInfo"

media play leg_incoming tftp://townsend.cisco.com/audio/num_is.au %n$AccountInfo}

proc act_CallSetupDone { } {

set status [infotag get evt_status] puts "\n STATUS=$status" if { $status == "ls_000"} { timer start leg_timer 30 leg_incoming return } call close}

proc act_Cleanup { } {

set status [infotag get evt_status] puts "\n STATUS is $status"

# puts "\nCAME BACK FROM TRANSFER AND CLOSING CALL" call close}

init requiredversion 2.0

#----------------------------------# State Machine#---------------------------------- set fsm(any_state,ev_disconnected) "act_Cleanup same_state" set fsm(CALL_INIT,ev_setup_indication) "act_Setup MEDIAPLAY" set fsm(PLACECALL,ev_setup_done) "act_CallSetupDone CALLACTIVE" set fsm(CALLACTIVE,ev_leg_timer) "act_Cleanup same_state" set fsm(CALLACTIVE,ev_disconnected) "act_Cleanup CALLDISCONNECT" set fsm(CALLDISCONNECT,ev_disconnected) "act_Cleanup same_state" set fsm(CALLDISCONNECT,ev_media_done) "act_Cleanup same_state" set fsm(CALLDISCONNECT,ev_disconnect_done) "act_Cleanup same_state" set fsm(CALLDISCONNECT,ev_leg_timer) "act_Cleanup same_state"

fsm define fsm CALL_INIT

Page 235: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-5TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例サービス

サービス

次のスクリプトは、service register コマンドとサービス開始の構成の使用方法を示しています。スクリプトはサービスとして登録され、データを別のスクリプトに提供し、タイマーで起動されて最新

のデータを取得します。

サービスの登録と開始

#-------------------------------------------------------------- # sample_service.tcl - # This script will not accept incoming calls. #--------------------------------------------------------------

set myname "sample_service.tcl"

#------------# Someone is telling us to terminate. The service will unregister# when we close.#proc act_Terminate { } { global myname

puts "$myname received a terminate event, closing up." call close}

#------------# Got an initial event when the script starts running. Register as# as service, get the initial data, and wait on a timer.#proc act_Session { } { global myname

puts "$myname is starting up." puts "Starting timer for 30 seconds" timer start call_timer0 30

init_data

set r [service register data_service] puts " Register of data_service returned $r"}

#-----------# Simulate getting some data. We could subscribe, or be collecting info# from calls. Just keep a counter.#proc init_data { } { global data

set data(run_time) 0 set data(call_count) 0}

proc get_data { } { global data

set data(run_time) [expr $data(run_time)+30]} #------------# The initial call setup has come in. Output some display to the console.# If we are the second session, send a message to the first.#proc act_Setup { } { global myname

Page 236: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-6TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例サービス

puts "$myname got a setup. Refusing the call." leg disconnect leg_all}

#------------# We received a message from another session. #proc act_Rx_Msg { } { global myname global data

set src [infotag get evt_msg_source] infotag get evt_msg msg_array incr data(call_count)

puts "$myname got a message. Respond with the data." set r [sendmsg $src -p data] puts "Send of data to $src returned $r"}

#------------# The timer has gone off. Get the data, and reset the timer.#proc act_Timer { } { puts "Timer went off. Get data, and reset the timer.\n"

get_data timer start call_timer0 30}

#------------# Ignore this event. Output the event name to the console.#proc act_Ignore { } { global myname

set ev [infotag get evt_event] puts "$myname is ignoring event $ev"}

#----------------------------------# State Machine#----------------------------------# set fsm(any_state,ev_session_indication) "act_Session same_state" set fsm(any_state,ev_session_terminate) "act_Terminate same_state" set fsm(CALL_INIT,ev_setup_indication) "act_Setup same_state" set fsm(any_state,ev_msg_indication) "act_Rx_Msg same_state" set fsm(any_state,ev_call_timer0) "act_Timer same_state" set fsm(any_state,ev_any_event) "act_Ignore same_state" fsm define fsm start_state

Page 237: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-7TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例セッション対話

セッション対話

次のスクリプトはセッション対話を示しています。スクリプトは VoiceXML スクリプトを実行してハンドルのリストを取得します。

## Global Data Structures# handles - list of handles of other sessions (not our own)# If they crash, we will not know, so may be out of date.# my_handle - handle of this session# my_leg - leg id of the initial leg we will keep# recorded_names - array of ptrs to RAM based recordings, indexed by handles.# includes our own.#

#------------# The init routine runs once when the script is loaded. # Setup the global media_parm array for use every time we turn on# digit collect.#proc init { } { # Code here runs when the script is loaded.

global media_parm

puts " Loading si_demo_main.tcl

" # # Setup parameter array for collecting digits # set media_parm(interruptPrompt) true set media_parm(enableReporting) true set media_parm(maxDigits) 1}

#------------## When the call comes in, just check in with the si demo# server by firing up the vxml doc that will submit our handle.## I expect it to return a ptr to a recorded name of this caller,# and a list of active participants in the demo.#proc act_Setup { } { global my_handle global handles global my_leg

set handles "" set my_handle [infotag get mod_handle] set my_leg [infotag get leg_incoming] puts " si_demo_main.tcl got a setup for leg $my_leg my_handle=$my_handle "

leg setupack leg_incoming leg connect leg_incoming

set parray(handle) [infotag get mod_handle] leg vxmldialog leg_incoming -u http://px1-sun/dramstha/si_demo.vxml -p parray}

#------------# Playout the list of participants so far.#

Page 238: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-8TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例セッション対話

proc play_list { } { global recorded_names

puts " Playout the list of callers."

foreach handle [array names recorded_names] {lappend playlist $recorded_names($handle)

} if { [llength $playlist] <= 0 } {

media play leg_incoming http://px1-sun/dramstha/no_others.au } else {

media play leg_incoming http://px1-sun/dramstha/participants_are.au $playlist }}

#------------## Handoff the call to another leg.# We could setup a menu to select which one, but here we simply# find the first that is not us.#proc act_do_handoff { } { global handles global my_handle

if { [llength $handles] <= 0 } { puts "Weird handofff, now no handles"

media play leg_incoming http://px1-sun/dramstha/no_others.aufsm setstate RUNNINGreturn

}

foreach handle $handles {set ret [handoff callappl leg_incoming $handle -s "Here is a leg"]if { $ret != "unavailable" } break;

} if { $ret == "unavailable" } {

puts "Bailing out on the handoff"media play leg_incoming http://px1-sun/dramstha/no_others.aufsm setstate RUNNING

} puts " $my_handle handed off leg to $handle status=$ret"} #------------# We got a digit while conferenced. Don't care who sent it, disconnect.#proc act_Control_Conf { } { puts "Destroying the connection" connection destroy con_all} #------------# Main routine to handle a digit when running the demo.# Implement the 4 options, playout help for anything else.#proc act_Control { } { global media_parm global handles

set digit [infotag get evt_digit] puts "Digit entered=$digit" leg collectdigits leg_incoming media_parm

if { [infotag get evt_state_current] != "RUNNING" } {puts " Ignoring digit when not running yet"return

Page 239: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-9TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例セッション対話

}

switch $digit {1 {

play_list}

2 { if { [llength $handles] <= 0 } {

media play leg_incoming http://px1-sun/dramstha/no_others.au } else {

media play leg_incoming http://px1-sun/dramstha/sending_msg.auset oparms(id) msgforeach handle $handles { set r [sendmsg $handle -p oparms]}

}}

3 { if { [llength $handles] <= 0 } {

media play leg_incoming http://px1-sun/dramstha/no_others.au } else {

puts "Playing handing_off.au"media play leg_incoming http://px1-sun/dramstha/handing_off.aufsm setstate PRE_HANDOFF

}}

4 { media play leg_incoming http://px1-sun/dramstha/si_feature_description.au

http://px1-sun/dramstha/si_demo_description.au}

default { media play leg_incoming http://px1-sun/dramstha/si_help.au}

}}

#------------# Got a return from the initial submit to the si demo server.## Save the recorded name of this caller, and the list of handles of other# callers.# Checkin with the other callers if there are any.# Now we are up and running, although we may not have everyones# name until we get responses from the checkin.#proc act_submit_done { } { global my_name global handles global media_parm global recorded_names global my_handle

puts "Tcl script si_demo_main got a return from VXML" set my_name http://px1-sun/dramstha/si_unknown_caller.au set handles ""

set r_event [infotag get evt_vxmlevent] puts " Tcl got on return from initial submit: evt_vxmlevent=$r_event "

if { [string match error $r_event] == 1 } { return }

Page 240: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-10TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例セッション対話

set rlist [infotag get evt_vxmlevent_params parray] set msg " Returned data from si server includes:" foreach i $rlist { append msg "\n $i=$parray($i)\n"

if { $i == "handles" } { set handles $parray($i) regsub $my_handle $handles "" $handles set index [lsearch $handles $my_handle]}if { $i == "recorded_name" } { set my_name $parray($i)}

} puts " Returned data from si server includes: $msg"

set recorded_names([infotag get mod_handle]) $my_name checkin # # We are up and running: puts "****RUNNING handles=$handles" leg collectdigits leg_incoming media_parm media play leg_incoming http://px1-sun/dramstha/si_help.au}

#------------# Checkin with other active calls. Send each a checking message.#proc checkin { } { global handles global my_name

set oparms(recorded_name) $my_name set oparms(id) checkin foreach handle $handles { if { $handle == [infotag get mod_handle] } continue

set r [sendmsg $handle -p oparms]puts "

Just sent a checkin msg to $handle. Status=$r" }}

#------------# All done, disconnect the calls we are handling.#proc act_Cleanup { } { set ev [infotag get evt_event] puts "Script for callids <[infotag get leg_all]> got event $ev" puts "Closing now." call close}

#------------## Send a submit to remove the incoming leg from the database. Tell the other# sessions (calls) we are gone.#proc act_db_remove { } { global handles

puts " Tcl Firing up VXML to submit to remove handle [infotag get mod_handle]" set parray(handle) [infotag get mod_handle] leg vxmldialog leg_incoming -u http://px1-sun/dramstha/si_demo_disconnect.vxml -p parray

set oparms(id) "uncheckin" foreach handle $handles {

Page 241: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-11TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例セッション対話

set r [sendmsg $handle -p oparms]puts "Uncheckin message Send to $handle returned $r"

}}

#------------## Got a message from another instance. Handle it:# If they are checking in, save the info and respond.# If they are responding to a checkin, save the info.# If their caller is sending a msg, tell our caller#proc act_rx_msg { } { global handles global recorded_names global my_name

set src [infotag get evt_msg_source] set parm_list [infotag get evt_msg parm_array]

set msg "" foreach i $parm_list { append msg "\n parm($i)=$parm_array($i)" } puts " Leg [infotag get leg_incoming] got a message with [llength $parm_list] args from $src $msg"

if { [info exists parm_array(id)] } {set id $parm_array(id)

} else {set id "unknown"

}

if { [info exists parm_array(recorded_name)] } {set recorded_name $parm_array(recorded_name)

} else {set recorded_name "http://px1-sun/dramstha/si_unknown_caller.au"

}

if { $id == "checkin" } { lappend handles $src

set recorded_names($src) $recorded_name puts "\n $src checked in. Now handles= $handles" set oparms(id) "checkin_rsp"

set oparms(recorded_name) $my_name set r [sendmsg $src -p oparms] puts "Message Send to $src returned $r" }

if { $id == "checkin_rsp" } { puts "\nSomeone responded to our check in"

if { [lsearch $handles $src] == -1 } { puts "

Error, We don't have src of the checkin response src=$src

handles=$handles" } else { set recorded_names($src) $recorded_name}

} if { $id == "uncheckin" } {

set index [lsearch handles $src]if { $index == -1 } { puts "

Error, We don't know who is unchecking in

Page 242: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-12TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例セッション対話

src=$src handles=$handles" } else { lreplace $handles $index $index }puts "

After uncheckin, handles=$handles" }

if { $id == "msg" } { puts " Telling our incoming leg we got a message" media stop leg_incoming media play leg_incoming http://px1-sun/dramstha/received_msg_from.au $recorded_names($src) }}

#------------## Refuse a handoff of another leg by simply returning it.#proc act_fail_handoff { } { puts " Got a handoff in state [infotag get evt_state_current]. Returning it." set legs [infotag get leg_all] set leg2 [lindex $legs 1] handoff return $leg2 refused}

#------------## We got a handoff of another leg. Conference him# in.#proc act_handoff { } { global leg1 global leg2 global my_leg

puts "Got a handoff. string=[infotag get evt_handoff_string]"

set legs [infotag get leg_all] set leg1 [lindex $legs 0] set leg2 [lindex $legs 1]

if { [infotag get evt_state_current] != "RUNNING" } {puts " Returning handoff leg in state [infotag get evt_state_current]"handoff return $leg2 successfsm setstate RUNNINGreturn

}

media stop $my_leg puts "Connecting legs $leg1 and $leg2 together" connection create $leg1 $leg2}

#------------## The conference create completed. Simply turn on collect digits so # both callers can disconnect.#proc act_create_done { } { global leg1 global leg2 global media_parm

Page 243: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-13TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例セッション対話

puts "Connection Created." leg collectdigits $leg1 media_parm leg collectdigits $leg2 media_parm}

#------------## The conference has been destroyed. Return the other leg to it's# original session.#proc act_destroy_done { } { global my_leg global leg1 global leg2

# Figure out which one to keep. if { $leg1 == $my_leg } {

set retleg $leg2 } else {

set retleg $leg1 }

puts " connection destroyed. Returning leg $retleg, keeping $my_leg" handoff return $retleg "success" media play $my_leg http://px1-sun/dramstha/si_help.au}

#------------# We got the call leg returned to us after handoff. # Just go back to running.#proc act_return { } { global media_parm

puts " Leg was returned. Going back to running" media play leg_incoming http://px1-sun/dramstha/si_help.au leg collectdigits leg_incoming media_parm }

#------------# Ignore an event.#proc act_Ignore { } { set ev [infotag get evt_event] puts " Script for callids <[infotag get leg_all]> in state [infotag get evt_state_current] is ignoring event $ev"}

init

#----------------------------------# State Machine#----------------------------------## States:# SUBMIT - We got a setup message, and submitted our handle to the # server.# RUNNING - Waiting for a command from the caller. Could be playing a # prompt.# HANDED_OFF - We handed off the incoming leg to another session. We # have no legs here.# PRE_HANDOFF - playing a prompt to caller telling them we will handoff# CONFERENCED - Either setting up (waiting for conf create done) or

Page 244: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-14TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例セッション対話

# actually conferenced. # UNCONFING - Disconnecting the conference prior to returning a leg# DBREMOVE - Got a disconnect, removing ourselves from the server Data Base before# closing up shop.# CALLDISCONNECT - All done. Have disconnected the caller.# CALL_INIT - Initial state before a call comes in#

set fsm(any_state,ev_any_event) "act_Ignore same_state" set fsm(any_state,ev_disconnected) "act_db_remove DBREMOVE" set fsm(any_state,ev_msg_indication) "act_rx_msg same_state" set fsm(any_state,ev_handoff) "act_fail_handoff same_state" set fsm(any_state,ev_create_done) "act_create_done same_state" set fsm(any_state,ev_destroy_done) "act_destroy_done RUNNING" set fsm(any_state,ev_digit_end) "act_Ignore same_state" set fsm(any_state,ev_media_done) "act_Ignore same_state"

set fsm(RUNNING,ev_handoff) "act_handoff CONFERENCED" set fsm(CONFERENCED,ev_digit_end) "act_Control_Conf UNCONFING" set fsm(RUNNING,ev_digit_end) "act_Control same_state" set fsm(SUBMIT,ev_vxmldialog_done) "act_submit_done RUNNING" set fsm(DBREMOVE,ev_vxmldialog_done) "act_Cleanup CALLDISCONNECT" set fsm(CALL_INIT,ev_setup_indication) "act_Setup SUBMIT"

set fsm(CALLDISCONNECT,ev_disconnect_done) "act_Ignore same_state" set fsm(PRE_HANDOFF,ev_media_done) "act_do_handoff HANDED_OFF" set fsm(HANDED_OFF,ev_returned) "act_return RUNNING" fsm define fsm CALL_INIT

Page 245: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-15TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例ハイブリッド スクリプト

ハイブリッド スクリプト次のスクリプトは、Message Waiting Indication(MWI)機能を、電話を発信する既存の TCL VoiceXML(VXML)ハイブリッド アプリケーションに追加します。MWI 機能は、SIP 登録 / 通知メカニズムを使用して実装されます。

スクリプトは、IVR を処理する VXML 部分と呼を制御する TCL 部分を分離する方法を示しています。VXML ダイアログは、プロンプトを再生し、入力を収集すると共に、HTTP Web サーバとのインターフェイスとして機能します。メインの TCL スクリプトは、標準の VXML 転送と同等の機能を提供する、呼の制御部分を処理します。ユーザの呼がゲートウェイに着信すると、VXML ダイアログが起動されます。VXML ダイアログは、発信者の ANI でバックエンド サーバを照会します。戻された VXML ドキュメントが、可能な通話先の選択肢をユーザに提示します。これは、個人の電話帳や会社の電話帳でもかまいません。さらに、電話をかけると、VXML 転送要素の属性が VXMLドキュメントから TCL プロシージャに渡されます。戻された情報には、着信側が電話を切った後に実行される VXML ダイアログの場所を含む URL も含まれています。この VXML ダイアログは、ユーザがボイスメール メッセージを聞くと選択した場合に再生されるメッセージをエミュレートします。

呼が接続された後、ユーザには、メールボックスに新しいボイスメールがあることを知らせるプロ

ンプトも再生されます。ユーザはボイスメールを聞くか、無視するかを選択できます。ユーザがボ

イスメールを聞くことを選択すると、保留音処理が着信側に適用されます。この機能は、TCL アプリケーションが、SIP サーバで実行されている WMI イベント パッケージに登録していればイネーブルになります。この例では、MWI イベント パッケージは、別のゲートウェイで実行されている別の TCL アプリケーションです。サーバ アプリケーションは、新しいメッセージがメールボックスに配信されると、クライアント アプリケーションに通知します。

#----------------------------------------------------------------------------------------# Procedure init## The init procedure defines the initial parameters of digit collection. Users are# expected to enter a single DTMF key within 5 secs and are allowed to enter a digit# before a prompt is played out. This is used when a prompt is played to the user# indicating a new voicemail and the user may enter any DTMF key to listen to the# voicemail message.

proc init { } {

global param

set param(maxDigits) 1 set param(interruptPrompt) true set param(initialDigitTimeout) 5}

#-----------------------------------------------------------------------------------------# Procedure init_Config## In this procedure, CLI configurations are read# Users can configure the location of the Tcl script on the router and this is stored in# the variable, baseURI.# Users can configure the number of notifications that are sent before the subscription# closes. The default is 4.#

proc init_ConfigVars {} {

global notNum global baseURI

Page 246: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-16TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例ハイブリッド スクリプト

if {[infotag get cfg_avpair_exists base-url]} { set baseURI [string trim [infotag get cfg_avpair base-url]] } else { set baseURI tftp://TFTP-SERVER/scripts/ }

if {[infotag get cfg_avpair_exists notification-num]} { set notNum [string trim [infotag get cfg_avpair notification-num]] } else { set notNum 4 }

puts "\n\n\n**** Base Url is $baseURI\n\n" puts "\n\n\n**** Number of notifications in CLI is $notNum\n\n"}

#-----------------------------------------------------------------------------------------# Procedure init_perCallVars## In this procedure, the global variables are initialized# The IP address for the SIP server is configured on the router as follows :# ip host x.x.x.x sip-server

proc init_perCallVars { } {

global ani global uri global menu global name global mNew global subId global mTotal global bridge global subUrl global subInfo global counter global tclProc global maxtime global mWaiting global callActive global longpound global destination global message_status global message_summary global connectiontimeout

set uri "" set name "" set bridge "" set baseURI "" set tclProc "" set maxtime "" set longpound "" set destination "" set connectiontimeout "" set counter 0 set callActive 0 set subUrl sip:mwi@sip-server

}

#----------------------------------------------------------------------------------------# Procedure act_Start#

Page 247: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-17TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例ハイブリッド スクリプト

# The act_Start procedure is executed when it receives an ev_setup indication event. # A setup acknowledgement, call proceeding and connect message is sent to the incoming# call leg. The parameters in the subscribe request are defined and a subscribe request # to the MWI event package is sent.#

proc act_Start { } {

global ani global subId global subUrl global subInfo global baseURI

init_perCallVars infotag set med_language 1

leg setupack leg_incoming leg proceeding leg_incoming leg connect leg_incoming

set ani [infotag get leg_ani]

set subInfo(event) mwi set subInfo(notificationReceiver) mwiClient # expiration time is 1 hour set subInfo(expirationTime) 3600 set subinfo(subscriptionContext) context set headers(Account) $ani set headers(Subject) "Message Waiting Indication Subscription" set subInfo(protoHeaders) headers set subInfo(protoContents) "This is a subscription request from mwiclient" set subInfo(protoContentTypes) "text/plain"

set subId [subscription open $subUrl subInfo]

}

#----------------------------------------------------------------------------------------# Procedure act_VxmlDialog1## This procedure is called from act_Notify. It is called once in the application after the# script receives a ev_notify_ind event. # In this procedure, the ANI of the user is submitted to sipWebQuery.php script on the# backend web server. The result is a dynamically generated VXML document which contains# information required for call setup. The user is prompted to enter the destination# number of the person he wishes to call. The destination number together with the# attributes to the VXML transfer element and the URL for the subsequent VXML dialog are# passed back to the Tcl script. The IP address of the Web server is configured on the# router as follows: ip host x.x.x.x HTTP-SERVER

proc act_VxmlDialog1 { } {

global baseURI

puts "\n\n\n******** Procedure VxmlDialog1 ********\n\n"

set vxmlDialog1 {<vxml version="2.0">

<form id="main"><catch event="error.badfetch.com">

<log>Web Server down ! Submit action in VxmlDialog1 failed. </log><exit/>

</catch>

Page 248: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-18TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例ハイブリッド スクリプト

<var name="WEB_SERVER" expr="'http://HTTP-SERVER/vxml/'"/><var name="ANI" expr="session.telephone.ani"/>

<block><submit expr="WEB_SERVER+'sipWebQuery.php'" method="get"

namelist="ANI"/></block>

</form></vxml> }

leg vxmldialog leg_incoming -u $baseURI -v $vxmlDialog1 fsm setstate WEBQUERY}

#----------------------------------------------------------------------------------------# Procedure act_SubscribeDone ## This procedure is executed when an ev_unsubscribe_done event is received. The status of# the event is checked. If the subscription failed, the subscription is closed. proc act_SubscribeDone { } {

global subId

puts "\n\n\n******** Procedure SubscribeDone ********\n\n"

set subId [infotag get evt_subscription_id]

puts "\n\n\n**** Subscription ID is $subId" set status [infotag get evt_status]

switch $status {"sn_000" {puts "\n\n\n**** Subscription status, $status swith ID: $subId is

successful\n\n" }

"sn_001" {puts "\n\n\n**** Subscription status, $status with ID: $subId is pending\n\n"

}"sn_002" {puts "\n\n\n**** Subscription statu, $status swith ID: $subId failed\n\n"subscription close $subId

} }}

#----------------------------------------------------------------------------------------# Procedure act_Notify ## This procedure is received when an ev_notify_ind event is received. Both standard and# non standard SIP headers sent by the server are read. The non standard headers are# MessageStatus and MessageSummary. MessageStatus indicates that there are new# voicemail and MessageSummary indicates the number of new voicemails. # An acknowledgement is sent back to the server in response to the notification event.# This procedure is called every time an ev_notify_ind event is received (except for the# last one). The subscription is terminated depending of the value configured # for the number of times a notification is sent. proc act_Notify { } {

global ani

Page 249: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-19TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例ハイブリッド スクリプト

global mNew global mTotal global notNum global counter global mWaiting

puts "\n\n\n******** Procedure Notify ********\n\n"

set status [infotag get evt_status] puts "\n\n\n**** Status of subscription is $status\n\n"

set subId [infotag get evt_subscription_id] puts "\n\n\n**** Subscription ID is subId=$subId"

set event_header [infotag get evt_proto_headers Event] puts "\n\n\n**** Event header is $event_header\n\n"

set hello [infotag get evt_proto_headers "Hello"] puts "\n\n\n**** Hello Header from Notification is $hello\n\n"

set message_status [infotag get evt_proto_headers "MessageStatus"] regexp {Messages-waiting:([a-z]+)} $message_status dummy mWaiting puts "\n\n\n**** Message Waiting is $mWaiting\n\n"

set message_summary [infotag get evt_proto_headers "MessageSummary"] regexp {Voicemail:([0-9]+)} $message_summary dummy mNew puts "\n\n\n**** New message is $mNew\n\n"

set content_type [infotag get evt_proto_content_type] puts "\n\n\n**** Notification content_type=$content_type\n\n"

set content [infotag get evt_proto_content] puts "\n\n\n**** Notification content=$content\n\n"

set exp_time [infotag get evt_proto_headers Expires] puts "\n\n\n**** Subscription Expires: $exp_time\n\n"

set notifyRecr [infotag get subscription_info $subId notificationReceiver] puts "\n\n\n**** Notification Receiver is $notifyRecr\n\n"

# subscription expired

if {$exp_time == 0} {

puts "\n\n\n**** Subscription is terminated"

set headers(Title) "This is the last acknowledgement from the client" set ackInfo(protoContents) "Ending subscription" } else { set headers(Title) "This is an acknowledgement from the client" set ackInfo(protoContents) "This is CONTENT from client" }

set headers(Account) $ani set ackInfo(protoHeaders) headers set ackInfo(respCode) ack set ackInfo(protoContentTypes) "text/plain"

subscription notify_ack $subId -i ackInfo

if {$counter == 0} { puts "\n\n\n**** Start VXML Dialog \n\n" act_VxmlDialog1 incr counter return }

Page 250: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-20TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例ハイブリッド スクリプト

if {$counter < $notNum} { if {$mWaiting == "yes"} { act_MessageIndication incr counter } return }

puts "\n\n\n**** Number of notifications received is $counter"

# close the subscription puts "\n After $counter notifications, close the subscription now.\n\n"

subscription close $subId fsm setstate CLOSESUB}

#---------------------------------------------------------------------------------------# Procedure act_MessageIndication ## This procedure is first invoked when the script receives an ev_leg_timer event. The# timer event comes up if there is a new voicemail after the call has been connected. # To play a prompt to the user that a new voicemail is in the mailbox, the connection# between the incoming and outgoing call legs is destroyed. #

proc act_MessageIndication {} {

global mNew global param global mTotal global mWaiting global callActive

puts "\n\n\n******** Procedure MessageIndication ********\n\n"

if {$callActive == 1} { set callActive 0 connection destroy con_all } else { leg collectdigits leg_incoming param

media play leg_incoming _new_voicemail.au %n$mNew %s1000 _check_new_voicemail.au } fsm setstate CHECKVOICEMAIL}

#----------------------------------------------------------------------------------------# Procedure act_PlayMessageInd ## This procedure plays the prompt "You have X new voicemails" to the user when the script# receives an ev_destroy_done event is received. The act_PlayMusic is invoked to provide# music on hold treatment to the called party

proc act_PlayMessageInd {} {

global mNew global param global mTotal global mWaiting

puts "\n\n******* Procedure PlayMessageInd ********\n\n" puts "\n\n\n**** Number of new vmail are $mNew\n\n"

Page 251: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-21TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例ハイブリッド スクリプト

leg collectdigits leg_incoming param media play leg_incoming _new_voicemail.au %n$mNew %s1000 _check_new_voicemail.au #media play leg_incoming _you_have.au %n$mNew %s1000 _seconds.au

act_PlayMusic

fsm setstate CHECKVOICEMAIL}

#----------------------------------------------------------------------------------------# Procedure act_PlayMusic ## This procedure plays a music prompt to the called party while the user is checking # his voicemail messages.# proc act_PlayMusic {} {

puts "\n\n******* Procedure PlayMusic ********\n\n"

media play leg_outgoing _song.au fsm setstate MUSICONHOLD}

#----------------------------------------------------------------------------------------# Procedure act_FinalNotify ## This procedure is invoked when the script receives the final ev_notify_ind event. # The SIP server application sends this event when the client script closes the# subscription.

proc act_FinalNotify { } {

puts "\n\n******* Procedure FinalNotify ********\n\n"

set status [infotag get evt_status] puts "\n\nstatus=$status\n\n" set sub_id [infotag get evt_subscription_id]

# you can access any standard headers set From [infotag get evt_proto_headers From] puts "\n\n**** From header is: $From\n\n"

set headers(Title) "Hello, this is the final acknowledgement from the client" set ackInfo(protoHeaders) headers set ackInfo(protoContents) "This is CONTENT from client" set ackInfo(protoContentTypes) "text/plain" set ackInfo(respCode) ack

subscription notify_ack $sub_id -i ackInfo}

#----------------------------------------------------------------------------------------# Procedure act_UnsubscribeDone ## This procedure is invoked when the script receives an ev_unsubscribe_done event. This# event is sent when the subscription is closed.

proc act_UnsubscribeDone { } {

puts "\n\n\n******** Procedure UnsubscribeDone ********\n\n"

set status [infotag get evt_status] puts "\n\n\n**** Status of unsubscribe_done is $status\n\n"

}

Page 252: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-22TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例ハイブリッド スクリプト

#----------------------------------------------------------------------------------------# Procedure act_SubscribeClose ## This procedure is invoked when the script receives an ev_unsubscribe_indication or an# ev_subscribe_cleanup event. An ev_unsubscribe_indcation event is received if the server# sends unsubscribe request, subscription expires or other errors. An# ev_subscribe_cleanup event is received when the CLI, "clear sub all" is executed # The subscription is closed. #

proc act_SubscribeClose { } {

puts "\n\n\n******** Procedure SubscribeClose ********\n\n"

puts "\n\n**** Unsubscribe Indication received or Subscribe Clean up eventreceived\n\n"

set sub_id [infotag get evt_subscription_id] subscription close $sub_id}

#----------------------------------------------------------------------------------------# Procedure act_GetTransferAttr## This procedure handles the transfer attributes sent by VxmlDialog1.# It parses the evParam array to get the attributes.

proc act_GetTransferAttr {} {

global uri global name global bridge global evParam global tclProc global maxtime global longpound global destination global transfer_param global connectiontimeout

puts "\n\n\n******** Procedure GetTransferAttr ********\n\n"

set tclProc GetTransferAttr set ev [infotag get evt_vxmlevent]

if {$ev != "vxml.dialog.transferEvent"} { puts "\n\n\t\t **** Expected event vxml.dialog.transferEvent, got $ev" }

# get all the parameters sent from VXML dialog

set eventParam [infotag get evt_vxmlevent_params evParam]

for {set i 0} {$i < [llength $eventParam]} {incr i} { set [set value [lindex $eventParam $i]] $evParam($value) puts "\n\n\t\t **** $value = $evParam($value)" }}

#----------------------------------------------------------------------------------------# Procedure act_Transfer ## This procedure is called when the application receives the vxml_dialog_done event.

Page 253: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-23TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例ハイブリッド スクリプト

# It checks for the destination number, set the callInfo array with the relevant # transfer attributes and places a call to that number. proc act_Transfer { } {

global uri global name global bridge global tclProc global maxtime global longpound global destination global transfer_param global connectiontimeout

puts "\n\n\n******** Procedure Transfer ********\n\n"

set tclProc Transfer

# check the sub-event name set exp_ev vxml.session.complete set ev [infotag get evt_vxmlevent]

if {$ev != $exp_ev} { puts "\n\n\t\t **** Expected event $exp_ev, got $ev" }

# check the dialog status set status [infotag get evt_status]

switch $status { "vd_000" { #get the transfer attribute, destination infotag get evt_vxmlevent_params transfer_param

if !{[info exists transfer_param(destination)]} { puts "\n\n\t\t **** destination number does not exist" act_LogStatus $status $tclProc }

set destination $transfer_param(destination) set callinfo(alerTime) $maxtime set callinfo(newguid) $longpound leg setup $destination callInfo leg_incoming }

"vd_001" - "vd_002" - "vd_003" { puts "\n\n\t\t **** VXML Dialog status, expected vd_000, got

$status" act_LogStatus $status $tclProc } }}

#----------------------------------------------------------------------------------------# Procedure act_TransferDone ## If leg setup is successful, the 2 parties are conferenced. If not, the status of leg# setup is sent to the web server. If there are new voicemail messages, a timer is # started for 2 seconds and act_MessageIndication procedure is called.

proc act_TransferDone { } { global mNew

Page 254: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-24TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例ハイブリッド スクリプト

global mTotal global tclProc global mWaiting global incoming global outgoing global callActive global destination global transferStatus

puts "\n\n\n******** Procedure TransferDone ********\n\n"

set tclProc TransferDone set status [infotag get evt_status]

puts "\n\n\t\t **** Status of leg setup is $status \n" switch $status {

"ls_000" {set incoming [infotag get leg_incoming]set outgoing [infotag get leg_outgoing]set creditTimeLeft [infotag get leg_settlement_time leg_all]

if { ($creditTimeLeft == "unlimited") || ($creditTimeLeft=="uninitialized")}

{puts "\n\n\t\t **** UnLimited Call Time\n"set callActive 1puts "\n\n\t\t **** Are there new voicemail messages ? $mWaiting

\n\n"if { $mWaiting == "yes" } {timer start leg_timer 2 leg_incoming}} else {

# start the timer for ... if { $creditTimeLeft < 10 } { set beep 1 set delay $creditTimeLeft } else { set delay [expr $creditTimeLeft - 10] } timer start leg_timer $delay leg_incoming } }

"ls_007" {puts "\n\n\t\t **** Call status is $status, Destination is Busy \n"

set transferStatus NOANSWER act_LogStatus $transferStatus $tclProc

}"ls_008" {puts "\n\n\t\t **** Call status is $status, Incoming Disconnected

\n"set transferStatus NEAR_END_DISCONNECT act_LogStatus $transferStatus $tclProc

} "ls_009" {puts "\n\n\t\t **** Call status is $status, Outcoming Disconnect

\n"set transferStatus FAR_END_DISCONNECT act_LogStatus $transferStatus $tclProc

} default { puts "\n\n\t\t **** Call status is $status\n" set transferStatus UNKNOWN act_LogStatus $transferStatus $tclProc } }}

#----------------------------------------------------------------------------------------# Procedure act_VxmlDialog2 ## This procedure is called when the caller chooses to listen to his new voicemail

Page 255: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-25TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例ハイブリッド スクリプト

# messages, the script receives an ev_collectdigits_done event. # After the called party hangs up, the application invokes the second VXML dialog which # is a fake voicemail service for the user.

proc act_VxmlDialog2 { } {

global uri global menu global baseURI global incoming global outgoing global callActive

puts "\n\n\n******** Procedure VxmlDialog2 ********\n\n" puts "\n\n\t\t **** URL of voicemail is $uri \n\n"

if {$callActive == 1} { leg disconnect leg_outgoing set callActive 0 }

set event [infotag get evt_event] set status [infotag get evt_status]

switch $status { "cd_005" { puts "\n\n\n**** Caller wants to check new voicemail \n\n" if {$uri != ""} { leg vxmldialog leg_incoming -u $uri } else { # play media to say cannot access voicemails media play leg_incoming _technicalProblem.au }

} "cd_001" { puts "\n\n\n**** Caller didn't enter digit to check new voicemail\n\n" media stop $outgoing

if {$callActive == 0} { connection create $incoming $outgoing set callActive 1 return } } "cd_010" { puts "\n\n\n**** The digit collection was terminated because

of an unsupported or unknown feature or event\n\n" return } }}

#----------------------------------------------------------------------------------------# Procedure act_VxmlDialog2Done ## This procedure is invoked when the ev_vxmldialog_done event is received.# The conference between the incoming and outgoing call legs is bridged again after the user is done listening to the new voicemail messages.

proc act_VxmlDialog2Done { } {

global tclProc global incoming

Page 256: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-26TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例ハイブリッド スクリプト

global outgoing global callActive

puts "\n\n\n******** Procedure VxmlDialog2Done ********\n\n"

set tclProc VxmlDialog2Done set exp_ev vxml.session.complete set ev [infotag get evt_vxmlevent]

if {$ev != $exp_ev} { puts "\n\n\t\t **** Expected event $exp_ev, got $ev" act_LogStatus $ev $tclProc }

if {[infotag get evt_legs] == $incoming} { media stop $outgoing if {$callActive == 0} { connection create $incoming $outgoing set callActive 1 return }

}}

#----------------------------------------------------------------------------------------# Procedure act_LogStatus ## The status code for leg setup, vxml dialog are sent to the backend web server in this# procedure.

proc act_LogStatus {statusCode tclProcedure} {

global baseURI puts "\n\n\n******** Procedure LogStatus ********\n\n" puts "\n\n\t\t***** Status Code is $statusCode in procedure $tclProcedure"

set vxmlDialog3 {<vxml version="2.0">

<form id="main">

<var name="WEB_SERVER" expr="'http://HTTP-SERVER/vxml/'"/><var name="ANI" expr="session.telephone.ani"/><var name="STATUSCODE" expr="com.cisco.params.code"/><var name="PROCEDURE" expr="com.cisco.params.procedure"/>

<catch event="error.badfetch.com"><log>Web Server down ! Submit action in VxmlDialog3 failed. </log><exit/>

</catch>

<block><log> Tcl Status Code : <value expr="STATUSCODE"/> found in TclProcedure : <value expr="PROCEDURE"/></log><submit expr="WEB_SERVER+'status.php'" method="get" namelist="ANISTATUSCODE PROCEDURE"/>

</block>

</form></vxml> }

set tclStatusParam(code) $statusCode set tclStatusParam(procedure) $tclProcedure

leg vxmldialog leg_incoming -u $baseURI -v $vxmlDialog3 -p tclStatusParam fsm setstate LOGSTATUS

Page 257: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-27TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例ハイブリッド スクリプト

}

#----------------------------------------------------------------------------------------# Procedure act_Timer ## This procedure is invoked when the timer expires. If the call duration is unlimited,# this will not be invoked.

proc act_Timer { } {

global beep global incoming global outgoing

puts "\n\n\n******** Procedure Timer ********\n\n"

set incoming [infotag get leg_incoming] set outgoing [infotag get leg_outgoing] if { $beep == 0 } { #insert a beep ...to the caller connection destroy con_all set beep 1 } else { connection destroy con_all fsm setstate LASTWARN }}

proc act_LastWarn { } { media play leg_incoming _outOfTime.au}

proc act_Destroy { } { media play leg_incoming _beep.au}

#----------------------------------------------------------------------------------------# Procedure act_PlayMessageIndDone # When the script receives an ev_media_done event is received, this procedure will be# executed. If the event happened on the outgoing leg, the music prompt is repeated to # the called party. If the event is received on the incoming leg, the prompt playout # is terminated on the outgoing side and the 2 legs are conferenced. proc act_PlayMessageIndDone { } {

global callActive global incoming global outgoing

puts "\n\n\n******** Procedure PlayMessageIndDone ********\n\n"

set incoming [infotag get leg_incoming] set outgoing [infotag get leg_outgoing]

if {[infotag get evt_legs] == $outgoing} { media play leg_outgoing _song.au return } if {[infotag get evt_legs] == $incoming} { media stop $outgoing if {$callActive == 0} { connection create $incoming $outgoing set callActive 1 return }

Page 258: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-28TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例ハイブリッド スクリプト

}}proc act_Beeped { } {

global incoming global outgoing

connection create $incoming $outgoing}

proc act_ConnectedAgain { } {

puts "\n\n\t\t***** Call Connected Again\n\n "}

#----------------------------------------------------------------------------------------# Procedure act_HandleOutgoing## When the called party hangs up, the connection is destroyed proc act_HandleOutgoing { } {

global outgoingDisconnect

puts "\n\n\t\t********* Procedure HandleOutgoing *********\n\n "

if {[infotag get evt_legs] == [infotag get leg_outgoing]} {

# Outgoing disconnected

connection destroy con_all set outgoingDisconnect 1 } else { call close fsm setstate CALLDISCONNECT }}

#----------------------------------------------------------------------------------------# Procedure act_LongPound## If the user enters the Pound key, the connection to the called party will be destroyed. # The user hear the voicemail emulation in VxmlDialo2

proc act_LongPound { } {

puts "\n\n\n******** Procedure LongPound ********\n\n" puts "\n\n\t\t***** Calling Party entered long pound"

set DURATION 1000

if {[infotag get evt_digit] != "#"} { fsm setstate same_state } else { set duration [infotag get evt_digit_duration]

if {$duration < $DURATION} { fsm setstate same_state } else { connection destroy con_all } }}

#---------------------------------------------------------------------------------------

Page 259: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-29TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例ハイブリッド スクリプト

# Procedure act_Cleanup## This procedure is invoked when the application receives an ev_disconnected event.

proc act_Cleanup { } {

puts "\n\n\n******** Procedure Cleanup ********\n\n" call close}

#----------------------------------------------------------------------------------------# Procedure act_SessionClose## This procedure will be invoked if a script receives an ev_session_terminate event. # Note that this will not be invoked in this application since this application requires an incoming call leg

proc act_SessionClose { } {

puts "\n\n\n******** Procedure SessionClose ********\n\n" call close}

proc act_Ignore { } {# Dummy Procedure puts "Event Capture"}

requiredversion 2.0init

init_ConfigVars

#----------------------------------# State Machine#---------------------------------- set fsm(any_state,ev_disconnected) "act_Cleanup same_state" set fsm(any_state,ev_subscribe_done) "act_SubscribeDone

SUBSCRIBED" set fsm(any_state,ev_notify_ind) "act_Notify

NOTIFIED" set fsm(any_state,ev_unsubscribe_done) "act_UnsubscribeDone

same_state" set fsm(any_state,ev_unsubscribe_indication) "act_SubscribeClose same_state" set fsm(any_state,ev_subscribe_cleanup) "act_SubscribeClose same_state" set fsm(any_state,ev_session_terminate) "act_SessionClose same_state"

set fsm(CALL_INIT,ev_setup_indication) "act_Start SUBSCRIBE" set fsm(NOTIFIED,ev_media_done) "act_Ignore same_state" set fsm(CHECKVOICEMAIL,ev_collectdigits_done) "act_VxmlDialog2 same_state" set fsm(MUSICONHOLD,ev_media_done) "act_PlayMessageIndDone same_state" set fsm(CLOSESUB,ev_notify_ind) "act_FinalNotify same_state"

set fsm(WEBQUERY,ev_vxmldialog_event) "act_GetTransferAttr same_state" set fsm(WEBQUERY,ev_vxmldialog_done) "act_Transfer TRANSFER" set fsm(TRANSFER,ev_setup_done) "act_TransferDone CALLACTIVE"

Page 260: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

A-30TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

付録 A スクリプト例ハイブリッド スクリプト

set fsm(CALLACTIVE,ev_leg_timer) "act_MessageIndication CHECKVOICEMAIL" set fsm(CALLACTIVE,ev_disconnected) "act_HandleOutgoing CONNDESTROY" set fsm(CALLACTIVE,ev_digit_end) "act_LongPound CONNDESTROY" set fsm(CHECKVOICEMAIL,ev_vxmldialog_done) "act_VxmlDialog2Done same_state" set fsm(CHECKVOICEMAIL,ev_create_done) "act_ConnectedAgain CALLACTIVE" set fsm(LOGSTATUS,ev_vxmldialog_done) "act_Cleanup same_state" set fsm(CHECKVOICEMAIL,ev_destroy_done) "act_PlayMessageInd same_state" set fsm(PLAYBEEP,ev_media_done) "act_Beeped same_state" set fsm(INSERTBEEP,ev_destroy_done) "act_Destroy same_state" set fsm(INSERTBEEP,ev_media_done) "act_Beeped same_state" set fsm(INSERTBEEP,ev_create_done) "act_ConnectedAgain CALLACTIVE" set fsm(LASTWARN,ev_destroy_done) "act_LastWarn CALLDISCONNECT" set fsm(CALLDISCONNECT,ev_disconnect_done) "act_Cleanup same_state" set fsm(CALLDISCONNECT,ev_media_done) "act_Cleanup same_state" set fsm(CALLDISCONNECT,ev_disconnect_done) "act_Cleanup same_state" set fsm(CALLDISCONNECT,ev_leg_timer) "act_Cleanup same_state" fsm define fsm CALL_INIT

Page 261: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

1TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

G L O S S A R Y

この章では、このマニュアル全体で使用される共通の専門用語および略語の一覧を示します。インターネットワーキング

の専門用語および略語の詳細については、次の Web サイトの「インターネットワーキング用語・略語集」を参照してください。

http://www.cisco.com/univercd/cc/td/doc/cisintwk/ita/index.htm

A

AAA 認証、許可、アカウンティング。Cisco ルータまたはアクセス サーバにアクセス制御を確立するための重要なフレームワークを提供する、一連のネットワーク セキュリティ サービス。

ANI 自動番号識別。「発呼者」と同じ。

API アプリケーション プログラミング インターフェイス。

AV ペア 認証で使用する属性値のペア。

C

CDR コール データ レコード。

CLI コマンドライン インターフェイス。

D

DID ダイレクト イン ダイヤル。発信者に追加のディジットをダイヤルするように要求するのではなく、電話をかけるときに最初にダイヤルした番号(DNIS)がゲートウェイで使用される呼。

DNIS 着信電話番号通知サービス。

DSP デジタル シグナリング プロセッサ。

DTMF デュアル トーン マルチ周波数。2 つの同時音声帯域トーンを使用したダイヤル(タッチ トーンなど)。

F

FSM 有限状態マシン。

Page 262: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

Glossary

2TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

I

IE 情報要素。

IVR 対話型音声応答。話し言葉やより一般的な DTMF シグナリング形式のユーザ入力に対して、事前に記録されたメッセージ形式で電話回線に情報を提供するシステムを表すために使用される用語。たとえ

ば、電話で残高を確認できるようにする銀行のシステムや自動株価情報システムなどがあります。

R

RADIUS リモート アクセス ダイヤルイン ユーザ サービス。認証、許可、またはアカウンティングなどのアクセス制御で使用されるプロトコル。

RTSP リアルタイム ストリーミング プロトコル。オーディオやビデオなどのリアルタイム データの配信制御を行うプロトコル。データの送信元は、ライブ オーディオやビデオなどのライブ データ フィードと、事前に記録されたイベントなどの格納済みコンテンツの両方を含めることができます。RTSP は、RTPや HTTP などの確立されたプロトコルと協調動作するように設計されています。

T

TCL Tool Command Language。Cisco IOS ソフトウェア コードに対して内部と外部の両方で、ゲートウェイ製品の場合に使用されるスクリプト言語です。

TFTP トリビアル ファイル転送プロトコル。ネットワーク上でコンピュータからコンピュータへのファイル転送を実現する FTP の簡易バージョンです。通常は、クライアント認証(たとえば、ユーザ名とパスワード)を使用しません。

TTS リアルタイム ストリーミング プロトコル。オーディオやビデオなどのリアルタイム データの配信制御を行うプロトコル。データの送信元は、ライブ オーディオやビデオなどのライブ データ フィードと、事前に記録されたイベントなどの格納済みコンテンツの両方を含めることができます。RTSP は、RTPや HTTP などの確立されたプロトコルと協調動作するように設計されています。

U

URI ユニフォーム リソース識別子。インターネット オブジェクトの名前をカプセル化し、名前空間の識別情報によってラベルを付けるフォーマット済み識別子のタイプです。これにより、登録済み名前空間に

名前のユニバーサル セットのメンバーを、または登録済みプロトコルや名前空間を参照するアドレスのメンバーを生成します。[RFC 1630]

V

VoFR Voice over Frame Relay。VoFR によって、ルータはフレーム リレー ネットワーク上で音声トラフィック(電話の音声や FAX など)を搬送することができます。音声トラフィックは、フレーム リレー上で送信されるとき、フレーム リレー ネットワーク上の伝送用に FRF.12 カプセル化によってセグメント化とカプセル化が行われます。

VoIP Voice over IP。POTS と同様の機能、信頼性、音声品質を備えた IP ベース インターネット上で、通常の電話方式の音声信号を搬送する仕組み。VoIP によって、ルータは IP ネットワーク上で音声トラフィック(電話の音声や FAX など)を搬送することができます。VoIP では、DSP が音声信号をフレームにセグメント化します。それらのセグメントは 2 つのグループに結合され、音声パケットに格納されます。これらの音声パケットは、ITU-T 規格 H.323 に準拠した IP を使用して転送されます。

Page 263: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

Glossary

3TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

実行インスタンス スクリプトを実行するために生成される TCL インタプリタのインスタンス。

接続 あるコール レッグの着信音声ストリームが別のコール レッグの発信音声ストリームとして送信されるように、2 つのストリームまたはコール レッグを結び付けること。

Page 264: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

Glossary

4TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

Page 265: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

I N D E X

1TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

D

Developer Support利用  1-4

I

IVR用語の意味  1-2

T

TCL IVRact_beeped プロシージャ  2-8act_callsetupdone プロシージャ  2-6act_cleanup  2-8act_cleanup プロシージャ  2-8act_connectedagain プロシージャ  2-8act_destroy プロシージャ  2-7act_gotdest プロシージャ  2-6act_ignore プロシージャ  2-8act_setup プロシージャ  2-5, 2-8act_timer プロシージャ  2-7Finite State Machine  2-2init プロシージャ  2-5グローバル変数  2-2呼固有の変数  2-2サポートされる機能  1-4スクリプトの作成  2-4スクリプトの使用方法  2-1スクリプトのプロンプト  2-4スクリプトの例  2-4前提条件  1-3動作関数  2-2Version 2.0 のしくみ  2-2利点  1-3

TCL IVR commandsleg disconnect  2-8

Tool Command Language定義  1-2

V

vxml アプリケーション  1-6

拡張された複数言語のサポート  1-5

記号

注  xxiii注意  xxiiiヒント  xxiiiワンポイント アドバイス  xxiii

スタティック プロンプト  1-2

ダイナミック プロンプト  1-2

注釈記号  xxiii

Page 266: TCL IVR 2.0 プログラミング ガイド - Cisco...Contents vii TCL IVR 2.0 プログラミング ガイドOL-0505-02-J phone assign 3-66 phone query 3-66 phone unassign 3-67 playtone

Index

2TCL IVR 2.0 プログラミング ガイド

OL-0505-02-J

表記法  xxiiiヒント記号  xxiii

プロンプト

スタティック  1-2ダイナミック  1-2

ユーザ入力

形式  1-2

ワンポイント アドバイス 記号  xxiii