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);
}
}
}
}
