mirror of
https://github.com/hoshikawa2/agent_platform_oci.git
synced 2026-07-09 14:04:19 +00:00
113 lines
2.4 KiB
Markdown
113 lines
2.4 KiB
Markdown
# External Channel Gateway
|
|
|
|
This service is a separate Channel Gateway that sits in front of the Agent Framework backend.
|
|
|
|
It has its own runtime mode, independent from the backend input mode.
|
|
|
|
## Runtime modes
|
|
|
|
```env
|
|
CHANNEL_GATEWAY_RUNTIME_MODE=adapter
|
|
```
|
|
|
|
`adapter` means this service receives channel-specific payloads and translates them into `GatewayRequest` before calling the Agent Framework backend.
|
|
|
|
```env
|
|
CHANNEL_GATEWAY_RUNTIME_MODE=proxy
|
|
```
|
|
|
|
`proxy` means this service accepts only an already-built `GatewayRequest` at `/gateway/message` and forwards it after validation.
|
|
|
|
## Recommended enterprise setup
|
|
|
|
In `channel_gateway/.env`:
|
|
|
|
```env
|
|
CHANNEL_GATEWAY_RUNTIME_MODE=adapter
|
|
AGENT_FRAMEWORK_BASE_URL=http://localhost:8000
|
|
DEFAULT_TENANT_ID=default
|
|
DEFAULT_AGENT_ID=telecom_contas
|
|
```
|
|
|
|
In `agent_template_backend/.env`:
|
|
|
|
```env
|
|
FRAMEWORK_CHANNEL_INPUT_MODE=external
|
|
```
|
|
|
|
This means:
|
|
|
|
```text
|
|
channel_gateway:7000 = understands channel payloads and builds GatewayRequest
|
|
backend:8000 = accepts only GatewayRequest and does not parse native channel payloads
|
|
```
|
|
|
|
## Run
|
|
|
|
```bash
|
|
cd channel_gateway
|
|
cp .env.example .env
|
|
uvicorn app.main:app --host 0.0.0.0 --port 7000
|
|
```
|
|
|
|
## Test web adapter endpoint
|
|
|
|
```bash
|
|
curl -s -X POST "http://localhost:7000/channels/web/message" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"message": "Quero consultar minha fatura",
|
|
"session_id": "external-gw-test-001",
|
|
"user_id": "user-external-001",
|
|
"message_id": "msg-external-001",
|
|
"customer_key": "11999999999",
|
|
"contract_key": "3000131180",
|
|
"interaction_key": "301953872",
|
|
"session_key": "external-gw-test-001"
|
|
}' | jq
|
|
```
|
|
|
|
## Test proxy mode
|
|
|
|
Set:
|
|
|
|
```env
|
|
CHANNEL_GATEWAY_RUNTIME_MODE=proxy
|
|
```
|
|
|
|
Then call:
|
|
|
|
```bash
|
|
curl -s -X POST "http://localhost:7000/gateway/message" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"channel": "web",
|
|
"tenant_id": "default",
|
|
"agent_id": "telecom_contas",
|
|
"payload": {
|
|
"message": "Quero consultar minha fatura",
|
|
"session_id": "proxy-test-001"
|
|
}
|
|
}' | jq
|
|
```
|
|
|
|
## Important distinction
|
|
|
|
Do not use `CHANNEL_GATEWAY_MODE=external` to mean “this service is external”.
|
|
|
|
Use:
|
|
|
|
```env
|
|
CHANNEL_GATEWAY_RUNTIME_MODE=adapter
|
|
```
|
|
|
|
for the external gateway service that owns adapters.
|
|
|
|
Use:
|
|
|
|
```env
|
|
FRAMEWORK_CHANNEL_INPUT_MODE=external
|
|
```
|
|
|
|
in the Agent Framework backend when the backend must accept only normalized `GatewayRequest` payloads.
|