UnityからAsterisk Mnager Interfaceへアクセス

本記事ではゲームエンジンUnityからAsterisk Manager Interface (AMI)へアクセスする方法を記載します。

概要

UnityのC#スクリプトから.NETフレームワーク上で動くAMIライブラリ"Asterisk .NET"を利用してAMIへアクセスします。

※本記事ではUnityはバージョン4.5.3f3、Asterisk .NETはバージョン1.6.3.1を利用しています。(2014/9/29)

Asterisk .NETのダウンロード

Asterisk .NETをソースコードリポジトリサイト"sourceforge"からダウンロードします。

  1. soruceforgeのAsterisk .NETダウンロードページへ移動します。
    ダウンロードページ

  2. 下記画像の赤枠の部分をクリックしてAsterisk .NETのソースコードを取得します。


Asterisk.NET.dllの生成

ダウンロードしたソースファイルをMonoDevelopにてビルドしDLLを作成します。

  1. ダウンロードしたソースコードのZIPを解凍します。

  2. Unityに付属されているMonoDevelopを起動します。

  3. File > Openメニューにて、解凍して作成されたディレクトリ内の下記のファイルを開きます。
    Asterisk.NET.1.6.3.1\Asterisk.NET\Asterisk.NET.csproj

  4. 画面左側のSolutionエリアからAsterisk.NET > Asterisk.NETを右クリックし、ポップアップメニューからOptionを選択し、プロジェクトオプションウィンドウを表示します。


  5. プロジェクトオプションのBuild > Generalを選択し、Target Frameworkを"Mono / .NET 3.5"に変更します。OKボタンを押して変更を保存する際に、ファイルフォーマットの変換ウィンドウが表示されます。これはMonoDevelopが既存のソースコードフォーマットである"MSBuild (Visual Studio 2005)"をサポートしていないためです。New Formatに"MSBuild (Visual Studio 2008)"を選択し、OKボタンを押してください。




  6. ビルド設定が"Debug"であることを確認し、Build > Build Allメニューにてビルドします。


    ※ビルド設定にて"Release"を選択した場合は、ソースコードのバグによりビルドが失敗します。これは不要な#endifがソースコード上に存在するためであり、該当エラー行の最後に記述されている#endifを削除すればビルド設定を"Release"にしても正常にビルドが行えるようになります。

  7. これまでの手順にて下記フォルダにAsterisk.NET.dllが生成されます。Asterisk.NET.1.6.3.1\Asterisk.NET\bin\Debug\

UnityプロジェクトにDLLを配置

UnityプロジェクトにAsterisk .NETのDLLを配置し、UnityのC#スクリプトから利用可能な環境を作成します。

  1. Unityにて対象のUnityプロジェクトを開きます。

  2. ProjectタブにてAssetsの直下にPluginsフォルダを作成し、その中にAsterisk.NET.dllを配備してください。


コマンドの発行

UnityのC#スクリプトからAMIに対しAsteriskコマンドを発行する簡単なサンプルソースを用意しました。

Command.cs … 本記事の最後からダウンロード可能です。

ヒエラルキー内にCubeなどの適当な3Dオブジェクトを作成し、サンプルプログラム"Command.cs"をアタッチしてプログラムを実行してください。プログラム起動時に一度だけ"queue show"コマンドが実行され、コンソールにその結果がデバッグログとして出力されます。

 

イベントの受信

UnityのC#スクリプトにてAMIのEventをハンドリングする簡単なサンプルソースを用意しました。

Eventhandling.cs … 本記事の最後からダウンロード可能です。

ヒエラルキー内に Cubeなどの適当な3Dオブジェクトを作成し、サンプルプログラム"Eventhandling.cs"をアタッチしてプログラムを実行してください。プログラム起動後にAsteriskにて電話の切断が実行された際に、Unityのコンソールに"Recive HangupEvent."が出力されます。

(2014/09/29 T.Aizawa)
本記事につきましてご指摘などありましたらお気軽にコメントをお願いします。

他にご質問がございましたら、リクエストを送信してください

コメント

Powered by Zendesk