Нам нужно вызывать URL-адрес, содержащий номер звонящего при каждом входящем звонке, мы используем АТС Grandstream UCM6204.
Существует функция SendURL (), которую можно использовать через Asterisk, я подключился к Asterisk с помощью PuTTy, но я не уверен, что делать дальше?
Проведя некоторые исследования, я обнаружил, что не могу иметь прямой доступ к Asterisk через устройства UCM, что не позволяет нам изменять абонентскую группу.
Является ли единственным подходом создание стороннего приложения для связи с 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}...";
}
}