cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
518
Views
2
Helpful
5
Replies

Scenario-Detection: Hunt-Call with No Extension Available to Answer

Bliss
Level 1
Level 1

Hello there.

Please consider the following scenario:
A call to a CTI route-point has been established. It has been automatically transferred to a Hunt-Pilot extension.
There is no available extension to take the call (i.e. all agents are busy), and so - Hunt-Queue featured is operated, i.e. caller is put on 'hold', hearing music, until any of the Hunt-List extensions becomes available to answer the caller.

(1) How can this scenario be identified (caller on Hunt-Queue)? Is there any Address/Call events indicating it?

Furthermore, how can each of the 2 sub-scenarios can be identified:
(2) After a while, caller did not want to wait further, and hung-up (dropped the call)?
(3) A Hunt-Queue timer has elapsed, and the CUCM has dropped the call?

Thanks much.

1 Accepted Solution

Accepted Solutions

dstaudt
Cisco Employee
Cisco Employee

I don't believe there are any APIs to monitor hunt pilots/lists directly, in real time.  TAPI and JTAPI can receive detailed call progress events about hunt calls, but only once the call is offered to a hunt member device (that is being monitored by the appliction) - they can't monitor the hunt pilot/queue directly.
The Serviceability Perfmon API can retrieve various CUCM performance counters related to hunt pilots/lists (very similar to what's available via RTMT), either one-shot or periodically (e.g. every minute - perhaps shorter, please do testing) - take a look at:
Cisco Hunt Lists

<ns1:Name>Cisco Hunt Lists</ns1:Name>
<ns1:MultiInstance>true</ns1:MultiInstance>
<ns1:ArrayOfCounter>
   <ns1:item>
      <ns1:Name>CallsAbandoned</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>CallsActive</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>CallsBusyAttempts</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>CallsInProgress</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>CallsRingNoAnswer</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>HuntListInService</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>MembersAvailable</ns1:Name>
   </ns1:item>
</ns1:ArrayOfCounter>

 Cisco Hunt Pilots

<ns1:Name>Cisco Hunt Pilots</ns1:Name>
<ns1:MultiInstance>true</ns1:MultiInstance>
<ns1:ArrayOfCounter>
   <ns1:item>
      <ns1:Name>CallsQueued</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>LineGroupMembersAvailable</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>LongestCallWaitingInQueue</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>MaxQueueDepthExceeded</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>MaxQueueWaitTimerExceeded</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>QueueCallsAbandoned</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>QueueCallsRingNoAnswer</ns1:Name>
   </ns1:item>
</ns1:ArrayOfCounter>

 

View solution in original post

5 Replies 5

dstaudt
Cisco Employee
Cisco Employee

I don't believe there are any APIs to monitor hunt pilots/lists directly, in real time.  TAPI and JTAPI can receive detailed call progress events about hunt calls, but only once the call is offered to a hunt member device (that is being monitored by the appliction) - they can't monitor the hunt pilot/queue directly.
The Serviceability Perfmon API can retrieve various CUCM performance counters related to hunt pilots/lists (very similar to what's available via RTMT), either one-shot or periodically (e.g. every minute - perhaps shorter, please do testing) - take a look at:
Cisco Hunt Lists

<ns1:Name>Cisco Hunt Lists</ns1:Name>
<ns1:MultiInstance>true</ns1:MultiInstance>
<ns1:ArrayOfCounter>
   <ns1:item>
      <ns1:Name>CallsAbandoned</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>CallsActive</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>CallsBusyAttempts</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>CallsInProgress</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>CallsRingNoAnswer</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>HuntListInService</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>MembersAvailable</ns1:Name>
   </ns1:item>
</ns1:ArrayOfCounter>

 Cisco Hunt Pilots

<ns1:Name>Cisco Hunt Pilots</ns1:Name>
<ns1:MultiInstance>true</ns1:MultiInstance>
<ns1:ArrayOfCounter>
   <ns1:item>
      <ns1:Name>CallsQueued</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>LineGroupMembersAvailable</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>LongestCallWaitingInQueue</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>MaxQueueDepthExceeded</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>MaxQueueWaitTimerExceeded</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>QueueCallsAbandoned</ns1:Name>
   </ns1:item>
   <ns1:item>
      <ns1:Name>QueueCallsRingNoAnswer</ns1:Name>
   </ns1:item>
</ns1:ArrayOfCounter>

 

Thank you, @dstaudt, for the useful answer. Appreciated!

I've managed to retrieve basic info through the PerfMon API.
Is there a way to retrieve counters per a specific Hunt-Pilot (or a specific Hunt-List), rather than a complete value-collection for all Hunt-Pilots?

Another question: Could the RIS-Port70 API aid as well?

dstaudt
Cisco Employee
Cisco Employee

You can use <perfmonListInstance> to get a list of e.g. hunt lists:

 

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.cisco.com/ast/soap">
   <soapenv:Header/>
   <soapenv:Body>
      <soap:perfmonListInstance>
         <soap:Host>sjds-cucm14</soap:Host>
         <soap:Object>Cisco Hunt Lists</soap:Object>
      </soap:perfmonListInstance>
   </soapenv:Body>
</soapenv:Envelope>
----------------------
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <ns1:perfmonListInstanceResponse xmlns:ns1="http://schemas.cisco.com/ast/soap">
         <ns1:perfmonListInstanceReturn>
            <ns1:Name>testHuntList</ns1:Name>
         </ns1:perfmonListInstanceReturn>
      </ns1:perfmonListInstanceResponse>
   </soapenv:Body>
</soapenv:Envelope>

 

Though you will need to use the session-based performance counter mechanism to selelct only counters for specific instances, e.g. your <perfomonAddCounter> might look something like:

 

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.cisco.com/ast/soap">
   <soapenv:Header/>
   <soapenv:Body>
      <soap:perfmonAddCounter>
         <soap:SessionHandle>05dfb482-825d-11ee-8000-0050569353ed</soap:SessionHandle>
         <soap:ArrayOfCounter>
            <soap:Counter>
               <soap:Name>\\sjds-cucm14\Cisco Hunt Lists(testHuntList)\MembersAvailable</soap:Name>
            </soap:Counter>
         </soap:ArrayOfCounter>
      </soap:perfmonAddCounter>
   </soapenv:Body>
</soapenv:Envelope>

 

Bliss
Level 1
Level 1

Thanks again. Much obliged.
I was wondering whether counter-values of a specific object could be retrieved without session-based communication.
Apparently not.

Could the RisPort70 API be helpful as well, in determining the state of calls moved into Hunt-Pilot's Queue?

dstaudt
Cisco Employee
Cisco Employee

RisPort70 is focused on the registration status of devices, so I'm not sure it would help much for your use-case.