はじめに
この記事では、ダイヤラーを介してユーザーが入力した一連の番号を読み取り、入力の正確性を確認し、入力された番号をサブスクライバーに失う音声アプリケーションの作成を検討します。 同意します。これは電話セルフサービスポータルでかなり一般的なタスクです。
アプリケーションは、 3CX Call Flow Designerを使用してこのタスクを実行します。 アプリケーションは次のように機能します。
- 3CX CFDレポート:ユーザー番号を入力してください
- ユーザーは1234をダイヤルしています
- 3CX CFDレポート:入力されたユーザー番号は1234です。確認するには、1を押して再入力し、2を押します。
アプリケーションのさまざまな部分で数値の再現が必要になる場合があるため、別のユーザーコンポーネントに配置します。 CFDを使用すると、このようなカスタムコンポーネントを作成できます。
以前の記事では、発信呼び出し (呼び出しの完了時にEmail Senderコンポーネントを使用してレポートを送信できる)のCFDアプリケーションの作成、 データベースを使用したCFDの作業 (サブスクライバー番号の取得にも使用できる)、および着信呼び出しのルーティングを検討したことを思い出してください時刻 (発信通話と組み合わせることができます)および電子メールメッセージの送信 (たとえば、電話で注文を通知するため)。
3CX CFD開発環境は無料であることに注意してください。 ただし、音声アプリケーションは、ProおよびEnterpriseの3CXエディションでのみ動作します。 CFD はここからダウンロードできます。
この音声アプリケーションのデモプロジェクトには3CX CFD配布キットが付属しており、 Documents \ 3CX Call Flow Designer Demosフォルダーにあります。 始めましょう。
プロジェクト作成
CFDプロジェクトを作成するには、 [ファイル]→[新規]→[プロジェクト]に移動し、プロジェクトの場所フォルダーとその名前( 「PlayDigitsDemo」など)を指定します。

カスタムコンポーネントの作成
作成されたコンポーネントは、ユーザーから一連の数字を受け取り、それらを順番に再生します。
Project Explorerウィンドウでコンポーネントを作成するには、プロジェクト名を右クリックし、 New Componentを選択してPlayDigitsという名前を付けます。

次に、 PlayDigits.compコンポーネントをクリックし、[プロパティウィンドウ]セクションで[ 変数]コレクションの横のボタンをクリックします。 2つの変数-DigitsとIndexを追加します。 可変桁-桁を受け入れますが、コンポーネントはそれを失います。 Index変数は内部であり、コンポーネントが数字から数字に切り替えることができます。

変数を追加するには、[ 追加 ]ボタンをクリックして変数を追加し、その名前(Nameプロパティ)をDigitsに変更します。 Digits変数には、アクセシビリティ:ReadWrite、初期値:、スコープ:Publicのプロパティが必要です。 [ 追加 ]ボタンをもう一度クリックして、新しい変数を追加し、その名前をIndexに変更します 。 Index変数には次のプロパティが必要です。アクセシビリティ:読み取り書き込み、初期値:0、スコープ:プライベート
それでは、コンポーネントアーキテクチャに取りかかりましょう。 ループコンポーネントを使用して、一連の数字を繰り返し処理します(ループ)。 ループコンポーネントで、 プロンプト再生コンポーネントを追加して、シーケンスの次の数字を再生します。 同じLoopコンポーネントで、 Increment Variableコンポーネントを追加します。これにより、 Index変数の値が増加します。 この設計により、ユーザーが入力したすべての番号を一貫して再現できます。
ループ作成
- ループコンポーネントを開発環境のメインウィンドウにドラッグします。
- [ プロパティ]ウィンドウで、コンポーネント名をdigitsLoopに変更します。
digitsLoopコンポーネントを選択し、Conditionプロパティで行を指定します
LESS_THAN(callflow$.Index,LEN(callflow$.Digits)).
この式は、Index変数(callflow $ .Index)がユーザーが入力したLEN桁数(callflow $ .Digits)より小さい限り、ループを繰り返します。
メッセージの再生
- まず、各桁に対応するサウンドファイルが必要です。 0.wav 、 1.wavなどのファイルを準備してコピーします。 プロジェクトのAudioフォルダで9に。
- プロンプト再生コンポーネントをメインアプリケーションフィールドにループコンポーネントにドラッグします。
- コンポーネント名をplayDigitに変更します。
- このコンポーネントを選択し、プロパティウィンドウで[ プロンプト]コレクションの横にあるボタンをクリックして、[プロンプトコレクションエディター]サウンドメッセージエディターを開きます。
- [ 追加 ]ボタンをクリックし、タイプを[ダイナミックオーディオファイルプロンプト ]に変更します
[オーディオファイル式]フィールドに、文字列を入力します
CONCATENATE(MID(callflow$.Digits,callflow$.Index,1),".wav").
式は現在の反復の数字を使用し、それをファイル拡張子(文字列) .wavと組み合わせます。 したがって、対応する数字が加入者に再生されます。
可変数増分コンポーネント
- Increment Variableコンポーネントを、 playDigitコンポーネントの下のLoopコンポーネントにドラッグします
コンポーネント名をincrementIndexに変更します
VariableNameプロパティには、式を指定します
callflow$.Index
実行サイクルは次のようになります。

コンポーネントの準備ができました。 次に、メインアプリケーションから呼び出します。
コンポーネントを呼び出して番号を再生する
カスタムコンポーネントの準備が整ったら、アプリケーションで使用します。
- プロジェクトエクスプローラーウィンドウで、 Main.flowをクリックしてメインアプリケーションを開きます。
- ユーザーからの入力を要求するユーザー入力コンポーネントを追加します。 名前をrequestInputに変更し 、入力の必要性について事前に準備されたメッセージをユーザーに追加します。
- User Defined ComponentsウィンドウのValid Inputブランチで、作成されたカスタムPlayDigitsコンポーネントを追加します
名前をplayEnteredDigitsに変更します
それを選択し、Digitsプロパティで次の式を指定します
requestInput.Buffer
要求された数字は最初にバッファされ、次にユーザーに再生されます。 完成したアプリケーションは次のようになります。

3CXサーバーでのアプリケーションのコンパイルとインストール
音声アプリケーションの準備ができました! これでコンパイルされ、3CXサーバーにダウンロードされます。 これを行うには:
- [ビルド]> [すべてビルド]に移動すると、CFDはPlayDigitsDemo.tcxvoiceappファイルを作成します。
- Call Queuesの下の3CX管理インターフェイスに移動します。 新しいコールキューを作成し、キューの名前と内線番号を指定してから、 音声アプリケーションオプションを設定し、コンパイルされたファイルをダウンロードします。
- 変更をコールキューに保存します。 音声アプリケーションを使用する準備が整いました。

おわりに
このアプリケーションは特定の問題を解決しますが、特定の作業ロジックを別のユーザーコンポーネントにカプセル化する機能に注意することが重要です。 これは多くの利点を提供する非常に強力なメカニズムです。
- 既存のコンポーネントを再利用して、アプリケーション開発を加速します。
- メインアプリケーションの構造を簡素化し、アプリケーションアーキテクチャが既に管理が困難なサイズに拡大するのを防ぎます。
- 音声アプリケーションは理解可能であり、簡単に変更できます。
同じ原則を使用して、時間と日付を失ったり、ユーザー入力を検証したりするカスタムコンポーネントを作成できます。