<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>RE: SNAPSHOT_DEVICE_REQ UCCE 8</title>
  <link rel="alternate" href="http://developer.cisco.com/c/message_boards/find_recent_posts?p_l_id=" />
  <subtitle>RE: SNAPSHOT_DEVICE_REQ UCCE 8</subtitle>
  <id>http://developer.cisco.com/c/message_boards/find_recent_posts?p_l_id=</id>
  <updated>2013-06-19T09:05:58Z</updated>
  <dc:date>2013-06-19T09:05:58Z</dc:date>
  <entry>
    <title>RE: Determing ConnectionDeviceID for Monitored Device</title>
    <link rel="alternate" href="http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=12876100" />
    <author>
      <name>Dale Gantous</name>
    </author>
    <id>http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=12876100</id>
    <updated>2013-03-11T14:56:48Z</updated>
    <published>2013-03-11T14:56:48Z</published>
    <summary type="html">You only specify a ConnectionDeviceID if you start a monitor for a call. If you want to monitor a device, you specify a DeviceID.
 
It would be highly useful to know which ConnectionDeviceIDs in call events refer to the device being monitored (as opposed to the other devices involved in the call). This is what I'm trying to figure out. Any ideas?</summary>
    <dc:creator>Dale Gantous</dc:creator>
    <dc:date>2013-03-11T14:56:48Z</dc:date>
  </entry>
  <entry>
    <title>Determing ConnectionDeviceID for Monitored Device</title>
    <link rel="alternate" href="http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=12811129" />
    <author>
      <name>Dale Gantous</name>
    </author>
    <id>http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=12811129</id>
    <updated>2013-03-08T21:27:59Z</updated>
    <published>2013-03-08T21:27:59Z</published>
    <summary type="html">When creating a peripheral monitor on a device, how can one determine the ConnectionDeviceID (and ConnectionDeviceIDType) that refers to the device being monitored?
 
According to the documentation, the ConnectionDeviceID is not necessarily the same as the DeviceID.
 
We need to know which ConnectionDeviceID refers to the monitored device (as opposed to other devices involved in the call) in order to make sense of all the call messages being monitored for the particular device.
 
I was hoping one of the SNAPSHOT_ or QUERY_ calls would give us this information, but I don't see it.
 
Thanks for any help...</summary>
    <dc:creator>Dale Gantous</dc:creator>
    <dc:date>2013-03-08T21:27:59Z</dc:date>
  </entry>
  <entry>
    <title>RE: EventReasonCodes</title>
    <link rel="alternate" href="http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=11947937" />
    <author>
      <name>Dale Gantous</name>
    </author>
    <id>http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=11947937</id>
    <updated>2013-02-14T21:40:50Z</updated>
    <published>2013-02-14T21:40:50Z</published>
    <summary type="html">Thanks for the info.</summary>
    <dc:creator>Dale Gantous</dc:creator>
    <dc:date>2013-02-14T21:40:50Z</dc:date>
  </entry>
  <entry>
    <title>RE: EventReasonCodes</title>
    <link rel="alternate" href="http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=11947432" />
    <author>
      <name>Dale Gantous</name>
    </author>
    <id>http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=11947432</id>
    <updated>2013-02-14T21:08:21Z</updated>
    <published>2013-02-14T21:08:21Z</published>
    <summary type="html">So, the Agent Desktop, running on a client machine, is directly reading the registry on the server machine where the CTI Server is running?</summary>
    <dc:creator>Dale Gantous</dc:creator>
    <dc:date>2013-02-14T21:08:21Z</dc:date>
  </entry>
  <entry>
    <title>RE: EventReasonCodes</title>
    <link rel="alternate" href="http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=11907306" />
    <author>
      <name>Dale Gantous</name>
    </author>
    <id>http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=11907306</id>
    <updated>2013-02-13T20:36:45Z</updated>
    <published>2013-02-13T20:36:45Z</published>
    <summary type="html">Thanks, so how does the Agent Desktop obtain these values to populate its dialog box?</summary>
    <dc:creator>Dale Gantous</dc:creator>
    <dc:date>2013-02-13T20:36:45Z</dc:date>
  </entry>
  <entry>
    <title>EventReasonCodes</title>
    <link rel="alternate" href="http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=11895330" />
    <author>
      <name>Dale Gantous</name>
    </author>
    <id>http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=11895330</id>
    <updated>2013-02-13T16:10:35Z</updated>
    <published>2013-02-13T16:09:16Z</published>
    <summary type="html">SET_AGENT_STATE_REQ and AGENT_STATE_EVENT both have a parameter called EventReasonCode, described as "A peripheral-specific code indicating the reason for the state change."
 
A reason code can be set to be required for going to NOT_READY or LOGOUT state, and if set this way then when running the Agent Desktop you are prompted with a list of reason codes (e.g. default seems to be 1 to 4) to choose from.
 
