Skip to content

genesys-connector-go

Status: Current | Last reviewed: 2026-10-07

Genesys Cloud AudioHook / AudioConnector WebSocket bridge to ai-orchestrator. AudioHook supplies a live-call audio tap for Copilots; AudioConnector supplies the voicebot path. SIP/BYOC routing is a separate telephony integration.

Source

apps/genesys-connector-go

Runtime

Aspect Value
Language Go
Protocol Genesys AudioHook over WebSocket
Capacity 5k+ concurrent sessions per pod (production-tuned)

What it does

  1. Genesys Cloud opens a WebSocket when the configured AudioHook or AudioConnector integration runs.
  2. The connector decodes audio and presents a gRPC session to ai-orchestrator.
  3. AudioHook can supply both external/caller and internal/agent channels for a Copilot's transcription. AudioConnector voicebots also return synthesized audio.
  4. The voicebot path supports Genesys hand-off messages.

A transcript-only Copilot needs no active suggestion workers. See Live Genesys transcripts for the call-ID binding, SDK contract, test-phone options and external SIP embed gaps.

Routing (audiohook/copilot mode)

Two connection types share the handler, split by URL path (/genesys/{connection_type}/{agent_id}):

  • audioconnector (voicebot): the path agent id is used directly — no mapping lookup.
  • audiohook (copilot/monitor): the connector calls ai-manager POST /api/genesys/lookup with the open message's ANI/DNIS/ANI-name plus any inputVariables as custom_properties. ai-manager evaluates the integration's pipeline-mapping rules (field types ani/dnis/ani_name/custom) and returns the winning pipeline_id. Results are cached (AUTH_CACHE_SECONDS, default 300s) keyed on org:ani:dnis:aniName + a deterministic serialization of the custom properties.

Custom routing properties (inputVariables)

A source connection may send additional properties in the AudioHook open message as inputVariables (top-level or under parameters — same shape as the AudioConnector path). These are optional, so spec-plain Genesys AudioHook monitors are unaffected. When present they:

  1. Feed the routing lookup as custom_properties (matched by field_type='custom' mapping rules with a field_key).
  2. Are forwarded to the orchestrator as gRPC metadata["session_variables"] — for both connection types (audiohook previously dropped them). The connector-injected agentId/ani/dnis/callerName live in parameters.inputVariables and win over source-sent top-level keys on collision.

Property definitions (key/label/description) are managed per integration in ai-manager's Pipeline Mapping modal; free-form keys are also accepted in rules.

Dependencies

Service Purpose
ai-orchestrator Session start + audio gRPC
Postgres Tenant lookup, integration credentials
Genesys Cloud AudioHook + transfer APIs

Vanguard

Started by scripts/start-genesys-connector.sh under Overmind. Public ingress at genesys.<host>.dev.trueserve.deloitte.com.

Production

Helm chart at charts/genesys-connector-go. Two paths in production:

  • EC2 + GA: Global Accelerator fronts the connector; rtpengine sits behind on the same node pool.
  • GKE/EKS: hostNetwork pods on a dedicated media node pool.

SIP/BYOC pairing

When the deployment also uses the TrueServe SIP/BYOC path, three things must line up: Global Accelerator TCP :5065, a per-city Kamailio TLS cert that Genesys trusts, and a trunk ACL with the shared NAT egress IP. Mismatch can produce 404 Not Found on transfer. These SIP requirements are separate from the AudioHook WebSocket tap on a Genesys call.

See also