Files
pipecat/examples/deployment/pipecat-cloud-daily-pstn-server/nextjs-webhook-server
2025-05-13 16:00:05 -07:00
..
2025-05-13 16:00:05 -07:00
2025-04-07 10:44:41 -04:00
2025-04-07 10:44:41 -04:00
2025-04-07 10:44:41 -04:00
2025-04-07 10:44:41 -04:00

Next.js server for handling Daily PSTN/SIP Webhook

Next.js API routes for handling Daily PSTN/SIP Pipecat requests.

Features

  • API endpoint for handling Daily PSTN/SIP Pipecat requests
  • HMAC signature validation
  • Structured logging with Pino
  • Support for dial-in and dial-out settings
  • Voicemail detection and call transfer functionality
  • Test request handling

Setup

  1. Clone the repository

  2. Navigate to the nextjs-webhook-server directory:

    cd nextjs-webhook-server
    
  3. Install dependencies:

    npm install
    
  4. Create .env.local file with your credentials:

    cp env.local.example .env.local
    
  5. Update your .env with your secrets:

    PIPECAT_CLOUD_API_KEY=pk_*
    AGENT_NAME=my-first-agent
    PINLESS_HMAC_SECRET=your_hmac_secret
    LOG_LEVEL=info
    

Running the server

Run the development server:

npm run dev

The server will run on http://localhost:7860 and you can expose it via ngrok for testing:

`ngrok http 7860`

Tip: Use a subdomain for a consistent URL (e.g. ngrok http -subdomain=mydomain http://localhost:7860)

API Endpoints

GET /api

Returns a simple "Hello, World!" message with a cute cat emoji to verify the server is running.

POST /api/dial

Handles dial-in and dial-out requests for Pipecat Cloud.

Test Requests

The endpoint handles test requests when a webhook is configured. Send a request with "Test": "test" to verify your setup:

{
  "Test": "test"
}

Production Request Format

{
  // for dial-in from webhook
  "To": "+14152251493",
  "From": "+14158483432",
  "callId": "string-contains-uuid",
  "callDomain": "string-contains-uuid",
  // for making a dial out to a phone or SIP
  "dialout_settings": [
    { "phoneNumber": "+14158483432", "callerId": "purchased_phone_uuid" },
    { "sipUri": "sip:username@sip.hostname.com" }
  ]
}

Deployment

The application is configured for Vercel deployment:

  1. Push your code to a Git repository
  2. Import your project in Vercel dashboard
  3. Configure environment variables:
    • PIPECAT_CLOUD_API_KEY
    • AGENT_NAME
    • PINLESS_HMAC_SECRET
    • LOG_LEVEL (optional, defaults to 'info')
  4. Deploy!

Security

  • HMAC signature validation for request authentication
  • Environment variables for sensitive credentials
  • Method validation (POST only for /dial)