Also, if set, then calling SET_AGENT_STATE_REQ to go to NOT_READY or LOGOUT will be rejected if the EventReasonCode parameter is not from this list.
 
Where is this list of reason codes defined/configured, and how is this list of valid values obtained programatically via the CTI Server Protocol?
 
Thanks...</summary>
    <dc:creator>Dale Gantous</dc:creator>
    <dc:date>2013-02-13T16:09:16Z</dc:date>
  </entry>
  <entry>
    <title>RE: Authenticating an Agent when they are already logged on</title>
    <link rel="alternate" href="http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=9570408" />
    <author>
      <name>Dale Gantous</name>
    </author>
    <id>http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=9570408</id>
    <updated>2012-12-19T16:31:12Z</updated>
    <published>2012-12-19T16:31:12Z</published>
    <summary type="html">Thanks for investigating.
 
Bummer that this functionality isn't available, especially since it's documented that it is.
 
The documentation should be corrected, at least.</summary>
    <dc:creator>Dale Gantous</dc:creator>
    <dc:date>2012-12-19T16:31:12Z</dc:date>
  </entry>
  <entry>
    <title>RE: New Message from Dale Gantous in CTI Server Protocol (GED-188) - CTI Se</title>
    <link rel="alternate" href="http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=9342267" />
    <author>
      <name>Dale Gantous</name>
    </author>
    <id>http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=9342267</id>
    <updated>2012-12-13T20:49:18Z</updated>
    <published>2012-12-13T20:49:18Z</published>
    <summary type="html">[quote=David Lender]There is a “forced flag” you can set in the SET_AGENT_STATE_REQ message which you set to 2 = Agent authentication only. No agent
state change. Use with
AGENT_STATE_LOGIN[/quote]
 
That was the first thing I had tried. I get back CF_SPECIFIED_AGENT_ALREADY_SIGNED_ON regardless of whether I pass the correct password or a bogus one. Is there something special I need to put in any other parameter? I'm passing the PeripheralID, AGENT_STATE_LOGIN, AWM_UNSPECIFIED, NumSkillGroups=0, EventReasonCode=0, ForcedFlag=2, AgentServiceReq=0, AgentInstrument/ID/Password.</summary>
    <dc:creator>Dale Gantous</dc:creator>
    <dc:date>2012-12-13T20:49:18Z</dc:date>
  </entry>
  <entry>
    <title>RE: New Message from Dale Gantous in CTI Server Protocol (GED-188) - CTI Se</title>
    <link rel="alternate" href="http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=9338233" />
    <author>
      <name>Dale Gantous</name>
    </author>
    <id>http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=9338233</id>
    <updated>2012-12-13T18:07:52Z</updated>
    <published>2012-12-13T18:07:52Z</published>
    <summary type="html">[quote=David Lender]I don’t know of any way for password validation without actually logging in the agent.[/quote]
 
The document  "Cisco Unified Contact Center Express CTI Protocol Developer Guide, Release 8.0(1) September 2010.pdf" (in the section "Agent Authentication Without Agent State Change", page 5-5) specifically says you can do this, but the parameters it specifies (e.g. AgentExtension, Reserved) are not present in the SET_AGENT_STATE_REQ message.
 
The Cisco Agent Desktop can do this. If I log on as a particular agent on one computer and then run the Agent Desktop on another computer, I can log in again as the same agent via Agent Desktop and if I don't specify the correct password it rejects the login.
 
Therefore it is possible to do this, but the documentation is wrong. Is there any way to find out the correct way to do this?</summary>
    <dc:creator>Dale Gantous</dc:creator>
    <dc:date>2012-12-13T18:07:52Z</dc:date>
  </entry>
  <entry>
    <title>RE: New Message from Dale Gantous in CTI Server Protocol (GED-188) - CTI Se</title>
    <link rel="alternate" href="http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=9334744" />
    <author>
      <name>Dale Gantous</name>
    </author>
    <id>http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=9334744</id>
    <updated>2012-12-13T16:38:45Z</updated>
    <published>2012-12-13T16:38:45Z</published>
    <summary type="html">[quote=David Lender]If you specify only agentID on the QUERY_AGENT_STATE_REQ and if the agent is logged in you should receive the extension on the QUERY_AGENT_STATE_CONF. If the agent is not logged in then do the SET_AGENT_STATE_REQ.[/quote]
 
That's great, but I also want to validate the password even though the agent is already logged on. We prompt for credentials and don't want anybody to be able to steal an already-logged-in agent session unless they are that agent. How do I do that?
 
