【问题标题】:Cisco Unified Call Manager (CUCM) AXL API Update Phone successed but no change in my deviceCisco Unified Call Manager (CUCM) AXL API 更新电话成功,但我的设备没有变化
【发布时间】:2015-04-15 16:15:26
【问题描述】:

我正在与cisco CUCM AXL API & C#, 合作

我想更改description's phone。我的代码没有问题,但是设备电话仍然是最近的描述,当我访问思科管理时,我找到了新的描述但是在在设备上。 知道为什么吗?

这是我的代码:

    private bool subUpdateDevice(string _pattern, string _name, string _device, int _index)
    {

        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(@"https://xxx.xxx.xxx.xxx:8443/axl/");
        req.ProtocolVersion = HttpVersion.Version10;

        req.Method = "POST";
        req.Host = "xxx.xxx.xxx.xxx:8443";
        req.ProtocolVersion = System.Net.HttpVersion.Version10;
        req.ContentType = "text/xml";
        req.Accept = "text/xml";
        req.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("XXXXX:xxxxx")));

        string strAXLRequest = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" ";
        strAXLRequest += "xmlns:ns=\"http://www.cisco.com/AXL/API/10.5\">";
        strAXLRequest += "<soapenv:Header/><soapenv:Body>";
        strAXLRequest += "<ns:updatePhone>";
        strAXLRequest += "<name>" + _device + "</name>";
        strAXLRequest += "<lines><line>";
        strAXLRequest += "<index>" + _index + "</index>";
        strAXLRequest += "<display>" + _name + "</display>";
        strAXLRequest += "<dirn>";
        strAXLRequest += "<pattern>" + _pattern + "</pattern>";
        strAXLRequest += "</dirn>";
        strAXLRequest += "<displayAscii>" + _name + "</displayAscii>";
        strAXLRequest += "</line></lines></ns:updatePhone>";
        strAXLRequest += "</soapenv:Body></soapenv:Envelope>";

        System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };

        req.ContentLength = strAXLRequest.Length;
        try
        {
            Stream s = req.GetRequestStream();

            byte[] buffer = System.Text.Encoding.UTF8.GetBytes(strAXLRequest);
            s.Write(buffer, 0, strAXLRequest.Length);
            s.Close();
            try
            {
                WebResponse resp = req.GetResponse();

                s = resp.GetResponseStream();
                StreamReader sr = new StreamReader(s);
                string outputString = sr.ReadToEnd();

                sr.Close();
                s.Close();
                resp.Close();


                if (outputString.Contains("updatePhoneResponse"))
                {
                    return true;
                }
                else return false;
            }
            catch (Exception ex)
            {
                string excep = ex.ToString();
                return false;
            }
        }
        catch (WebException wex)
        {
            string excep = wex.ToString();


            return false;
        }
        catch (NotSupportedException nex)
        {
            string excep = nex.ToString();

            return false;
        }
        catch (ObjectDisposedException oex)
        {
            string excep = oex.ToString();

            return false;
        }
        catch (ProtocolViolationException pex)
        {
            string excep = pex.ToString();


            return false;
        }

    }

【问题讨论】:

    标签: c# cisco-axl


    【解决方案1】:

    我找到了,我必须像在 CUCM 中一样应用配置

    我的代码是用于更改手机中的数据,但如果我们需要应用新配置,我们应该调用 ApplyPhone .. 最后它对我有用: 这是代码(只需更改 strAXLRequest

          string strAXLRequest = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" ";
            strAXLRequest += "xmlns:ns=\"http://www.cisco.com/AXL/API/10.5\">";
            strAXLRequest += "<soapenv:Header/><soapenv:Body>";
            strAXLRequest += "<ns:applyPhone>";
            strAXLRequest += "<name>" + _device + "</name>";
            strAXLRequest += "</ns:applyPhone>";
            strAXLRequest += "</soapenv:Body></soapenv:Envelope>";
    

    【讨论】:

      【解决方案2】:

      对于 CUCM 中的所有设备,要将配置应用到终端设备,您需要在调用 update 后使用 applyrestartreset 方法。

      订单影响越来越大:

      • apply 使行级更改出现在设备上。
      • restart 刷新所有设备设置
      • reset 刷新所有设备设置,包括对其 IP 和 TFTP 设置的完整刷新。但它不会删除手机上的证书。它可能会导致几分钟的连接丢失(包括链接到它的任何 PC)> 如果您不喜欢自己的工作,请在工作时间大规模执行此操作。

      在您的情况下,您只是更改手机的lines 属性,因此使用updatePhone,后跟applyPhonerestartPhone 将达到预期的效果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-04
        • 1970-01-01
        相关资源
        最近更新 更多