<soapenv:Envelope>
<soapenv:Body>
<soapenv:Fault>
<faultcode>sf:INVALID_SESSION_ID</faultcode>
<faultstring>INVALID_SESSION_ID: Invalid Session ID found in SessionHeader: Illegal Header</faultstring>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
Running Genesys Cloud 2024-01 with the SFDC Managed Package v8.5.1 on a BYOC Edge (AWS us-west-2) setup. The click-to-dial button just spins when agents route through the private edge. Screen pops drop completely. Standard public routing works fine, but the moment traffic hits the edge, the CTI adapter throws session mismatch errors. You’ll notice the dial pad hangs for a solid ten seconds before the softphone finally registers. It’s taking forever to sync the contact lookup.
The GC for Salesforce package tries to validate the session via GET /api/v2/me but the edge proxy strips the X-GC-Request-Id header. Apex v58.0 callouts time out at 12000ms. We moved the validation logic into a quick @future(callout=true) method to bypass the synchronous CTI handshake, but that just delays the screen pop by six seconds. Not exactly smooth for inbound calls. Agents are clicking the dial pad twice because the first tap does jack all.
Data Actions for SFDC also choke on the edge routing. The POST /api/v2/data/actions endpoint returns a 403 Forbidden when the request originates from the edge subnet. Had to whitelist the edge CIDR in the org’s trusted IP ranges, which helped with the logging but didn’t fix the dialer lag. Architect flow CTI_ScreenPop_v3 is configured to trigger SFDC_Update_Contact on INBOUND_ANSWER, but the edge adds about 800ms of latency before the webhook fires.
Tried adjusting the CTIAdapter timeout in Setup > Genesys Cloud Settings. Lowering it to 5000ms just breaks the call transfer buttons. Raising it to 15000ms makes the dial pad unresponsive. The edge seems to be intercepting the WebSocket heartbeat for the CTI softphone. Can’t get the connection to stay alive past three minutes.
public class CTISessionRefresh {
@future(callout=true)
public static void refreshSession(Id contactId) {
Http http = new Http();
HttpRequest req = new HttpRequest();
req.setEndpoint('https://api.mypurecloud.com/api/v2/interaction/interactions');
req.setMethod('POST');
req.setHeader('Authorization', 'Bearer ' + SessionTokenManager.getToken());
HttpResponse res = http.send(req);
System.debug('Edge CTI Response: ' + res.getStatusCode());
}
}
The logs show the edge dropping packets right when the SFDC_ScreenPop action triggers. Packet capture points to tcp 443 resets on the outbound leg. Might just be a TLS handshake mismatch between the edge load balancer and the Salesforce auth endpoint. Still chasing the routing table rules