我们每次使用Grandstream UCM6204 PBX时都需要调用包含呼叫者号码的URL。
有一个名为SendURL()的函数可以通过Asterisk使用,我使用PuTTy连接到Asterisk,但是我不确定下一步该怎么做?
做完一些研究后,我发现我无法通过UCM设备直接访问Asterisk,这将不允许我们修改拨号计划。
通过创建第三方应用程序与AMI通信并完成工作的唯一方法是吗?这种情况下,该应用程序应该在线且可以24/7运行的问题。
我编写了C#代码来完成此操作,但是它没有按预期工作。
public FormMain()
{
InitializeComponent();
AstCon = new ManagerConnection(ConfigurationManager.AppSettings["astHost"],
int.Parse(ConfigurationManager.AppSettings["astPort"]),
ConfigurationManager.AppSettings["astUser"], ConfigurationManager.AppSettings["astPass"]);
AstCon.NewState += astCon_NewState;
AstCon.ConnectionState += astCon_ConnectionState;
try
{
AstCon.Login();
}
catch (Exception ex)
{
MessageBox.Show(
$"Error connecting to {ConfigurationManager.AppSettings["astHost"]}. Error: {ex.Message}");
// Terminate Application
Application.Exit();
}
}
private void astCon_NewState(object sender, NewStateEvent e)
{
if (e.ChannelStateDesc.ToLower() == "ring" && e.Connectedlinenum == "6401")
{
if (ConfigurationManager.AppSettings["ScreenPopPath"] != null)
{
var runString = ConfigurationManager.AppSettings["ScreenPopPath"];
runString = runString.Replace("{callerid-number}", e.CallerId);
Process.Start(runString);
}
}
}
void astCon_ConnectionState(object sender, ConnectionStateEvent e)
{
connectionStateLbl.Text = AstCon.IsConnected() ? $"Connected to: {AstCon.Username}@{AstCon.Hostname}" : $"Disconnected, reconnecting to {AstCon.Hostname}...";
}
}
答案 0 :(得分:0)
您可以使用CURL函数。但是要进行调用,需要了解PBX拨号计划和挂钩
您可以使用外部AMI应用程序。
您可以读取数据库中的CEL事件。