誰もが電話を携帯する現在、PCによる予約受付や音声合成、アラート(緊急時の呼び出し)など、“ 電話をPCを組み合わせたシステム” のニーズがますます高まっています。Visual Studio上で高速にテレフォニーアプリケーションを開発できるVBVoice(ブイビーボイス)を動作させ、電話プログラミングのおもしろさを体験してみましょう(“ ブイビー” とありますが、C#でも使えます) 。
はじめに
電話プログラミングへのご招待
宅配便の再配達受付は、電話で日付や時間帯を指定できます。あの受付システムは、どんな仕組みで動作しているのだろうと考えたことがありますか。アプリケーションは、データベースを検索してお客様の情報を調べることができています。また、固定電話からでも携帯電話からでも、情報を入力できます。また最近では、病院の予約受付も電話でできるところが増えてきました。電話で予約を確認したり、キャンセルや変更ができるものさえあります。
実は、こういったシステムは、プログラミングのわかる人であれば、ツールの力を借りて、想像よりはるかに簡単に構築できる時代になっています。この記事では、VBVoice(ブイビーボイス)というCTI(コンピューター・テレフォニー・インテグレーション)高速開発用のミドルウェアを使います。このプログラミングを体験するには、特別なハードを購入する必要がありません。通常のPCだけで電話システムのプログラミングの実際を経験してみましょう。
本稿では、CTIアプリケーションは初めて、という方を対象に、VBVoiceの基本的な使い方、電話アプリケーションの開発ノウハウ、Asterisk IP-PBXとの接続、MySQLやPHPを使用したWebとの連携テクニックなども紹介していく予定です。
VBVoiceとは
VBVoiceの開発・発売元
VBVoiceとは、カナダのPronexus社が開発しているミドルウェア(システムを作るためのプログラムツール)です。多くの開発者が使い慣れている、Visual Studio(C#/VB)を使い、テレフォニー開発では定番となっているDialogic社のボード/ソフトウェア(HMP)によるシステムを高速に開発できるようにします。また、複雑なプログラミングを必要とせず、Visual Studio上のコンポーネントブロックを置いて、つなぎ合わせるだけの簡単操作でCTIアプリケーションが開発できるようデザインされています。
日本では、株式会社コミュニケーションビジネスアヴェニューが総代理店としてライセンスを販売し、技術サポートを提供しています。
Dialogicボードとは
Dialogic社はカナダのモントリオールに本社を置く世界的な企業で、マルチメディア処理関連の製品を数多く発表しています。日本でも、JATE認証の取れたボードが広く使われており、稼動実績も非常に多くあります。最近では、コストパフォーマンスに優れ、ソフトウェアだけで処理を完結させてしまう、Dialogic Host Media Processing Software(HMP)の優れた処理能力にも注目が集まっています。
VBVoiceを使用するメリット
VBVoiceの利点とは
使いやすさ・導入のしやすさ
開発者は使い慣れたVisual Studio(C#/VB)上で電話システムを開発できます。テレフォニーと通常のVB/C#プログラミングを組み合わせた、分かりやすい開発により、開発者の負担を軽減します。
拡張性
VBVoiceでプログラムを作成すると、システムの構成を変更した場合でもプログラムを書き直さなくてすむ場合があります。アーキテクチャの差異をVBVoiceのほうで吸収できるからです。ハードウェアのボード用にアプリケーションを作成し、その後、VoIP回線とHMPで運用するようシステムを変更したい場合でも、プログラム自体を変更せず、設定の変更だけで済んでしまいます。
豊富なサンプルプログラム
実際のアプリケーションを作る際のたたき台になるサンプルアプリケーションが豊富に提供されています。作成するアプリケーションに類似した例がたいてい見つかりますので、開発にほとんどコストをかけずに、わずかな修正だけでアプリケーションが完成してしまう場合も少なくありません。
高速開発
通常、DialogicのSDKによる開発には多大の時間と労力が求められていましたが、ミドルウェア製品を活用することにより、大幅に開発コストを減少させることができるようになりました。
開発システム例
電話を使った次のようなシステムを開発できます。
開発できるシステムの例
お客様からの電話に応答、DBと連携して情報をアナウンスするIVR(音声自動応答装置)
電話による予約受付システム、再配達受付システムなど
一定の時間・条件で自動的に電話をかけるシステム(工場・オフィスなど)
緊急時自動呼出しシステムなどの各種ダイアラー
音声認識、音声合成と組み合わせた電話アプリケーション
コールセンターで、条件に応じて該当オペレータへ転送するブリッジ/トランスファー
お客様の電話番号からDBを検索、情報を表示するアプリケーション
NTT回線網との接続
回線の種類
回線の種類には、一般回線(アナログ) 、ISDN/T1回線(デジタル) 、SIPプロバイダ回線などがあります。
一般回線/T1回線とは、JATE認証の取れたDialogicカードで接続します。回線数や機能に応じて各種のDialogicボードが販売されています。
Dialogic HMP(Host Media Processing Software)というソフトウェアベースの製品を利用すると、SIP/H.323回線などに接続できるので、VoIP回線プロバイダや最近話題のAsterisk IP-PBXなどと接続できます。
実際に体験してみよう
自分のPCにインストールしてみよう
手元にDialogicのボードがなくても、VBVoiceを使った開発を体験できます。VBVoiceには、サウンドカードによる電話機が同梱されていますので、必要なのはVisual Studioだけです。この記事では、VBVoiceのインストールから、簡単なIVRアプリ、そして電話を使った在庫管理プログラムの動作までを試してみましょう。
必要になるもの
Visual Studio C#またはVisual Basic(無料のVisual Studio Expressも可能)
Windows XPもしくは Windows 2003サーバ
VBVoice 5.6
サウンドカードとマイク
VBVoice 5.6は、( 株) コミュニケーションビジネスアヴェニューのサイト 、またはVector よりダウンロードしてください。
インストール
はじめに
まず、Visual StudioのC#かVBを使える環境があることを確認してください。Visual Studio Express でもかまいません。では、早速、VBVoiceをインストールしてみましょう。
ダウンロードしたファイルを展開する
ダウンロードしたファイルを展開します。図1 のスクリーンショットのようなファイルが入っています。Pronexusは、"/JP"オプションを付けてVBVoice**.exeを実行すると、日本語ファイルもインストールするようにデザインしています。
図1 圧縮ファイルを展開。batから起動
インストールの開始
ここでは、“ Install Evaluation Version” にチェックを入れてください。ライセンスを購入された方は、チェックをいれずにそのまま続けると、製品版のインストールになります。
図2 最初の画面。“ Install Evaluation Version” にチェックを入れる
スタンダード評価版の選択
評価版には、一定期間開発を実際に行えるEnhanced版もありますが、自分のネットワーク環境のルータの設定の確認や、IPアドレスの申告の必要などがあり、時間がかかります。今回は、いちばん簡単に試せる Standard版を選択してみましょう。
図3 Standard Evaluation(スタンダード評価)を選択
ライセンス条項を確認した後、“ I Agree” (同意)を選択します。
図3 ライセンスに“ I Agree” (同意)を選択
Visual Studioの確認
Visual Studioがインストールされているか、ここで確認します。Visual Studio Expressの場合には図5 のような表示が出ますが、あとで手動で設定しますので、[Next]を選択してください。
図5 警告表示
インストール先の設定
インストール先はとくに問題がなければそのまま先に進んでください。
図6 インストール先を指定
言語の設定
使用する言語をここで指定します。“ Select Languages to install” では、“ Japanese” (日本語)を選択します。“ Default Wave Format” には、ULAWを選択してください。これは、音声のフォーマットです。
図7 JapaneseとULAWを選択。
インストール
事前の設定が終わりました。[Install]を押すと、実際のインストールがはじまります。
図8 インストールの開始
インストール中には下記のような画面が表示されます。
図9 インストール動作画面
インストールが終了すると、下記のような表示が出ます。英語のドキュメントですが、この後、何をしたら良いのか、という説明が表示されますので、簡単に目を通してみましょう。
図10 インストールの完了表示
Visual Studioの設定
Visual Studio内から、VBVoiceのコントロールを使えるように設定します。[ツールボックス]を選択し、[ タブの追加]を選択して、“ Pronexus” などのタブを作成してください。
図11 タブの追加を選択
タブを作成したら、その上で右クリック→[ アイテムの選択] →[ 参照]を選択し、VBVoiceをインストールした中にある、vbvoicedotnetinterface.dllを開いてください。
図12 ツールボックスへの登録
コンポーネントが選択されているのを確認して、[ OK]ボタンを押します。
図13 コンポーネントが選択されたら、[OK]をクリック
成功すると、図14 のように、電話関連のコントロールがずらっと登録されます。通常のVisual Studioの部品と同じように、ドラッグドロップで自分のフォームに落とすことができ、プロパティの各設定により、詳細をデザインすることができます。また、コンポーネント同士を線でつなぐことにより、動作フローを指定します。
図14 ツールボックスにコンポーネントが登録された状態
基本サンプル“EZFlow”(イージーフロー)を動作させてみよう
サンプル実行の準備
それでは、さっそくサンプルを実行させてみましょう。正しくインストールできたかを確認するには、EZFlow(イージーフロー)という基本IVR(音声自動応答装置)のデモが便利です。\Pronexus\VBVoice\examples\dotNetExamples\Visual_Basic(C#)\EZFlowから、プロジェクトを開いてください。
図15 基本サンプルアプリケーション“ EZFlow” を選択
プロジェクトを開く際、評価版で動作し、シュミレータモードだけで動作する旨の確認情報が表示されます。
図16 現在、評価モードで動作していることを示す警告表示
図17 は、EZFlowを開いた状態のVisual Studioです。通常の開発とほとんど同じであることに驚かれるかもしれません。通常のCTI開発ではスクリプトとにらめっこして作成する方法が多いのですが、VBVoiceではブロックを接続していく直感的な方法で開発を進めることができます。
このアプリの場合、電話が着信するたびに、左から右に向かって流れてゆく一連の動作が実行されます。各コントロールに関して、簡単に見てみましょう。
図17 EZFlowプロジェクト
LineGroup(ライングループ)コントロール
LineGroupコントロールは、各電話の処理の“ スタート地点” となります。使用する回線や、基本動作をここで設定します。
図18 LineGroupコントロール
チャンネルモードを[通話応答]に設定すると、「 電話が着信するたびに」このコントロールに処理が渡されます。[ 遅延後、通話開始]に設定すると、指定した秒数が過ぎてから、Dial(ダイアル)コントロールなどと連携させて電話をかける処理を始めることができます。
待機(何もしない)状態にするには、「 アイドル」を選択します。また、T1回線やHMPなどのデジタル回線を使うのか、Dialogicボードなどでアナログ回線を使用するのかをここで設定します。
図19 LineGroupプロパティ
GetDigits(ゲットディジッツ)コントロール
電話中にどのプッシュフォンボタン(DTMF信号)を押したかを検出するコントロールです。ボタンに応じて条件分岐できます。Select case や switchと同じような動作と考えると分かりやすいかもしれません。
図20 GetDigitsコントロール
図21 では、「 1を押した場合」 、「 2を押した場合」 、「 #を押した場合」の3種類が登録されています。
図21 GetDigitsプロパティ
PlayGreeting(プレイグリーティング)コントロール
PlayGreetingは、「 メッセージ(グリーティング)を再生する」コントロールです。
図22 PlayGreetingコントロール
メッセージの内容やボリュームは、図23 のプロパティで編集します。マイクを使ってメッセージを録音するなどの簡単な編集作業はここから行うことが可能です。
図23 PlayGreetingプロパティ
OnHook(オンフック)コントロール
電話機の世界では、受話器を上げることを“ OffHook” (オフフック) 、受話器を下ろす(=通話を終了する)ことを“ OnHook” と呼びます。OnHookコントロールに到達すると、VBVoiceは通話を終了する処理に移り、その回の処理が終了します。
図24 OnHookコントロール
終了時にメッセージを再生する場合には、図25 のコントロールのプロパティに直接指定できます。VBやC#のコードを書いて、メッセージを動的に変更することももちろん可能です。
図25 OnHookプロパティ
実際に動作させてみよう
アプリケーションの立ち上げ
それでは、さっそく実行させてみましょう。Visual Studioから動作させ、アプリケーション内にある、[START]ボタンをクリックしてください。すると、ボードの初期化など、一連の開始動作がはじまります。その後、下記のように、「 VBVLog」というログのビューワ、そして、「 音声カード シュミレータ」という電話機の代わりになるツールが立ち上がります。シュミレータの[呼び出し]を押してみてください。IVRのメッセージが聞こえてくるでしょうか。この状態では、英語のメッセージが再生されるはずです。
図26 EZFlowの動作画面
日本語音声に変更
VBVoiceの中には、最初から日本語音声が登録されています。基本的な数字の読み上げなども日本語で標準対応しています。自分で音声ファイルを準備する必要はありません。japaneseフォルダの中にあるEzflow1.vap(音声ファイル)で、EZFlowプロジェクトの“ ulaw” フォルダの中にある同名ファイルを上書きし、アプリを再起動させてみましょう。今度は、日本語でのアナウンスに変わるはずです。1,2,#などのボタンを押してアナウンスが変更されることを確認してください。
図27 EZFlowプロジェクトを日本語音声に変更
通話ログの確認
VBVoice上で行われた通話記録はログになって記録されてゆきます。システムに同梱されているVBVConfigというツールで細かい設定を行うことができ、ログの取り方についてもカスタマイズできるようになっています。想定どおりに動作していない場合には、こちらで確認してください。
図28 VBVLogによる通話記録
音声のカスタマイズ
今度は、自分の声をマイクなどで録音し、独自のIVRシステムに変更してみましょう。PlayGreetingコントロールのプロパティを開き、[ 編集] →[ フレーズ編集] →[ 録音]を選択すると、マイクを使って自分の声が録音できます。
録音できたら、システムをスタートさせて、実際にIVRが動作するか、確認してみましょう。これが実際に電話回線上で動作し、複数の人が一度に電話をかけてきても、それぞれに対応している動作をログで確認すると、なかなか感動します。
図29 音声を録音してカスタマイズ
電話在庫管理システム“Inventory”(インベントリ)のデモ
余力がもう少しある人は、もう少し複雑な、在庫管理のデモも動作させてみましょう。図30 は、商品番号と、在庫搬入、搬出の記録を電話で行う、というアプリケーションのたたき台です。最初の設定ではmdbファイルに記録するようになっていますがODBC経由でさまざまなデータベースと接続できますので、すでにあるシステムとの統合などにも参考になると思います。
図30 Inventoryプロジェクト
まとめ
高速開発に役立つVBVoice
いかがでしたか。通常、DialogicのSDKを使用した開発だと、ボードの初期化やアプリの初期設定など、非常に煩雑な処理と、ハードウェアに関する深い知識が必要になるのですが、VBVoiceを使用すると難しい部分の面倒をすべて肩代わりしてくれますので、開発者は本当に必要なビジネスロジックの実装に注意を集中することができます。VBVoiceは決して価格の安い製品ではありませんが、CTIアプリケーションの開発工数を削減できることを考えると、非常に有用なツールだと言えます。
今後の予定
今後の連載では、実際のコーディングやオリジナルのCTIアプリケーションを作成するノウハウを扱っていきます。必要なのは、VBVoiceの開発環境だけです。Dialogicのボードを使用せずに、HMP(Dialogic Host Media Processing Software)の開発用無料版を使い、VoIP回線やAsterisk IP-PBXと接続する予定です。データベースとしてMySQLを使うことにより、WebとCTIを組み合わせたアプリケーションの作成例などをご紹介したいと思います。ご期待ください。