SIP connectivity and routing allows companies and developers to build out solutions on SignalWire that include SIP endpoints in addition to regular business and mobile phone numbers. Customers can create SIP endpoints programmatically or in their SignalWire Space and route traffic to those endpoints in the SignalWire network. These endpoints could be many things, such as: PBXs / Business Phone Systems, IP Phones, Softphones, Mobile Applications, and IoT devices, just to name a few.
Creating a SIP endpoint on SignalWire is simple. You can follow our guide to creating one in your SignalWire Space or set up a SIP endpoint programmatically with our API. For an example, let’s create a SIP endpoint using cURL:
Once the endpoint has been created, you can enter the SIP credentials in your SIP device and the device will register to the network.
If you are interested in SIP trunking, you can connect your endpoint to your company’s PBX or existing system and forgo SignalWire application-level features like recording, IVR or call controls. In this setup, SignalWire takes care of sending your SIP traffic to carriers.
If you want to build an application with SignalWire services to tie into your SIP endpoint, programmatically routing SIP calls to SIP endpoints on the SignalWire network is equally as easy. Using Compatibility XML:
Outbound caller ID can be set in your SIP Endpoint settings in your Space or, as in the first example above, you can set it programmatically. For calls to a PSTN number, you may only choose to send calls as any purchased number or a verified number, using verified caller ID. You can even use your mobile or current business phone number. For SIP-to-SIP calls, you can use any alphanumeric combination for your caller ID.
SIP Calling (Devices and Programmatically)
SIP devices calling between SIP endpoints (SIP <-> SIP) must be done with endpoints that are in the same SignalWire project. PSTN-to-SIP calls can be routed to any SIP endpoints outside of SignalWire, Eg. PSTN -> LāML -> External SIP.
Configuring your SIP device
Depending on what your SIP device is, be it a PBX or a SIP application or IP Phone, they all require many of the same field parameters.
SIP Username SIP Password
Local SIP Port SIP Server SIP Server Port
SIP Server Transport Protocol
Outbound Proxy Outbound Proxy Port
Outbound Proxy Transport Protocol
Note: In order to avoid malicious behavior, we suggest choosing a local SIP port that is not the typical SIP port.
Continuing with our earlier example, our parameters for a SIP IP Phone or soft client might be:
SIP Username: c3p0 SIP Password: yavinOrBust
Local SIP Port: 6050 SIP Server: firstname.lastname@example.org (refer to your Dashboard for the correct URL)
SIP Server Port: 5061 (SIP Port: 5060, TLS Port 5061) SIP Server Transport Protocol: TLS
Outbound Proxy: (supported but not generally needed) Outbound Proxy Port: (supported but not generally needed)
Outbound Proxy Transport Protocol: (supported but not generally needed)
Security is important to us! Communications over the open internet should be secure both in signaling and in media. We feel so strongly about security that we decided to support TLS (Transport Layer Security) and SRTP (Secure Real-time Transport Protocol) by default, at no extra charge. Other competitors in the space charge extra for encrypting calls, that’s not how we roll at SignalWire.
All call logs can be viewed in the Usage tab of your SignalWire Dashboard. Here, you can see details for each call including the SignalWire resource type and cost. Additional details for each call are available by clicking on the resource name.
Our price for SIP is metered per minute/per call leg with discounts offered based on call volume. Check out our pricing page for up to date pricing. As mentioned earlier, our customers get encryption for free. We also do not charge for using LāML to route calls.
Come and build something great on SignalWire!
Here are some resources to help you get started: