I have a SOAP response in ruby. I am trying to get two or more values out of it. I can successfully get the data I am looking for if there is only one instance, but if there is more than one I get the following error:
can't convert String into Integer (TypeError)
The code I am using is:
p activecall["GetActiveCallsResult"]["ShoreTelCallStateInfo"]["callInfo"].callID
And an example of the SOAP response is below. Any idea how I can parse through the different values when there are more than one? The two values I would like to get from the example below are 70342 and 68496.
<SOAP::Mapping::Object:0x..fdb7aa9f8 {http://www.ShoreTel.com/ProServices/SDK/Web}GetActiveCallsResult=#
<SOAP::Mapping::Object:0x..fdb7aa8d6 {http://www.ShoreTel.com/ProServices/SDK/Web}ShoreTelCallStateInfo=[#
<SOAP::Mapping::Object:0x..fdb7aa796 {http://www.ShoreTel.com/ProServices/SDK/Web}callInfo=#
<SOAP::Mapping::Object:0x..fdb7aa656 {http://www.ShoreTel.com/ProServices/SDK/Web}lineID="20837"
{http://www.ShoreTel.com/ProServices/SDK/Web}callID="68496"
{http://www.ShoreTel.com/ProServices/SDK/Web}isExternal="true"
{http://www.ShoreTel.com/ProServices/SDK/Web}isInbound="false"
{http://www.ShoreTel.com/ProServices/SDK/Web}callReason="None"
{http://www.ShoreTel.com/ProServices/SDK/Web}connectedID="9+18012624550"
{http://www.ShoreTel.com/ProServices/SDK/Web}callerID="1955"
{http://www.ShoreTel.com/ProServices/SDK/Web}callerIDName="Joel Lewis"
{http://www.ShoreTel.com/ProServices/SDK/Web}calledID="9+13852045017"
{http://www.ShoreTel.com/ProServices/SDK/Web}callParties=#
<SOAP::Mapping::Object:0x..fdb7a7d98 {http://www.ShoreTel.com/ProServices/SDK/Web}CallPartyInfo=[#
<SOAP::Mapping::Object:0x..fdb7a7c94 {http://www.ShoreTel.com/ProServices/SDK/Web}partyNumber="1"
{http://www.ShoreTel.com/ProServices/SDK/Web}partyType="Trunk"
{http://www.ShoreTel.com/ProServices/SDK/Web}partyCCOID="1073742591"
{http://www.ShoreTel.com/ProServices/SDK/Web}trunkInfo=#
<SOAP::Mapping::Object:0x..fdb7a6e8e {http://www.ShoreTel.com/ProServices/SDK/Web}trunkType="DigitalPRI"
{http://www.ShoreTel.com/ProServices/SDK/Web}trunkSwitch="5" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkPort="21"
{http://www.ShoreTel.com/ProServices/SDK/Web}trunkPortName=" E-Link (21)">>, #
<SOAP::Mapping::Object:0x..fdb7a569c {http://www.ShoreTel.com/ProServices/SDK/Web}partyNumber="2"
{http://www.ShoreTel.com/ProServices/SDK/Web}partyType="Trunk"
{http://www.ShoreTel.com/ProServices/SDK/Web}partyCCOID="1073742590"
{http://www.ShoreTel.com/ProServices/SDK/Web}trunkInfo=#
<SOAP::Mapping::Object:0x..fdb7a486e {http://www.ShoreTel.com/ProServices/SDK/Web}trunkType="DigitalPRI"
{http://www.ShoreTel.com/ProServices/SDK/Web}trunkSwitch="5"
{http://www.ShoreTel.com/ProServices/SDK/Web}trunkPort="20"
{http://www.ShoreTel.com/ProServices/SDK/Web}trunkPortName=" E-Link (20)">>]>
{http://www.ShoreTel.com/ProServices/SDK/Web}callUniqueID="3219803974"
{http://www.ShoreTel.com/ProServices/SDK/Web}callGUID="{00030000-E023-537E-3FD3-0010492377D9}">
{http://www.ShoreTel.com/ProServices/SDK/Web}callState="Conferenced"
{http://www.ShoreTel.com/ProServices/SDK/Web}callStateDetail=#
<SOAP::Mapping::Object:0x..fdb7a20be> {http://www.ShoreTel.com/ProServices/SDK/Web}callProperties=#
<SOAP::Mapping::Object:0x..fdb7a1ce0 {http://www.ShoreTel.com/ProServices/SDK/Web}KeyValuePair=#
<SOAP::Mapping::Object:0x..fdb7a1bd2 {http://www.ShoreTel.com/ProServices/SDK/Web}propertyName="_ST_CONF_ROLE"
{http://www.ShoreTel.com/ProServices/SDK/Web}propertyValue="CRL:1">>>, #
<SOAP::Mapping::Object:0x..fdb7a0a16 {http://www.ShoreTel.com/ProServices/SDK/Web}callInfo=#
<SOAP::Mapping::Object:0x..fdb7a08cc {http://www.ShoreTel.com/ProServices/SDK/Web}lineID="20837"
{http://www.ShoreTel.com/ProServices/SDK/Web}callID="70342"
{http://www.ShoreTel.com/ProServices/SDK/Web}isExternal="true"
{http://www.ShoreTel.com/ProServices/SDK/Web}isInbound="false"
{http://www.ShoreTel.com/ProServices/SDK/Web}callReason="None"
{http://www.ShoreTel.com/ProServices/SDK/Web}connectedID="1955"
{http://www.ShoreTel.com/ProServices/SDK/Web}connectedIDName="Joel Lewis"
{http://www.ShoreTel.com/ProServices/SDK/Web}callerID="1955"
{http://www.ShoreTel.com/ProServices/SDK/Web}callerIDName="Joel Lewis"
{http://www.ShoreTel.com/ProServices/SDK/Web}calledID="9+13852045017"
{http://www.ShoreTel.com/ProServices/SDK/Web}callParties=#
<SOAP::Mapping::Object:0x..fdb79dbc2 {http://www.ShoreTel.com/ProServices/SDK/Web}CallPartyInfo=#
<SOAP::Mapping::Object:0x..fdb79daa0 {http://www.ShoreTel.com/ProServices/SDK/Web}partyNumber="1"
{http://www.ShoreTel.com/ProServices/SDK/Web}partyType="Trunk"
{http://www.ShoreTel.com/ProServices/SDK/Web}partyCCOID="1073742591"
{http://www.ShoreTel.com/ProServices/SDK/Web}trunkInfo=#
<SOAP::Mapping::Object:0x..fdb79cc90 {http://www.ShoreTel.com/ProServices/SDK/Web}trunkType="DigitalPRI"
{http://www.ShoreTel.com/ProServices/SDK/Web}trunkSwitch="5"
{http://www.ShoreTel.com/ProServices/SDK/Web}trunkPort="21"
{http://www.ShoreTel.com/ProServices/SDK/Web}trunkPortName=" E-Link (21)">>>
{http://www.ShoreTel.com/ProServices/SDK/Web}callUniqueID="3219803974"
{http://www.ShoreTel.com/ProServices/SDK/Web}callGUID="{00030000-E022-537E-3FD3-0010492377D9}">
{http://www.ShoreTel.com/ProServices/SDK/Web}callState="Connected"
{http://www.ShoreTel.com/ProServices/SDK/Web}callStateDetail="Active"
{http://www.ShoreTel.com/ProServices/SDK/Web}callProperties=#
<SOAP::Mapping::Object:0x..fdb799e00 {http://www.ShoreTel.com/ProServices/SDK/Web}KeyValuePair=#
<SOAP::Mapping::Object:0x..fdb799cfc {http://www.ShoreTel.com/ProServices/SDK/Web}propertyName="_ST_CONF_ROLE"
{http://www.ShoreTel.com/ProServices/SDK/Web}propertyValue="CRL:1">>>, #
<SOAP::Mapping::Object:0x..fdb798e10 {http://www.ShoreTel.com/ProServices/SDK/Web}callInfo=#<SOAP::Mapping::Object:0x..fdb798c9e {http://www.ShoreTel.com/ProServices/SDK/Web}lineID="20837" {http://www.ShoreTel.com/ProServices/SDK/Web}callID="70777" {http://www.ShoreTel.com/ProServices/SDK/Web}isExternal="true" {http://www.ShoreTel.com/ProServices/SDK/Web}isInbound="false" {http://www.ShoreTel.com/ProServices/SDK/Web}callReason="None" {http://www.ShoreTel.com/ProServices/SDK/Web}connectedID="9+13852045017" {http://www.ShoreTel.com/ProServices/SDK/Web}callerID="1955" {http://www.ShoreTel.com/ProServices/SDK/Web}callerIDName="Joel Lewis" {http://www.ShoreTel.com/ProServices/SDK/Web}calledID="9+13852045017" {http://www.ShoreTel.com/ProServices/SDK/Web}callParties=#<SOAP::Mapping::Object:0x..fdb79641c {http://www.ShoreTel.com/ProServices/SDK/Web}CallPartyInfo=[#<SOAP::Mapping::Object:0x..fdb796318 {http://www.ShoreTel.com/ProServices/SDK/Web}partyNumber="1" {http://www.ShoreTel.com/ProServices/SDK/Web}partyType="Trunk" {http://www.ShoreTel.com/ProServices/SDK/Web}partyCCOID="1073742591" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkInfo=#<SOAP::Mapping::Object:0x..fdb795558 {http://www.ShoreTel.com/ProServices/SDK/Web}trunkType="DigitalPRI" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkSwitch="5" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkPort="21" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkPortName=" E-Link (21)">>, #<SOAP::Mapping::Object:0x..fdb793d7a {http://www.ShoreTel.com/ProServices/SDK/Web}partyNumber="2" {http://www.ShoreTel.com/ProServices/SDK/Web}partyType="Trunk" {http://www.ShoreTel.com/ProServices/SDK/Web}partyCCOID="1073742590" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkInfo=#<SOAP::Mapping::Object:0x..fdb792f4c {http://www.ShoreTel.com/ProServices/SDK/Web}trunkType="DigitalPRI" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkSwitch="5" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkPort="20" {http://www.ShoreTel.com/ProServices/SDK/Web}trunkPortName=" E-Link (20)">>]> {http://www.ShoreTel.com/ProServices/SDK/Web}callUniqueID="3219803974" {http://www.ShoreTel.com/ProServices/SDK/Web}callGUID="{00030000-E022-537E-3FD3-0010492377D9}"> {http://www.ShoreTel.com/ProServices/SDK/Web}callState="Conferenced" {http://www.ShoreTel.com/ProServices/SDK/Web}callStateDetail=#<SOAP::Mapping::Object:0x..fdb790706> {http://www.ShoreTel.com/ProServices/SDK/Web}callProperties=#<SOAP::Mapping::Object:0x..fdb79030a {http://www.ShoreTel.com/ProServices/SDK/Web}KeyValuePair=#<SOAP::Mapping::Object:0x..fdb7901c0 {http://www.ShoreTel.com/ProServices/SDK/Web}propertyName="_ST_CONF_ROLE" {http://www.ShoreTel.com/ProServices/SDK/Web}propertyValue="CRL:1">>>]>>
From the error message it looks like you have an array when there is more than one result as it is looking for an Integer rather than String in the []
s
You will need to loop through the array and pull out the elements you want.
I would guess it's ShoreTelCallStateInfo
that is the array but it's not entirely clear to me from the data dump as it appears to be truncated in the middle.
Something like:
activecall["GetActiveCallsResult"]["ShoreTelCallStateInfo"].each do |info|
p info["callInfo"].callID
end