chore: updatae documentation for api trigger

This commit is contained in:
Abhishek Kumar 2026-05-04 12:46:11 +05:30
parent 5ad5bbd985
commit 0d7b225f76
12 changed files with 120 additions and 39 deletions

View file

@ -14,7 +14,10 @@ from pydantic import BaseModel
from api.db import db_client
from api.enums import TriggerState
from api.services.quota_service import check_dograh_quota_by_user_id
from api.services.telephony.factory import get_default_telephony_provider
from api.services.telephony.factory import (
get_default_telephony_provider,
get_telephony_provider_by_id,
)
from api.utils.common import get_backend_endpoints
router = APIRouter(prefix="/public/agent")
@ -25,6 +28,7 @@ class TriggerCallRequest(BaseModel):
phone_number: str
initial_context: Optional[dict] = None
telephony_configuration_id: int | None = None
class TriggerCallResponse(BaseModel):
@ -114,14 +118,38 @@ async def _initiate_call(
detail="Trigger not found in the published Agent",
)
# 6. Get telephony provider for the organization (using its default config).
try:
provider = await get_default_telephony_provider(trigger.organization_id)
except ValueError:
raise HTTPException(
status_code=400,
detail="Telephony provider not configured for this organization",
# 6. Get telephony provider — either the caller-specified config (validated
# against the trigger's org) or the org's default config.
if request.telephony_configuration_id is not None:
cfg = await db_client.get_telephony_configuration_for_org(
request.telephony_configuration_id, trigger.organization_id
)
if not cfg:
raise HTTPException(
status_code=404, detail="Telephony configuration not found"
)
try:
provider = await get_telephony_provider_by_id(
cfg.id, trigger.organization_id
)
except ValueError:
raise HTTPException(
status_code=400,
detail="Telephony provider not configured for this configuration",
)
resolved_cfg_id = cfg.id
else:
try:
provider = await get_default_telephony_provider(trigger.organization_id)
except ValueError:
raise HTTPException(
status_code=400,
detail="Telephony provider not configured for this organization",
)
default_cfg = await db_client.get_default_telephony_configuration(
trigger.organization_id
)
resolved_cfg_id = default_cfg.id if default_cfg else None
# Validate provider is configured
if not provider.validate_config():
@ -130,10 +158,6 @@ async def _initiate_call(
detail="Telephony provider not configured for this organization",
)
default_cfg = await db_client.get_default_telephony_configuration(
trigger.organization_id
)
# 7. Determine the workflow run mode based on provider type
workflow_run_mode = provider.PROVIDER_NAME
@ -149,7 +173,7 @@ async def _initiate_call(
"phone_number": request.phone_number,
"agent_uuid": uuid,
"trigger_mode": "test" if use_draft else "production",
"telephony_configuration_id": default_cfg.id if default_cfg else None,
"telephony_configuration_id": resolved_cfg_id,
**(request.initial_context or {}),
},
user_id=api_key.created_by,

View file

@ -27,11 +27,6 @@ from pipecat.pipeline.pipeline import Pipeline
from pipecat.processors.aggregators.llm_response_universal import (
LLMContextAggregatorPair,
)
from pipecat.processors.filters.stt_mute_filter import (
STTMuteConfig,
STTMuteFilter,
STTMuteStrategy,
)
class LoopTalkPipelineBuilder:
@ -126,13 +121,6 @@ class LoopTalkPipelineBuilder:
context_aggregator = LLMContextAggregatorPair(context)
# Create STT mute filter
stt_mute_filter = STTMuteFilter(
config=STTMuteConfig(
strategies={STTMuteStrategy.FIRST_SPEECH},
)
)
# Create pipeline engine callback processor
pipeline_engine_callback_processor = PipelineEngineCallbacksProcessor(
max_call_duration_seconds=300,
@ -152,7 +140,6 @@ class LoopTalkPipelineBuilder:
[
transport.input(),
audio_streamer, # Stream audio to connected clients
stt_mute_filter,
stt,
transcript.user(),
user_context_aggregator,

View file

@ -22,7 +22,15 @@ SPEC = NodeSpec(
" • Test: `<backend>/api/v1/public/agent/test/<trigger_path>` — runs "
"the latest draft, useful for verifying changes before publishing. "
"Falls back to the published agent when no draft exists.\n"
"Both require an API key in the `X-API-Key` header."
"Both require an API key in the `X-API-Key` header.\n"
"Request body fields:\n"
" • `phone_number` (string, required) — destination to dial.\n"
" • `initial_context` (object, optional) — merged into the run's "
"initial context.\n"
" • `telephony_configuration_id` (int, optional) — pick a specific "
"telephony configuration for the call. Must belong to the same "
"organization as the trigger. When omitted, the org's default "
"outbound configuration is used."
),
category=NodeCategory.trigger,
icon="Webhook",