--- title: "Webhooks and Callbacks" description: "How Dograh AI handles telephony webhooks and audio streaming" --- ## Overview Dograh AI uses webhooks to communicate with telephony providers for call events and audio streaming. Webhooks are automatically configured when you initiate calls. ## Webhook Types ### 1. Initial Call Webhook When a call is initiated, the telephony provider requests instructions. **Endpoint**: `/api/v1/telephony/twiml` **Purpose**: Returns provider-specific instructions (TwiML for Twilio) **Example Response**: ```xml ``` ### 2. Status Callback Receives call lifecycle events. **Endpoint**: `/api/v1/telephony/status-callback/{workflow_run_id}` **Events Tracked**: - `initiated` - Call request received - `ringing` - Call is ringing - `answered` - Call was answered - `completed` - Call ended normally - `busy` - Line was busy - `no-answer` - Call not answered - `failed` - Call failed ### 3. WebSocket Audio Stream Real-time audio streaming for voice interaction. **Endpoint**: `/api/v1/telephony/ws/{workflow_id}/{user_id}/{workflow_run_id}` ## How It Works Dograh AI automatically: 1. Constructs webhook URLs based on your deployment 2. Passes them to the telephony provider when initiating calls 3. Verifies webhook signatures for security 4. Processes status updates to track call lifecycle 5. Manages WebSocket connections for audio streaming ## Local Development For local development, use the built-in Cloudflare tunnel: ```yaml # docker-compose.yml includes: cloudflared: image: cloudflare/cloudflared:latest command: tunnel --no-autoupdate --url http://api:8000 ``` The tunnel URL is automatically detected and used for webhooks. ## Troubleshooting - Verify your domain/tunnel URL is publicly accessible - Check firewall rules allow incoming HTTPS traffic - Test with `curl` from external network - Check WebSocket upgrade headers are preserved - Verify no timeout on load balancer/proxy - Monitor for memory/CPU constraints - Verify workflow_run_id is included in URL - Check provider console for webhook errors - Review webhook retry logs