Genesys CTI User Forum

Genesys CTI User Forum => Genesys CTI Technical Discussion => Topic started by: Anrew Livingston on May 07, 2015, 06:10:47 PM

Title: Use ANI of inbound call on Instant Conference Transfer on external trunk
Post by: Anrew Livingston on May 07, 2015, 06:10:47 PM
Scenario:
Agent handles inbound call, uses Instant Call Conference to an external resource using a single-step conference trunk.  Need to be able to send the ANI of that original call to the external party.

When we do internal transfers, the recipient of the conference sees the ANI of the inbound caller, just need that to work on external transfers.

TServer/enable-ssc-network
TServer
enable-ssc-network
true

TServer/oosp-transfer-enabled
true

TServer/override-from-on-conf
false

TServer/prefix
6

TServer/priority
1

TServer/refer-enabled
true

TServer/reuse-sdp-on-reinvite
true

TServer/session-refresh-enforced
false

TServer/sip-disable-greeting
false

TServer/sip-hold-rfc-3264
false

TServer/subscribe-presence-expire
3600

TServer/use-display-enabled
true

If the DN that handled the call is 8340 for example if I set override-from-on-conf = true then the callerID on the receiving end shows 8340, but that's as much success as I've had.
Anybody have an idea on how to make this work?
Title: Re: Use ANI of inbound call on Instant Conference Transfer on external trunk
Post by: cavagnaro on May 07, 2015, 11:01:21 PM
Depends on your PBX/MediaGateway/Operator configuration. Does your Telco allows you to send those numbers??
Title: Re: Use ANI of inbound call on Instant Conference Transfer on external trunk
Post by: Anrew Livingston on May 21, 2015, 09:00:34 PM
So the solution is that you have to set CPNDigits = ANI in the Extensions of the TSingleStepTransfer (or Conference).  This can be done in routing, but when it's initiated from the agent desktop (Workspace Desktop 8.5.1 in our case), you have to create a custom command and insert it before InteractionVoiceSingleStepTransfer.

[code]
public bool Execute(IDictionary<string, object> parameters, IProgressUpdater progress)
  {
            log.DebugFormat("BeforeSingleStepTransfer.Execute(): add CPNDigits");
  IInteractionVoice interactionVoice = parameters["CommandParameter"] as IInteractionVoice;
            object data = null;
            Genesyslab.Enterprise.Commons.Collections.KeyValueCollection ext = null;
            parameters.TryGetValue("Extensions", out data);
            try
            {
                if (data == null)
                {
                    ext = new Genesyslab.Enterprise.Commons.Collections.KeyValueCollection();
                }
                else
                {
                    ext = data as Genesyslab.Enterprise.Commons.Collections.KeyValueCollection;
                }
                ext.Add("CPNDigits", interactionVoice.PhoneNumber;
    parameters["Extensions"] = ext;
            }
            catch (Exception e)
            {
                log.DebugFormat("BeforeSingleStepTransfer.Execute():" + Environment.NewLine + e.StackTrace);
                return true;
            }
            return false;
  }
 
Add the command into the chain in the module's Initialize() method:

        commandManager.InsertCommandToChainOfCommandBefore("InteractionVoiceSingleStepTransfer", "SingleStepTransfer",
            new CommandActivator() { CommandType = typeof(BeforeVoiceSingleStepTransferCommand) });

[/code]