6.FreePBXにARIでアクセスしてみる。(c# .Net SDK 9.0)

ARI(Asterisk REST Interface)は、AsteriskのリアルタイムイベントをRESTfulな方法で操作するためのインターフェースです。WebSocketを介してリアルタイムイベントを受け取ることができます。

 

1)Asteriskの設定ファイルを編集

/etc/asterisk/ari.conf ファイルを編集し、ARIのユーザーとパスワードを設定します。

[general]
enabled = yes
pretty = no

[myuser]
type = user
read_only = no
password = mypassword

 

2)WebSocketクライアントの作成

C#でWebSocketクライアントを作成し、ARIのイベントを受け取ることができます。

以下は、C#でWebSocketクライアントを作成するサンプルコードです。

using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        string uri = "ws://<AsteriskのIPアドレス>:8088/ari/events?api_key=myuser:mypassword";

        using (ClientWebSocket client = new ClientWebSocket())
        {
            await client.ConnectAsync(new Uri(uri), CancellationToken.None);

            byte[] buffer = new byte[1024];
            while (client.State == WebSocketState.Open)
            {
                WebSocketReceiveResult result = await client.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
                string response = Encoding.UTF8.GetString(buffer, 0, result.Count);
                Console.WriteLine(response);
            }
        }
    }
}