teamnowhere has asked for the wisdom of the Perl Monks concerning the following question:

Hi all,

I am trying to write a PERL script to use Cisco CallManager AXL interface and get/process IP phones information.

I know I have to use SOAP::Lite package, but I really do not understand how it works, especally with CallManager interface.

Actually, I do not know how to connect to the server: what must I set in the URI field ? In the proxy one ? This part of the code is really not clear for me.

From what I have read on the web and seen on the server, I would have wrote:

my $CCM = SOAP::Lite ->uri(xxx.xxx.xxx.xxx:443) ->proxy("xxx.xxx.xxx.xxx/API/AXL/V1/axlsoap.xsd")
But something tells me its not really good ;)

An older thread of smeenz show me how to get data after that (even if it is not the information I have to get from server):

my $res = $soap->getPhone( SOAP::Data->name(phoneName => 'SEP000000000000') )
If there is a specific documentation I was unable to find it :(

Can anyone help me ?

Julien

Replies are listed 'Best First'.
Re: Using CallManager AXL interface with perl and SOAP::Lite module
by szbalint (Friar) on Jul 26, 2007 at 13:24 UTC
    Presumably you want to take a look at these documents to be able to use SOAP, to access the interface this device presents. The proxy method expects the specific uri you need to access and the uri in SOAP::Lite signifies the namespace of the Cisco interface. You might want to read the current Soap ::Lite documentation aswell.

    Update: SOAP can be daunting at first and SOAP::Lite is a complex module. Unfortunately debugging something like this is hard, so you'll have to read the documentation very carefully and use the error checking mechanisms as strictly as possible.

    As a quick tip, please keep in mind that when you want to retrieve the result of a remote method call, in 99% of the cases you want to use the 'paramsall' method, not the 'result' method. Consider this example:
    my $result = $soap->remote_method(@parameters); unless ($result->fault) { print $result->paramsall(); } else { print join ', ', $result->faultcode, $result->faultstring; }

    The result method on $result would only return the _first_ parameter that the remote_method returned. Personally I think that was a silly architectural decision, but this might save you some time.
      Thanks, Was very useful