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クライアントを作成するサンプルコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
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); } } } } |