Wipple CPaaS
Menu
Webhooks / New Call (POST)

New Call

POSThttps://{yourserver}/webhooks/callContent-Type: application/json

This webhook is sent when a new call is created on the platform, it is configured at the appplication level

Authentication

  • Authorization header (basic auth, required) — Basic authentication of the form Basic <base64(username:password)>.

Request

Body (application/json)

This endpoint expects a CallHook.

  • call_sidstringrequireda unique identifier for the call.
  • call_idstringrequiredthe call id in our server.
  • application_sidstringrequireda unique identifier for the Wipple CPaaS application controlling this call
  • account_sidstringrequireda unique identifier for the Wipple CPaaS account associated with the application
  • directionenumrequiredthe direction of the call:
    • inbound - The call was originated outside Wipple CPaaS
    • outbound - The call was originated by Wipple CPaaS
  • Allowed values: inbound, outbound
  • fromstringrequiredthe calling party number
  • tostringrequiredthe called party number
  • caller_namestringrequiredthe caller name, if known
  • sip_statusdoublerequiredthe most recent sip status code received or generated for the call
  • sip_reasonstringrequiredthe reason phrase from the SIP status LINE of the last response (e.g. Trying, OK, Busy Here). This is not the RFC 3326 Reason header - see sip_reason_header.
  • call_statusenumrequiredcurrent status of the call:
    • trying - a new incoming call has arrived or an outbound call has just been sent
    • ringing - a 180 Ringing response has been sent or received
    • early-media - an early media connection has been established prior to answering the call (183 Session Progress)
    • in-progress - call has been answered
    • completed - an answered call has ended
    • failed - a call attempt failed
    • busy - a call attempt failed because the called party returned a busy status
    • no-answer - a call attempt failed because it was not answered in time
  • Allowed values: trying, ringing, early-media, in-progress, completed, failed, busy, no-answer
  • sip_reason_headerstringoptionalthe RFC 3326 Reason header of the SIP message that caused this status change, if it carried one; omitted otherwise. Carriers fronting ISDN/E1 PRI trunks put the authoritative disconnect cause here rather than in the status line, and the same SIP status can carry different causes - a 503 may be cause=38 (network out of order) or cause=41 (temporary failure) - so the status code alone cannot classify the outcome of a call. A 408 with Q.850;cause=18 ("no user responding") is a call nobody answered, not a platform fault. Present on whichever event observed it: a final failure response, a BYE on an answered call, or a CANCEL from a caller who gave up. The CANCEL case matters most, because the 487 and its Request Terminated phrase are generated by Wipple CPaaS itself - so without this header every abandoned inbound call looks identical, and SIP;cause=200;text="Call completed elsewhere" is what distinguishes a forked branch losing the race from a caller who hung up. Two parsing caveats: the header is re-serialized in transit, which normalizes the optional whitespace RFC 3326 allows around ;, so a carrier's Q.850 ;cause=18 arrives as Q.850;cause=18 - parse tolerantly rather than string-matching. And a message may carry more than one Reason header, in which case they arrive comma-separated; split on commas outside quotes, since a text="..." value may contain one.
  • sbc_callidstringoptionalthe orignal call ID of the call when it arrived at Wipple CPaaS
  • originating_sip_ipstringoptionalThe IP address that send the call to Wipple CPaaS
  • originating_sip_trunk_namestringoptionalThe name of the carrier in Wipple CPaaS that recieved the call
  • local_sip_addressstringoptionalInternal Address of the media server handling the call
  • service_provider_sidstringoptionalThe ID of the service provider the account handling the call belongs to
  • sipsipRequestoptionalThe SIP request for the call
  • env_varsCallHookEnvVarsoptionalApplication Environment Variables configured for the applicaiton

Response

200

Return a 200 containing a JSON payload consisting of an array of Functions

Types

sipRequest

  • rawstringrequiredthe complete SIP request as a single string.
  • headersSipRequestHeadersrequiredeach of the SIP headers as a key/value object
  • bodystringrequiredthe body of the request, containing SDP
  • methodstringrequiredThe SIP method
  • versionstringrequiredthe SIP version
  • uristringrequiredThe SIP URI of the request
  • payloadSipRequestPayloadrequiredthe body of the request

CallHookEnvVars

Application Environment Variables configured for the applicaiton

SipRequestHeaders

each of the SIP headers as a key/value object

SipRequestPayload

the body of the request

Examples

Request

{
  "call_sid": "d2515c3b-b79a-41a2-971a-445e769c823c",
  "call_id": "d2515c3b-b79a-41a2-971a-445e769c823c",
  "application_sid": "72c5c38f-9bba-40ce-aa83-aaa6be55e1b5",
  "account_sid": "bad98250-b34d-459d-9e90-f97dfb9bc519",
  "direction": "inbound",
  "from": "+815099990001",
  "to": "+815099990002",
  "caller_name": "Miraicom Taro",
  "sip_status": 100,
  "sip_reason": "Trying",
  "call_status": "trying"
}

Response

{}