How to get the realtime information about phone call

Version 1
    This document was generated from CDN thread

    Created by: Meng Yao on 13-01-2009 01:55:20 AM
    Hi everyone,

    Does callmanager have the realtime information about a phone call?
    How to use AXL to get such information?

    Thanks,

    Meng

    Subject: Re: How to get the realtime information about phone call
    Replied by: David Staudt on 13-01-2009 03:18:22 AM
    The CTI APIs - TAPI and JTAPI - are what you are looking for. These APIs allow a program to register for real-time events regarding calls and call status, as well as issue call-control commands.

    Using CTI is not nearly as straightforward as using AXL SOAP, however. You may want to investigate the CUAE platform (http://developer.cisco.com/web/cuae/home), for creating real-time call control apps using the graphical design environment or via the simplified Java/C# APIs.

    Subject: Re: How to get the realtime information about phone call
    Replied by: Charles Chen on 20-01-2009 05:59:11 AM
    I can't find details on how to use simplified C# JTAPI query real-time call info. Could someone point me to a specific document on examples?

    Thanks,
    Charles

    Subject: Re: How to get the realtime information about phone call
    Replied by: Madhukar Bhandaryr on 20-01-2009 09:01:28 AM
    Hi,

    If you are interested to know more on what David has mentioned, please follow the below link for more information:

    http://developer.cisco.com/web/cuae/wikidocs?src=/wiki/display/CUAE/Example+-+HttpMakeCall

    Thanks and Regards,
    Madhukar

    Subject: RE: Re: How to get the realtime information about phone call
    Replied by: Eric Rubin on 22-06-2009 02:11:20 PM
    I'm looking for an easy way to determine the call state of a phone.  I want to send audio to a phone, but not when it's off-hook or ina call.  So I just need to get a phone's call state when I'm ready to send audio.  I don't need to be notified of every change in call state for each phone. 
     
    What's the simplest way to do this?
     
    Thanks,
    Eric
     
     
    The CTI APIs - TAPI and JTAPI - are what you are looking for. These APIs allow a program to register for real-time events regarding calls and call status, as well as issue call-control commands.

    Using CTI is not nearly as straightforward as using AXL SOAP, however. You may want to investigate the CUAE platform (http://developer.cisco.com/web/cuae/home), for creating real-time call control apps using the graphical design environment or via the simplified Java/C# APIs.


    Subject: RE: Re: How to get the realtime information about phone call
    Replied by: David Staudt on 22-06-2009 05:36:23 PM
    Two features which may be interesting:
     
    - The phone's onboard web server provides /CGI/StreamingStatisticsX, which is a snapshot of audio stream activity on the device.  Your app can query this URL on the phone and determine if there is any audio activity.  Note this URL requires user authentication.
     
    - The CiscoIPPhoneExecute request supports the Priority attribute:
     
    <CiscoIPPhoneExecute>
    <ExecuteItem Priority=¿0¿ URL=¿Play:chime.raw¿/>
    <ExecuteItem Priority=¿1¿ URL=¿http://server/textmessage.xml¿/>
    </CiscoIPPhoneExecute>

     
    Which will 'queue' the HTTP URL request until any active call is finished (Priority=1).  Note in the example above the Play: URI gets executed immediately (Priority is ignored for non-HTTP URLs) while the HTTP request is delayed.

    Subject: RE: Re: How to get the realtime information about phone call
    Replied by: Eric Rubin on 22-06-2009 06:32:48 PM
    I tried using Priority but doesn't work for me because I am using a non-HTTP URI (RTPMRx).  That's why I'm looking for an alternative.
     
    Your first suggestion looks promising, though.  If I point my browser to
    http://192.168.11.123/CGI/StreamingStatisticsX
    It asks for a user name and password, but then it displays
    <CiscoIPPhoneError Number="0"/>
    or
    <CiscoIPPhoneError Number="6"/>
    from a different phone
     
    The information I need is available from the phone though, because when I point my browser to
    http://192.168.11.123/CGI/Java/Serviceability?adapter=device.statistics.streaming.0
    I get a display which includes a "Stream Status" field which is "Not Ready" when the phone is on-hook and "Active" when the phone is in a call.
     
    So how should I get this Stream Status from my App?  Do I use something like "http://192.168.11.123/CGI/StreamingStatisticsX" as the URL in the ExecuteItem?


     
    Two features which may be interesting:
     
    - The phone's onboard web server provides /CGI/StreamingStatisticsX, which is a snapshot of audio stream activity on the device.  Your app can query this URL on the phone and determine if there is any audio activity.  Note this URL requires user authentication.
     
    - The CiscoIPPhoneExecute request supports the Priority attribute:
     
    <CiscoIPPhoneExecute>
    <ExecuteItem Priority=¿0¿ URL=¿Play:chime.raw¿/>
    <ExecuteItem Priority=¿1¿ URL=¿http://server/textmessage.xml¿/>
    </CiscoIPPhoneExecute>

     
    Which will 'queue' the HTTP URL request until any active call is finished (Priority=1).  Note in the example above the Play: URI gets executed immediately (Priority is ignored for non-HTTP URLs) while the HTTP request is delayed.


    Subject: RE: Re: How to get the realtime information about phone call
    Replied by: David Staudt on 22-06-2009 07:01:17 PM
    The user credentials requested would be those of a UCM end-user who has been associated to the phone via the UCM admin pages (same as needed for CiscoIPPhoneExecute.)
     
    Your app would query the phone's webserver (providing the user credentials in the HTTP basic Authentication header: http://en.wikipedia.org/wiki/Basic_access_authentication) to find out the status of the phone, and then decide whether to pusth the CiscoIPPhoneExecute in the usual manner.