Results 1 to 13 of 13

Thread: Further callback ado... how to associate a system placed call with a callback?

  1. #1
    Join Date
    Jul 2016
    Location
    Phoenix, AZ
    Posts
    124

    Question Further callback ado... how to associate a system placed call with a callback?

    So as of now I have a handler that checks whether a callback has been accepted by an agent, and if so makes a PlaceCall on the agent's behalf in order to bypass the agent having to click the call button in the Desktop Callback controls. (the callback is generated by the caller in and IVR requesting a call back instead of waiting on hold)

    However, I still need to associate the call with the callback in order to have it properly represented in the system. How are callback calls associated with the callback itself? I assumed it would be some kind of interaction attribute, but I'm not seeing anything obvious so either I'm blind to it or there's something else I'm unaware of ... [puppy dog eyes]

  2. #2
    Join Date
    Nov 2006
    Location
    Anderson, IN
    Posts
    901

    callback reporting

    Here's a blog post that I wrote not too long ago that addresses this question: http://cpi.solutions/2017/enhanced-c...ureconnectcic/

    The problem I ran into is that to link the original call, the callback request, and the outbound call together requires the call ID key - not just the call ID. The base attributes that Genesys uses only include the simple call ID which doesn't allow unique matches to the other interactions. My solution was to write an attribute on the callback request with the call ID key of the inbound call as the request enters the queue (CustomAcdInitiateProcessin), and then modify CustomCallDisconnect and handle the disconnect event for the callback request object and grab the call ID key of the outbound call. In both cases, I used the simple call ID to look a the call object (if still allocated in the system) and grab its call ID key. The main problem is that if the agent fails to click the Complete or Failed buttons on the callback request object immediately after completing the outbound call, then the outbound call will have already been deallocated.

  3. #3
    Join Date
    Jul 2016
    Location
    Phoenix, AZ
    Posts
    124

    Arrow

    Quote Originally Posted by dcurrier View Post
    Here's a blog post that I wrote not too long ago that addresses this question: http://cpi.solutions/2017/enhanced-c...ureconnectcic/

    The problem I ran into is that to link the original call, the callback request, and the outbound call together requires the call ID key - not just the call ID. The base attributes that Genesys uses only include the simple call ID which doesn't allow unique matches to the other interactions. My solution was to write an attribute on the callback request with the call ID key of the inbound call as the request enters the queue (CustomAcdInitiateProcessin), and then modify CustomCallDisconnect and handle the disconnect event for the callback request object and grab the call ID key of the outbound call. In both cases, I used the simple call ID to look a the call object (if still allocated in the system) and grab its call ID key. The main problem is that if the agent fails to click the Complete or Failed buttons on the callback request object immediately after completing the outbound call, then the outbound call will have already been deallocated.
    Thanks David! We've actually got that aspect handled in a very similar way already.

    I think I didn't get my point across clearly: in Desktop, the callback comes in and we make the outbound call on behalf of the agent in CustomPostACDAlertInteraction. However, this forced call (a) doesn't appear as a child item of the Callback in the Desktop interactions pane and (b) doesn't trigger the Desktop callback tool to enable the disabled buttons so that the agent can otherwise handle that callback thru the system as normal.

    What I'm looking for is how to associate that forced PlaceCall with the Callback as if the agent had used the Desktop callback tool by clicking the "Pickup" button.

    Screen Shot 10-13-17 at 10.05 AM 001.PNG

    I was hoping that there were call attributes I might use for that such as Eic_CallbackAssociatedCallId, but some experimenting has yielded bupkiss so far alas - hence my desperate cry here on the forum

  4. #4
    Join Date
    Nov 2006
    Location
    Anderson, IN
    Posts
    901

    Interesting...

    That's beyond what I have attempted with callback interactions. Based on what I've seen, I'm afraid some of those capabilities are tucked away in the client/telephony services code.

  5. #5
    Join Date
    Jul 2016
    Location
    Phoenix, AZ
    Posts
    124
    Quote Originally Posted by dcurrier View Post
    That's beyond what I have attempted with callback interactions. Based on what I've seen, I'm afraid some of those capabilities are tucked away in the client/telephony services code.
    Yah, that's what I'm afraid of, and where some kind of documentation would be reaaaaally nice... :P

  6. #6
    Join Date
    Oct 2002
    Location
    Indianapolis
    Posts
    2,048
    Digging through old SCRs, I see one which mentions "Eic_CallbackAssociatedCallId exists on the
    outbound call..."

    If you set that attribute on your outbound call with the ID from the callback you want associated, does that solve anything?
    George Ganahl
    Principal Education Technology Consultant

  7. #7
    Join Date
    Jul 2016
    Location
    Phoenix, AZ
    Posts
    124

    Unhappy

    Quote Originally Posted by GGanahl View Post
    Digging through old SCRs, I see one which mentions "Eic_CallbackAssociatedCallId exists on the
    outbound call..."

    If you set that attribute on your outbound call with the ID from the callback you want associated, does that solve anything?
    I did try that actually, as I spotted it going thru the attributes dictionary searching for "callback" and sadly it doesn't seem to do anything

    Screen Shot 10-13-17 at 11.31 AM.PNG

    I captured the attributes on a Callback-initiated call to see if that would help, but didn't see anything useful:

    Code:
    CallId:3099960085
    CallLog:12:59:14: Initializing 12:59:39: Disconnected [Remote Disconnect]
    Eic_AcdWorkgroup:zTtylerTest
    Eic_AnswerTime:20171012T195926.784Z
    Eic_CallClassification:Long Distance
    Eic_CallDirection:O
    Eic_CallId:3099960085
    Eic_CallIdKey:309996008530171012
    Eic_CallState:Disconnected
    Eic_CallStateString:%12307% [%12251%]
    Eic_CallType:E
    Eic_ConnectDurationTime:13
    Eic_ConnectEvtTime:10/12/2017 12:59:26
    Eic_ConnectTime:20171012T195926.784Z
    Eic_InitialConnectTime:20171012T195926.784Z
    Eic_InitiationTime:20171012T195914.427Z
    Eic_InteractionUuid:a04227f5-1bc7-c511-8914-003099960085
    Eic_IpInfo:Disconnected.
    Eic_IRAttrWatches:FFN_SettlementId|FFN_ClientId|FFN_CallTagCallType
    Eic_IRCandidateRecordingId:
    Eic_IRIntxState:2
    Eic_IRRecordingFlags:10
    Eic_IRRecordingId:01ebec14-1577-d091-8e82-f980a6cd0001
    Eic_IRRecordingInitiatedFor:tuser
    Eic_IRRecordingIntx:3099960087
    Eic_IRSnippet_Participants:ep;!:m;o(saf8/f]as`q^2,zTtylerTest,2017-10-12 19:59:26.0,:4\,si/1*?qn*&o:=-d9e3,0000000000000000000002,Phoenix AZ,false,+16025454637,,true|ep;!:m;o(saf8/f]as`q^2,zTtylerTest,2017-10-12 19:59:26.0,z8$at/yp*g*c6h;^w=z^i3,\{a}e\vd(^aqhc<q]q<({2,Tyler user,true,/19715,tuser,false|ep;!:m;o(saf8/f]as`q^2,zTtylerTest,2017-10-12 19:59:26.0,:4\,si/1*?qn*&o:=-d9e3,0000000000000000000002,Phoenix AZ,false,+16025454637,,true|ep;!:m;o(saf8/f]as`q^2,zTtylerTest,2017-10-12 19:59:26.0,z8$at/yp*g*c6h;^w=z^i3,\{a}e\vd(^aqhc<q]q<({2,Tyler user,true,/19715,tuser,false
    Eic_IsdnCauseValue:16
    Eic_LastConnectedUser:tuser
    Eic_LastInsertionQueues:Line Queue:Tempe1SIP
    Eic_LineName:Tempe1SIP
    Eic_LineQueueTimestamp:20171012T195914.790Z
    Eic_LocalAddress:19715
    Eic_LocalId:19715
    Eic_LocalName:Tyler user
    Eic_LocalPartyType:I
    Eic_LocalSecurityLevelRequested:0
    Eic_LocalUserId:tuser
    Eic_ObjectType:Call
    Eic_OnHoldAudioFile:SystemAudioOnHold6.wav
    Eic_OwnershipToken:103442:0
    Eic_ProtocolId:|SIP
    Eic_Recorders:
    Eic_RecordingCandidate:1
    Eic_RegionOriginatedFrom:<RegionDefaultLocation>
    Eic_RemoteAddress:6025454637
    Eic_RemoteAddressCopy:6025454637
    Eic_RemoteAddressPriority:040
    Eic_RemoteEndpointImmutable:+16025454637
    Eic_RemoteId:(602) 545-4637
    Eic_RemoteIdCopy:(602) 545-4637
    Eic_RemoteIdPriority:040
    Eic_RemoteName:Phoenix AZ
    Eic_RemoteNameCopy:Phoenix AZ
    Eic_RemoteNamePriority:020
    Eic_RemotePartyType:E
    Eic_RemoteSecurityLevelRequested:0
    Eic_RemoteTnNormalized:+16025454637
    Eic_RemoteTnRaw:6025454637
    Eic_SecurityLevelActual:0
    Eic_State:E
    Eic_StateTimestamp:20171012T195939.200Z
    Eic_StationName:Tyler user
    Eic_StationQueueTimestamp:20171012T195914.427Z
    Eic_StreamType:1
    Eic_TerminationTime:20171012T195939.200Z
    Eic_TrackerRWPInfo:<?xml version="1.0"?><rows></rows>
    Eic_TrackerTrackInteraction:1
    Eic_TsCallType:0
    Eic_UserName:tuser
    Eic_UserQueueTimestamp:20171012T195914.427Z
    Eic_UWSegmentId:3
    Eic_UWSegmentQueues:2 User Queue:tuser|2 Station Queue:Tyler user|3 Workgroup Queue:zTtylerTest|3 User Queue:tuser|3 Station Queue:Tyler user
    Eic_Workgroup:Workgroup Queue:zTtylerTest
    Eic_WorkgroupName:zTtylerTest
    Eic_WorkgroupQueueTimestamp:20171012T195914.427Z
    Last edited by samandiriel; October 13th, 2017 at 14:33.

  8. #8
    Join Date
    Oct 2002
    Location
    Indianapolis
    Posts
    2,048
    Reading more SCRs, I think I have that backward. I think you need to add the CallID from the outbound call to that attribute on the Callback object.

    'Set an attribute on the callback interaction that contains the interaction
    ID that was dialed as a result of hitting "Make Call" in the callback
    interaction UI. – the interaction being set is: "Eic_CallbackAssociatedCallId"'
    Last edited by GGanahl; October 13th, 2017 at 15:30.
    George Ganahl
    Principal Education Technology Consultant

  9. #9
    Join Date
    Oct 2010
    Posts
    94
    Ok, maybe from the outfield and perhaps not a flyer, but have you considered using ICELib to write a plugin/extension to the client?

    Iím thinking that since what you are essentially wanting to do is automate what would normally be done by the agent in the client....

    Just a thought!
    Paul Simpson
    Technical Sales Systems Engineer

  10. #10
    Join Date
    Jul 2016
    Location
    Phoenix, AZ
    Posts
    124
    Quote Originally Posted by Wierdbeard65 View Post
    Ok, maybe from the outfield and perhaps not a flyer, but have you considered using ICELib to write a plugin/extension to the client?

    Iím thinking that since what you are essentially wanting to do is automate what would normally be done by the agent in the client....

    Just a thought!
    Thanks, it's a good thought and that would work... but addins are not a good fit for our environment plus we are migrating to the web client in 2018Q2 anyway so it would be wasted effort :P

  11. #11
    Join Date
    Jul 2016
    Location
    Phoenix, AZ
    Posts
    124
    Quote Originally Posted by GGanahl View Post
    Reading more SCRs, I think I have that backward. I think you need to add the CallID from the outbound call to that attribute on the Callback object.

    'Set an attribute on the callback interaction that contains the interaction
    ID that was dialed as a result of hitting "Make Call" in the callback
    interaction UI. Ė the interaction being set is: "Eic_CallbackAssociatedCallId"'
    Doesn't seem to work, either way

    Also, something I just noticed is that the Place Call doesn't work right, either. Even tho I pick up on the far end, the Desktop UI just shows "dialing" even tho the two phones are connected. It then disconnects after 30s and the call log shows that the eic call state string is "Disconnected [No Ringback]"

  12. #12
    Join Date
    Oct 2010
    Posts
    94
    Quote Originally Posted by samandiriel View Post
    Thanks, it's a good thought and that would work... but addins are not a good fit for our environment plus we are migrating to the web client in 2018Q2 anyway so it would be wasted effort :P
    Now you are just being difficult
    Let me see if I can dig up any information on what the options are for an equivalent in Interaction Connect (the web client).
    Paul Simpson
    Technical Sales Systems Engineer

  13. #13
    Join Date
    Jul 2016
    Location
    Phoenix, AZ
    Posts
    124

    Cool

    Quote Originally Posted by Wierdbeard65 View Post
    Now you are just being difficult
    Let me see if I can dig up any information on what the options are for an equivalent in Interaction Connect (the web client).
    I'm not difficult - I'm just channeling my user base

    I appreciate the effort! I think we are going to have to go with a custom solution where we manage callbacks with pseudo-callbacks (objects) with actual callbacks going to a dummy queue, then modifying the actual callbacks using handlers depending on what happens with the dummy callback objects in order to keep reporting inside the native framework (if that won't work, I'd love to know why in advance!)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •