...
Selection and switching input and output devices
Like a video stream capture, camera, microphone and (in Chrome browser only) sound output device can be selected while making a SIP call from browser. Besides, devices can be switched during a call.
...
To do this RTP activity timer should be disabled with following parameter in flashphoner.properties file
Code Block | ||||
---|---|---|---|---|
| ||||
rtp_activity_detecting=false |
...
WCS sets the codecs supported to INVITE SDP according to the following parameters in flashphoner.properties file
1. The codecs specified with codecs
parameter are included to INVITE SDP, by default
...
Code Block | ||||
---|---|---|---|---|
| ||||
v=0 o=Flashphoner 0 1541068898263 IN IP4 192.168.1.5 s=Flashphoner/1.0 c=IN IP4 192.168.1.5 b=AS:3000 b=TIAS:2500000 b=RS:1000 b=RR:3000 t=0 0 m=audio |
Known issues
1. It's impossible to make a SIP call if 'SIP Login' and 'SIP Authentification name' fields are incorrect
Symptoms: SIP call stucks in PENDING state.
Solution: according to the standard, 'SIP Login' and 'SIP Authentification name' should not contain any of unescaped spaces and special symbols and should not be enclosed in angle brackets '<>'.
For example, this is not allowed by the standard
Code Block | ||||
---|---|---|---|---|
| ||||
sipLogin='Ralf C12441@host.com'
sipAuthenticationName='Ralf C'
sipPassword='demo'
sipVisibleName='null'
|
and this is allowed
Code Block | ||||
---|---|---|---|---|
| ||||
sipLogin='Ralf_C12441'
sipAuthenticationName='Ralf_C'
sipPassword='demo'
sipVisibleName='Ralf C'
|
2. There are some problems with sound while SIP calls from Edge browser.
Symptoms:
SIP calls using SIP TLS signaling
SIP TLS signaling may be enabled with the following parameter
Code Block | ||
---|---|---|
| ||
sip_use_tls=true |
In this case, SIP PBX cetrificate will be checked using local system certificates storage. Therefore, a valid SSL certificate from well known CA should be installed on SIP PBX server to use SIP TLS.
SIP calls via SIP PBX server with self-signed SSL certificate
To make a SIP call via SIP PBX server with self-signed SSL certificate, this certificate should be added to local storage on the server where WCS is installed:
1. Get self-signed SSL certificate from SIP PBX server
Code Block | ||||
---|---|---|---|---|
| ||||
openssl s_client -showcerts -connect 192.168.0.153:5061 |
Where
- 192.168.0.153 - SIP PBX server IP address
- 5061 - SIP TLS port
2. Copy certificates from the SIP server response
Code Block | ||
---|---|---|
| ||
Certificate chain
0 s:/CN=pbx.mycompany.com/O=My Super Company
i:/CN=Asterisk Private CA/O=My Super Company
-----BEGIN CERTIFICATE-----
... SIP server certificate goes here
-----END CERTIFICATE-----
1 s:/CN=Asterisk Private CA/O=My Super Company
i:/CN=Asterisk Private CA/O=My Super Company
-----BEGIN CERTIFICATE-----
... SIP server CA certificate goes here
-----END CERTIFICATE----- |
then add them to pbx.crt file. The file content should be like this:
Code Block | ||
---|---|---|
| ||
-----BEGIN CERTIFICATE-----
... SIP server certificate goes here
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
... SIP server CA certificate goes here
-----END CERTIFICATE----- |
3. Detected Java home path
Code Block | ||||
---|---|---|---|---|
| ||||
readlink -f $(which java) |
For example, if the command above returned
Code Block | ||
---|---|---|
| ||
/usr/java/jdk1.8.0_181/bin/java |
then Java is installed to the folder
Code Block | ||
---|---|---|
| ||
/usr/java/jdk1.8.0_181/ |
4. Find Java local certificate storage file path, for example
Code Block | ||||
---|---|---|---|---|
| ||||
find /usr/java/jdk1.8.0_181/jre/lib/security/cacerts |
5. Import the certificates retrieved on step 2 to Java local certificate storage
Code Block | ||||
---|---|---|---|---|
| ||||
keytool -importcert -keystore /usr/java/jdk1.8.0_181/jre/lib/security/cacerts -storepass changeit -file pbx.crt -alias "pbx" |
6. Restart WCS.
Connection to an existing session
Sometimes it is necessary to connect to already existing session and receive an incoming call. It is usually actual on mobile devices where websocket session is closed automatically when browser goes to background. In this case, only push notifications are available. To keep the sesssion active after disconnection, the keepAlive
option should be set while creating the session
Code Block | ||||
---|---|---|---|---|
| ||||
var connectionOptions = {
urlServer: url,
keepAlive: true,
sipOptions: sipOptions
};
...
Flashphoner.createSession(connectionOptions).on(SESSION_STATUS.ESTABLISHED, function(session, connection){
...
}); |
In this case, session stays active until the following interval in milliseconds is expired (3600 seconds, or 1 hour by default)
Code Block | ||
---|---|---|
| ||
client_timeout=3600000 |
This interval is periodically checked. The checking priod is set in milliseconds by the following parameter (300 seconds, or 5 minutes by default)
Code Block | ||
---|---|---|
| ||
client_timeout_check_interval=300000 |
A session token should be stored while creating the session
Code Block | ||||
---|---|---|---|---|
| ||||
Flashphoner.createSession(connectionOptions).on(SESSION_STATUS.ESTABLISHED, function(session, connection){
authToken = connection.authToken;
...
}); |
Then application may connect to the session again using this token (for example, if incoming call push notification is received):
Code Block | ||||
---|---|---|---|---|
| ||||
var connectionOptions = {
urlServer: url,
keepAlive: true
};
if (authToken) {
connectionOptions.authToken = authToken;
} else {
connectionOptions.sipOptions = sipOptions;
}
Flashphoner.createSession(connectionOptions).on(SESSION_STATUS.ESTABLISHED, function(session, connection){
...
}); |
re-INVITE support
Since build 5.2.1943 re-INVITE for outgoing SIP calls is supported. If a SIP PBX sends SDP in 200 OK response to SIP INVITE from WCS, the SDP will be applied to media codecs negotiation to pass media traffic between WCS and SIP PBX. No changes in WCS settings required.
Known issues
1. It's impossible to make a SIP call if 'SIP Login' and 'SIP Authentification name' fields are incorrect
Symptoms: SIP call stucks in PENDING state.
Solution: according to the standard, 'SIP Login' and 'SIP Authentification name' should not contain any of unescaped spaces and special symbols and should not be enclosed in angle brackets '<>'.
For example, this is not allowed by the standard
Code Block | ||||
---|---|---|---|---|
| ||||
sipLogin='Ralf C12441@host.com'
sipAuthenticationName='Ralf C'
sipPassword='demo'
sipVisibleName='null'
|
and this is allowed
Code Block | ||||
---|---|---|---|---|
| ||||
sipLogin='Ralf_C12441'
sipAuthenticationName='Ralf_C'
sipPassword='demo'
sipVisibleName='Ralf C'
|
2. There are some problems with sound while SIP calls from Edge browser.
Symptoms:
a) The outgoing sound is sometimes abruptly muffled, then it goes normally.
...
Code Block | ||||
---|---|---|---|---|
| ||||
var outCall = session.createCall({
callee: $("#callee").val(),
visibleName: $("#sipLogin").val(),
localVideoDisplay: localDisplay,
remoteVideoDisplay: remoteDisplay,
constraints: constraints,
receiveAudio: true,
receiveVideo: false,
stripCodecs: "silk,g722"
...
});
outCall.call(); |
...
: remoteDisplay,
constraints: constraints,
receiveAudio: true,
receiveVideo: false,
stripCodecs: "silk,g722"
...
});
outCall.call(); |
or with server setting
Code Block | ||
---|---|---|
| ||
codecs_exclude_sip=g722,mpeg4-generic,flv,mpv |
3. Microphone swithing does not work in Safari browser.
Symptoms: microphone does not switch using switchMic() WCS WebSDK method.
Solution: use another browser, because Safari always uses sound input microphone, that is chosen in system sound menu (hold down the option (alt) button and click on the sound icon in the menu bar). When microphone is chosen in sound menu, Mac reboot is required.
If Logitech USB camers microphone does not work (when it is chosen in sound menu), format / sample rate changing in Audio MIDI Setup and rebooting can help.
4. Outgoing video SIP call cannot be established if INVITE SDP size exceeds MTU
Symptoms: SIP server return 408 Reques timeout when trying to establish video SIP call, audio calls can be established successfully through the same server.
Solution: reduce the number of codecs in the INVITE SDP so that the SDP fit into the packet size defined by MTU (usually 1500 bytes) using the following settings
Code Block | ||
---|---|---|
| ||
codecs_exclude_sip=g722,mpeg4-generic,flv,mpv |
3. Microphone swithing does not work in Safari browser.
Symptoms: microphone does not switch using switchMic() WCS WebSDK method.
Solution: use another browser, because Safari always uses sound input microphone, that is chosen in system sound menu (hold down the option (alt) button and click on the sound icon in the menu bar). When microphone is chosen in sound menu, Mac reboot is required.
If Logitech USB camers microphone does not work (when it is chosen in sound menu), format / sample rate changing in Audio MIDI Setup and rebooting can help.
4. Outgoing video SIP call cannot be established if INVITE SDP size exceeds MTU
Symptoms: SIP server return 408 Reques timeout when trying to establish video SIP call, audio calls can be established successfully through the same server.
...
mpeg4-generic,flv,mpv,opus,ulaw,h264,g722,g729
allow_outside_codecs=false |
Only codecs supported by both sides of the call should be left, in this case it is VP8 and PCMA (alaw).
5. There is no sound in browser if caller makes an audio+video call and callee responds with audio only
Symptoms: there is no sound in caller browser if caller makes an audio+video call (for instance, using Phone Video example) and callee responds with audio only (for instance, a call to IVR)
Solution: update WCS to build 5.2.1672 and enable video frames generator
Code Block | ||
---|---|---|
| ||
generate_av_for_ua=all |
6. IVR greeting plays not from beginning if caller makes audio+video call
Symptoms: there is a gap before IVR greeting starts playing if caller makes an audio+video call (for instance, using Phone Video example)
Solution: update WCS to build 5.2.1755 and reduce video frames generator start timeout
Code Block | ||
---|---|---|
| ||
generate_av_for_ua=all
rtp_generator_start_timeout=100 |
7. An excessive video transcoding to VP8 starts when making a call between browsers
Symptoms: a video traffic is receiving from SIP server in H264 codec, but video is playing as VP8 in browser
Solution:
a) add the following parameter to WCS settings
Code Block | ||
---|---|---|
| ||
profiles=42e01f,640028 |
b) add the following parameter if above does not help
Code Block | ||
---|---|---|
| ||
codecsproxy_exclude_sip=mpeg4-generic,flv,mpv,opus,ulaw,h264,g722,g729 allow_outside_codecs=false |
...
use_h264_packetization_mode_1_only=false |