11.いよいよ本題、AsterNET.ARIに挑戦してみる。

AsterNET.ARIはインキュベーションプロジェクトであり、.NET用のAsterNETフレームワークへの追加です。それはあなたが.NETフレームワークを使用してアスタリスクのStasis ARIに対して開発することを可能にします。

言っていることがよくわかりませんが、Asterisk REST インターフェースを介して AsterNETフレームワークにアクセスして結果をJSONデータで受け取るというものと解釈します。(でしょう。たぶん。)

 

1.まず、FreePBXの設定で「Asterisk REST インターフェース」を有効にします。

1)メニュー「settings」の「Advanced Settings」を選択します。

2)「Asterisk REST Interface」の「Enable then Asterisk REST Interface」を「Yes」にします。

3)右下の「Submit」をクリックします。

 

2.次に、RESTインターフェースにアクセスできるユーザーを設定します。

1)メニュー「settings」の「Asterisk REST Interface Users」を選択します。

2)「Add User」をクリックします。

3)「REST Interface User Name」と「REST Interface User Password」をそれぞれ入力して、さらに「Read Only」を「No」に設定します。

4)右下の「Submit」をクリックします。

5)右上の「Apply Config」をクリックします。

 

3.次に、オープンソースのAsterNET.ARIライブラリを使用して接続できるかテストしてみます。

1)AsterNET.ARIライブラリのあるGitHub(https://github.com/skrusty/AsterNET.ARI)にアクセスします。

2)右側の「Clone or download」をクリックします。

3)「Download ZIP」をクリックして、任意の場所へダウンロードします。

4)ダウンロードしたZIPファイルを解凍して、その中にある「AsterNET.ARI.sln」をVisual Studio.NETで開きます。

5)Visual Studio.NETで開く際にセキュリティー警告が出ますので、「ソリューション内の~~~」の前のチェックを外してから「OK」をクリックします。

6)Visual Studio.NETでソリューションを開いたら、メニュー「ツール」-「NuGetパッケージマネージャー(N)」-「ソリューションのNuGetパッケージの管理(N)…」を選択します。

7)左上の「参照」をクリックし、その下へ「WebSocket4Net」と入力してパッケージを検索します。検索結果の中から「WebSocket4Net」を選択します。

8)右側に表示されているプロジェクトのうち、「AsterNET.ARI」、「AsterNET.ARI.NetStandard」、「Samples\SimpleTestApplication」、「Swagger-CodeGen\ARICodeGen」にチェックを付け、「アンインストール」をクリックします。

9)変更のプレビュー画面で「OK」をクリックします。

10)再度、同じ画面で「インストール」をクリックします。

11)変更のプレビュー画面で「OK」をクリックします。

12)「同意する」をクリックします。

13)完了したらバージョンを確認します。(現在の最新は 0.15.2 であるので、これでOKです。)

14)ソリューションのSampleフォルダの中の「SimpleTestApplication」プロジェクトを選択します。

15)右クリックして、「スタートアッププロジェクトに設定(A)」を選択します。

16)「SimpleTestApplication」プロジェクトの中の「program.cs」を開いて、以下画面の赤枠ところで、IPアドレス、ユーザー名、パスワードを変更します。

IPアドレス ・・・ FreePBXサーバーのIPアドレス

ユーザー名 ・・・ 2.の項で「REST Interface User Name」に設定したユーザー名

パスワード ・・・ 2.の項で「REST Interface User Password」に設定したパスワード

17)コマンドプロンプトを起動し、SSHでFreePBXサーバーに接続します。

18)nanoエディタで、/etc/asterisk/extensions_custom.conf を開いて、以下の3行を追加します。

exten => 1000,1,NoOp()
same => n,Stasis(HelloWorld,PJSIP/${EXTEN}, 45)
same => n,Hangup()

19)Ctrl+Oで保存し、Ctrl+Xでnanoエディタを終了します。

20)FreePBXサーバーを再起動します。

21)「開始」をクリックして実行してみます。正常に接続できている場合は、コマンドプロンプト画面内に「Connection state is now True」と表示されます。

22)内線1000番に電話を掛けると、program.cs の c_OnStasisStartEventイベントが処理され、受話器から「Hello World」という声が聞こえます。

23)DTMF1~9、0を押下すると、受話器から1~9、0の声が聞こえます。「*」は「asterisk-friend」と発音し、「#」は「goodbye」と発音した後、回線が切断します。

※FreePBXの初期値では、内線設定の「DTMF Signaling」が「RFC4733」に設定されていますので、Inband DTMFで使用する場合は「Auto」に変更しておきましょう。