A SIP call made through the WCS server can be captured to an RTMP stream and rebroadcast to the specified RTMP server when the call is created. One usage example is publishing a call to Facebook or Youtube.
1. For the test we use:
2. Open the REST client. Send /call/startup to the WCS server and specify in the parameters of the query the following data:
3. Receive and answer the call on the softphone:
4. Open the Player web application. Specify the URL of the RTMP server and the name of the RTMP stream the call is redirected to, then click the "Play" button. The call starts playing:
5. Terminate the call in the softphone.
Below is the call flow when using the SIP as RTMP example to create a call
1. Sending the /call/startup REST query:
sendREST() code
function startCall() { ... var url = field("restUrl") + "/call/startup"; callId = generateCallID(); $("#sipCallId").val(callId); ... var RESTCall = {}; RESTCall.toStream = field("rtmpStream"); RESTCall.hasAudio = field("hasAudio"); RESTCall.hasVideo = field("hasVideo"); RESTCall.callId = callId; RESTCall.sipLogin = field("sipLogin"); RESTCall.sipAuthenticationName = field("sipAuthenticationName"); RESTCall.sipPassword = field("sipPassword"); RESTCall.sipPort = field("sipPort"); RESTCall.sipDomain = field("sipDomain"); RESTCall.sipOutboundProxy = field("sipOutboundProxy"); RESTCall.appKey = field("appKey"); RESTCall.sipRegisterRequired = field("sipRegisterRequired"); for (var key in RESTCall) { setCookie(key, RESTCall[key]); } RESTCall.callee = field("callee"); var data = JSON.stringify(RESTCall); sendREST(url, data); startCheckCallStatus(); } |
2. Establishing a connection to the SIP server
3. Receiving confirmation from the SIP server
4. The RTP stream is sent to the WCS server
5. Publishing of the RTMP stream on the RTMP server
6. The RTMP stream is passed to the RTMP server
7. Sending the /call/terminate REST query:
sendREST() code
function hangup() { var url = field("restUrl") + "/call/terminate"; var currentCallId = { callId: callId }; var data = JSON.stringify(currentCallId); sendREST(url, data); } |
8. Sending the command to the SIP server
9. Receiving confirmation from the SIP server