Sign inSign up

phirumseng/plxy-voice-gateway

By phirumseng

โ€ขUpdated about 1 month ago

PLXY AI Call Center voice gateway โ€” call control between a SIP trunk and a 3CX agent pool

Image
Networking
Integration & delivery
0

121

phirumseng/plxy-voice-gateway repository overview

โ plxy-voice-gateway

Call manager of the PLXY AI Call Center. It drives the telephony engine over FreeSWITCH's Event Socket, opens one AI session per call, plays back rendered speech, collects DTMF, and hands the caller to a 3CX agent when the scenario asks for a transfer.

Part of a five-image platform that answers calls from a SIP trunk, runs an AI conversation, and transfers to a 3CX agent when the flow says so.

๐Ÿ“– Deployment guideโ  ยท Configuration referenceโ 

โ Where it sits

This image runs on the DMZ host, beside plxy-voice-gateway-media, in a Swarm of its own โ€” separate from the internal cluster that runs the control plane.

 SIP trunk โ”€โ”€โ–ถ plxy-voice-gateway-media โ”€โ”€โ–ถ 3CX agents
                        โ–ฒ ESL 127.0.0.1:8021
                 plxy-voice-gateway  โ—€โ”€โ”€ media spool (rendered speech)
                        โ”‚
   โ•โ•โ• DMZ boundary โ•โ•โ•โ•โ•ชโ•โ•โ• exactly three ports cross โ•โ•โ•
                        โ–ผ
    plxy-callbot-worker (WebSocket) ยท plxy-callbot-api (REST)

โ Ports

PortPurpose
8080Control API โ€” called by the control plane to originate outbound calls

Host-networked in the production stack, because it must reach FreeSWITCH's ESL on 127.0.0.1. The bearer token is defence in depth; the firewall is the control. Nothing but the internal cluster should be able to reach this port.

โ Configuration

VariableRequiredWhat it is
CALLBOT_WORKER_WS_URLโœ…Worker WebSocket, as reached from the DMZ โ€” a routable address, not a service name
CALLBOT_API_URLโœ…Control plane URL, same rule
FS_ESL_HOST / FS_ESL_PORTThe media container. Default 127.0.0.1:8021
SPOOL_DIRShared media spool. Default /var/spool/plxy-media
SERVER_PORTDefault 8080
TRUNK_CONF_DIRTrunk definitions written for the media container
JAVA_OPTSDefault -XX:MaxRAMPercentage=75

The two cross-boundary URLs are explicit configuration precisely because the two halves are separate Swarms โ€” joining the DMZ host to the internal cluster would mean opening Swarm's control and data planes across the boundary.

โ Secrets

Read from mounted files, never the environment: FS_ESL_PASSWORD_FILE ยท VGW_WORKER_TOKEN_FILE ยท VGW_CONTROL_TOKEN_FILE ยท INTERNAL_API_TOKEN_FILE

The two token secrets are shared with the internal cluster and must be created identically on both Swarms โ€” deploy/swarm/secrets-init.sh prints the handoff.

โ Run it

This image is one service of the gateway stack and needs plxy-voice-gateway-media beside it. On the DMZ host:

git clone https://github.com/SengPhirum/PLXY_AICC.git && cd PLXY_AICC
deploy/swarm/secrets-init.sh gateway prod
TAG=0.1.0 deploy/swarm/deploy.sh gateway prod

Firewall table, the shared-token handoff, and why the gateway is host-networked: https://sengphirum.github.io/PLXY_AICC/setup-guideโ 

โ Tags

latest tracks the newest release. Pin the version tag (0.1.0) in production, and use the same tag for all five images โ€” they ship as one set.

โ The other images

plxy-voice-gateway-mediaโ  ยท plxy-callbot-apiโ  ยท plxy-callbot-uiโ  ยท plxy-callbot-workerโ 

Tag summary

Content type

Image

Digest

sha256:4d2ffb842โ€ฆ

Size

115.8 MB

Last updated

about 1 month ago

docker pull phirumseng/plxy-voice-gateway