The Cisco Agent Desktop can do this, but I imagine that's because it's a dedicated client app and is using OPEN_REQ as the one agent it wants to control. We're a web-based server app monitoring multiple agents over one connection to the CTI server.
 </summary>
    <dc:creator>Dale Gantous</dc:creator>
    <dc:date>2012-12-13T16:38:45Z</dc:date>
  </entry>
  <entry>
    <title>RE: New Message from Dale Gantous in CTI Server Protocol (GED-188) - CTI Se</title>
    <link rel="alternate" href="http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=9331860" />
    <author>
      <name>Dale Gantous</name>
    </author>
    <id>http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=9331860</id>
    <updated>2012-12-13T15:45:23Z</updated>
    <published>2012-12-13T15:45:23Z</published>
    <summary type="html">[quote=David Lender]Have you tried QUERY_AGENT_STATE_REQ with just the AgentID before trying the SET_AGENT_STATE_REQ?[/quote]
 
Thanks for replying so quickly!
 
 
No, I haven't tried that.
 
Current Logic is:
 
1) MONITOR_START_REQ
2) MONITOR_START_CONF -&gt; SET_AGENT_STATE_REQ (AGENT_STATE_LOGIN)
    a) SET_AGENT_STATE_CONF -&gt; QUERY_DEVICE_INFO_REQ
or
    b) FAILURE_CONF (CF_SPECIFIED_AGENT_ALREADY_SIGNED_ON) -&gt; SET_AGENT_STATE_REQ  (AGENT_STATE_LOGIN, ForcedFlag = 2)
 
Infinite loop.
 
Are you saying to check the agent state so that if they're already logged on I shouldn't call SET_AGENT_STATE_REQ with AGENT_STATE_LOGIN? If so, how do I validate the credentials?
Or, are you saying that doing a QUERY_AGENT_STATE_REQ before the SET_AGENT_STATE_REQ will somehow fix the server to return the correct result?</summary>
    <dc:creator>Dale Gantous</dc:creator>
    <dc:date>2012-12-13T15:45:23Z</dc:date>
  </entry>
  <entry>
    <title>Authenticating an Agent when they are already logged on</title>
    <link rel="alternate" href="http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=9308943" />
    <author>
      <name>Dale Gantous</name>
    </author>
    <id>http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=9308943</id>
    <updated>2012-12-12T21:43:25Z</updated>
    <published>2012-12-12T21:40:03Z</published>
    <summary type="html">We have an application that starts a peripheral monitor on an Agent Instrument and logs on the Agent if necessary. We prompt for Agent ID, Password and Instrument, just like the Agent Desktop. We are using Protocol v13.
 
When we issue the SET_AGENT_STATE_REQ message with state AGENT_STATE_LOGIN, if the Agent wasn't logged on everything works perfectly. If however the Agent is already logged on (to this instrument), then we get back a CF_SPECIFIED_AGENT_ALREADY_SIGNED_ON error code. We get this same code back whether the password specified is correct or not.
 
According to the document "Cisco Unified Contact Center Express CTI Protocol Developer Guide, Release 8.0(1) September 2010.pdf", in the section "Agent Authentication Without Agent State Change", you can authenticate an agent without affecting state by sending a SET_AGENT_STATE_REQ message, passing in the state AGENT_STATE_LOGIN, the Agent ID and Password, an AgentExtension of "unknown" and a ForcedFlag value of 2.
 
Well, there is no AgentExtension field in this message. I tried all this with "unknown" in the AgentInstrument field, and that didn't work. I tried the actual instrument number in the AgentInstrument field, and all I get back, again, is the CF_SPECIFIED_AGENT_ALREADY_SIGNED_ON error, regardless of whether a valid password is passed or not.
 
No matter what the ForceFlag value is, 0, 1, or 2, the same result happens. The Agent is logged on if he was not, and the call returns CF_SPECIFIED_AGENT_ALREADY_SIGNED_ON if he was already logged on, regardless of password supplied.
 
How can I validate the agent credentials when the Agent is already logged on? Surely I don't have to cache the passwords myself.
 
Thanks for any help...</summary>
    <dc:creator>Dale Gantous</dc:creator>
    <dc:date>2012-12-12T21:40:03Z</dc:date>
  </entry>
  <entry>
    <title>RE: SNAPSHOT_DEVICE_REQ UCCE 8</title>
    <link rel="alternate" href="http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=9308288" />
    <author>
      <name>Dale Gantous</name>
    </author>
    <id>http://developer.cisco.com/c/message_boards/find_message?p_l_id=&amp;messageId=9308288</id>
    <updated>2012-12-12T20:55:58Z</updated>
    <published>2012-12-12T20:55:58Z</published>
    <summary type="html">[quote=Donald Hamel]I also noticed that message SNAPSHOT_CALL_CONF has one 32 bits fixed field just after CalledPartyDisposition. This field is not documented.[/quote]
 
I noticed that "surprise" field too (as it obviously messes up trying to parse the subsequent floating fields). It seems to be the PeripheralID based on the values I've seen in it. Why it is here I have no idea. Have not seen it in any other _CONF message. Also happens in Protocol V13.</summary>
    <dc:creator>Dale Gantous</dc:creator>
    <dc:date>2012-12-12T20:55:58Z</dc:date>
  </entry>
</feed>

