Звездочка SendURL () с использованием Grandstream UCM6204 - PullRequest
0 голосов
/ 22 июня 2019

Нам нужно вызывать 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}...";
    }
}

1 Ответ

0 голосов
/ 25 июня 2019

Вы можете использовать функцию CURL. Но для вызова его нужно понимать схему набора номеров АТС и перехваты

Вы можете использовать внешнее приложение AMI.

Вы можете прочитать события CEL в базе данных.

...