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

AMI(Asterisk Manager Interface)を使用すると、Asteriskのリアルタイムイベントを監視し、制御することができます。例えば、着信通知や通話のステータス変更などのイベントを受け取ることができます。

 

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

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

[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0

[myuser]
secret = mypassword
read = all
write = all

 

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

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

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

using System;
using System.Net.Sockets;
using System.Text;

class Program
{
    static void Main(string[] args)
    {
        string host = "<AsteriskのIPアドレス>";
        int port = 5038;
        string username = "myuser";
        string password = "mypassword";

        using (TcpClient client = new TcpClient(host, port))
        using (NetworkStream stream = client.GetStream())
        {
            // ログイン
            string loginCommand = $"Action: Login\r\nUsername: {username}\r\nSecret: {password}\r\n\r\n";
            byte[] loginBytes = Encoding.ASCII.GetBytes(loginCommand);
            stream.Write(loginBytes, 0, loginBytes.Length);

            // イベントの受信
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
            {
                string response = Encoding.ASCII.GetString(buffer, 0, bytesRead);
                Console.WriteLine(response);
            }
        }
    }
}