InnovateAsterisk / Browser-Phone

A fully featured browser based WebRTC SIP phone for Asterisk
https://www.innovateasterisk.com
GNU Affero General Public License v3.0
488 stars 240 forks source link

debugging remote devices #46

Open vieridipaola opened 4 years ago

vieridipaola commented 4 years ago

Hi,

I was wondering what would the best approach be to try to debug errors in remote handheld devices such as smartphones or tablets. Not having control over these end-user devices, whatever goes to console.log is basically unavailable. Could it be possible to make a function that sends each console message to a custom server via ajax calls? Something like consoleRemote(msg); when one would need to "setItem" a web service URL. That would allow admins to see at least some of the erro message that could occur. Yet another workaround would be to open a window wth all the debugging info displayed in it, but only if the admin sets a specific "setItem" variable for a given user login. The user would then have to copy all of the on-screen text and manually send it somehow to the admin.

Do you have any other ways of debugging remote client-side issues?

I'm asking because I've had two cases of clients unable to call using this app, and it was impossible to get enough info from the users. Maybe issues detecting the microphone, no idea.

Thanks

InnovateAsterisk commented 4 years ago

So a note on Tablets... I have tested this and have calls (audio and video) working on an ipad (using Safari), and a bunch of Android Phones/Tablets (using Chrome). (Chrome on iOS is not able to access the media devices.)

With Chrome (on android), open a new tab and go to: chrome://inspect (Similar to right click, inspect on the PC version)

On Safari (on iOS):

I'll also look at some cloud logging solutions, as most of these will just allow you to debug/test "live", but not have any "after the fact" debugging.

InnovateAsterisk commented 4 years ago

This looks like something useful: https://trackjs.com/

vieridipaola commented 4 years ago

Neat, but maybe overkill. I currently know of a client who cannot make a videocall, but who can perfectly use whatsapp and other apps on Android. All I know is that Browser-Phone opens up, the freedial function is called as "video", but it fails with several messages saying that it cannot make a video call. I don't have more info. I could try to set the Freedial function to "audio" to see which media is actually not being detected, as I believe that's the culprit. I'm also presuming the user has Chrome or the likes. I might change the phone.js "console.log" messages to ajax calls, and see if I can get debug information from this remote client.

Sure, I could use the free version of TrackJS for this particular case, but I'm sure there will be more in the future. I don't know yet if I will be allowed to buy a license though, I'll take a look at writing an ajax function to be called right after a console.log and see if that can shed some light.

Thanks

PS: of course the complexity being adding this ajax function to linked in libraries such as sip.js, but I think having it in phone.js should be enough to debug most cases,

vieridipaola commented 4 years ago

I tried this:

function remoteConsoleLog(msg){
        $.ajax({
           type:'POST', url: 'remotelog.php',data: msg
        });
        // We might log again to the client's console by reimplementing the console object?
        // alert(msg);
}

window.onerror = remoteConsoleLog;
console.log = remoteConsoleLog;

and it works, but.... it has a severe impact on client browser performance, and also triggers your WAF or IPS engines server-side. For instance, my Apache mod-security installation started blocking these ajax calls. So, ideally, one should first buffer the log messages into a string or array, and finally make the ajax call only when finished or when an error is found.

vieridipaola commented 4 years ago

With the "remoteConsoleLog" funcition I posted above, here's what I get when the problematic client connects:

2020-07-02 17:13:35 Lanaguage Pack already loaded: 
2020-07-02 17:13:35 Clearing Buddies...
2020-07-02 17:13:35 Adding Buddies...
2020-07-02 17:13:35 Total Buddies: 3
2020-07-02 17:13:35 Updating Buddy List...
2020-07-02 17:13:35 Selecting previously selected buddy...
2020-07-02 17:13:35 Selecting Buddy: 159292201224121D7
2020-07-02 17:13:35 Creating User Agent...
2020-07-02 17:13:35 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | configuration parameters after validation:
2020-07-02 17:13:35 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · viaHost: "192.0.2.19"
2020-07-02 17:13:35 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · uri: sip:patient@sip.domain.org
2020-07-02 17:13:35 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · custom: {}
2020-07-02 17:13:35 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · displayName: "Patient"
2020-07-02 17:13:35 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · password: NOT SHOWN
2020-07-02 17:13:35 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · registerExpires: 300
2020-07-02 17:13:35 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · register: false
2020-07-02 17:13:35 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · registrarServer: sip:sip.domain.org
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · transportConstructor: i
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · transportOptions: {"wsServers":"wss://sip.domain.org:8090/ws","traceSip":false,"connectionTimeout":15,"maxReconnectionAttempts":99,"reconnectionTimeout":15}
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · userAgentString: "browserphone"
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · noAnswerTimeout: 60000
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · hackViaTcp: false
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · hackIpInContact: true
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · hackWssInTransport: true
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · hackAllowUnregisteredOptionTags: false
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · sessionDescriptionHandlerFactoryOptions: {"constraints":{},"peerConnectionOptions":{}}
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · contactName: "093as3cf"
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · contactTransport: "wss"
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · forceRport: false
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · autostart: false
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · autostop: true
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · rel100: "none"
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · dtmfType: "info"
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · replaces: "none"
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · sessionDescriptionHandlerFactory: function(e,t){var r=e.ua.getLogger("sip.invitecontext.sessionDescriptionHandler",e.id),n=new(i(31))(e,t);return new s(r,n,t)}
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · authenticationFactory: undefined
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · allowLegacyNotifications: false
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · allowOutOfDialogRefers: false
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · authorizationUser: "patient"
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · instanceId: "c394e538-0060-498f-a79e-e0f957e7daa1"
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · sipjsId: "r1n6t"
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | · hostportParams: "sip.domain.org"
2020-07-02 17:13:36 Creating User Agent... Done
2020-07-02 17:13:36 Connecting to Web Socket...
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.ua | user requested startup...
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.transport | configuration parameters after validation:
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.transport | · wsServers: [{"ws_uri":"wss://sip.domain.org:8090/ws","sip_uri":"<sip:sip.domain.org:8090;transport=ws;lr>","weight":0,"isError":false,"scheme":"WSS"}]
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.transport | · connectionTimeout: 15
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.transport | · maxReconnectionAttempts: 99
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.transport | · reconnectionTimeout: 15
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.transport | · keepAliveInterval: 0
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.transport | · keepAliveDebounce: 10
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.transport | · traceSip: false
2020-07-02 17:13:36 Transport Object Created
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.transport | connecting to WebSocket wss://sip.domain.org:8090/ws
2020-07-02 17:13:36 Connected to Web Socket!
2020-07-02 17:13:36 Sending Registration...
2020-07-02 17:13:36 Thu Jul 02 2020 17:13:36 GMT+0200 (Central European Summer Time) | sip.transport | WebSocket wss://sip.domain.org:8090/ws connected
2020-07-02 17:13:36 Registered!
2020-07-02 17:13:36 Subscribe to voicemail Messages...
2020-07-02 17:13:36 Starting Subscribe of all (3) Extension Buddies...
2020-07-02 17:13:36 SUBSCRIBE: 900@sip.domain.org
2020-07-02 17:13:37 SUBSCRIBE: doctormario@sip.domain.org
2020-07-02 17:13:37 SUBSCRIBE: 900@sip.domain.org
2020-07-02 17:13:37 Thu Jul 02 2020 17:13:37 GMT+0200 (Central European Summer Time) | sip.dialog | new UAS dialog created with status CONFIRMED
2020-07-02 17:13:37 Setting Presence for 15929242524482557 to Unavailable
2020-07-02 17:13:39 User Agent ready
2020-07-02 17:13:39 Disabling some features for patient
2020-07-02 17:13:39 Patient auto-dials queue
2020-07-02 17:13:39 Selecting Line : 1
2020-07-02 17:13:39 INVITE (video): 900@sip.domain.org
2020-07-02 17:13:39 [Provisioning] Properly exiting
2020-07-02 17:13:39 Thu Jul 02 2020 17:13:39 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | SessionDescriptionHandlerOptions: {"constraints":{},"peerConnectionOptions":{}}
2020-07-02 17:13:39 Thu Jul 02 2020 17:13:39 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | initPeerConnection
2020-07-02 17:13:39 Thu Jul 02 2020 17:13:39 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | New peer connection created
2020-07-02 17:13:39 Thu Jul 02 2020 17:13:39 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | acquiring local media
2020-07-02 17:13:39 Thu Jul 02 2020 17:13:40 GMT+0200 (Central European Summer Time) | sip.inviteclientcontext | unable to acquire streams
2020-07-02 17:13:39 Call failed: WebRTC Error
2020-07-02 17:13:39 New CDR
2020-07-02 17:13:39 Last Activity is now: 2020-07-02 15:13:40 UTC
2020-07-02 17:13:39 Thu Jul 02 2020 17:13:40 GMT+0200 (Central European Summer Time) | sip.inviteclientcontext | closing INVITE session r1n6tneecbt941g8e4um7b6iuards3
2020-07-02 17:13:39 Session terminated
2020-07-02 17:13:40 Closing Line: 1
2020-07-02 17:13:40 Thu Jul 02 2020 17:13:40 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | closing PeerConnection
2020-07-02 17:13:40 Selecting previously selected buddy...
2020-07-02 17:13:40 Selecting Buddy: 159292201224121D7

Note that it is unable to acquire streams... I don't have any more information from this client, but I will try to detect the User Agent.

vieridipaola commented 4 years ago

Got it:

2020-07-02 17:38:13 Navigator - User Agent: Mozilla/5.0 (Linux; Android 8.0.0; PRA-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36, platform: Linux armv7l, codename: Mozilla, name: Netscape, version: 5.0 (Linux; Android 8.0.0; PRA-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36

InnovateAsterisk commented 4 years ago

The problem will be:

2020-07-02 17:13:39 ... | sip.inviteclientcontext | unable to acquire streams
2020-07-02 17:13:39 Call failed: WebRTC Error

This is when the device cannot open the mic or camera - its more than likely blocked. (unless it somehow not HTTPS).

You appear to be logging: console.log = remoteConsoleLog; but there is a lot of random "info" on that.

Not sure if you can limit that to console.error = remoteConsoleLog; ?

I have not played with this yet.

vieridipaola commented 4 years ago

I'm getting closer... Here's the latest log info I could get out of this specific client:

Navigator - User Agent: Mozilla/5.0 (Linux; Android 8.0.0; PRA-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36, platform: Linux armv7l, codename: Mozilla, name: Netscape, version: 5.0 (Linux; Android 8.0.0; PRA-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36
hasSpeakers: true
hasWebCam: true
hasMicrophone: true
isMicrophoneAlreadyCaptured: false
isWebcamAlreadyCaptured: true

The fact that the webcam is "already captured" is probably the root cause of this client's issues. This is the code I picked up somewhere and used within Browser-Phone at startup (before loading phone.js):

if (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
    // Firefox 38+ seems having support of enumerateDevicesx
    navigator.enumerateDevices = function(callback) {
        navigator.mediaDevices.enumerateDevices().then(callback);
    };
}

var MediaDevices = [];
var isHTTPs = location.protocol === 'https:';
var canEnumerate = false;

if (typeof MediaStreamTrack !== 'undefined' && 'getSources' in MediaStreamTrack) {
    canEnumerate = true;
} else if (navigator.mediaDevices && !!navigator.mediaDevices.enumerateDevices) {
    canEnumerate = true;
}

var hasMicrophone = false;
var hasSpeakers = false;
var hasWebcam = false;

var isMicrophoneAlreadyCaptured = false;
var isWebcamAlreadyCaptured = false;

function checkDeviceSupport(callback) {
    if (!canEnumerate) {
        return;
    }

    if (!navigator.enumerateDevices && window.MediaStreamTrack && window.MediaStreamTrack.getSources) {
        navigator.enumerateDevices = window.MediaStreamTrack.getSources.bind(window.MediaStreamTrack);
    }

    if (!navigator.enumerateDevices && navigator.enumerateDevices) {
        navigator.enumerateDevices = navigator.enumerateDevices.bind(navigator);
    }

    if (!navigator.enumerateDevices) {
        if (callback) {
            callback();
        }
        return;
    }

    MediaDevices = [];
    navigator.enumerateDevices(function(devices) {
        devices.forEach(function(_device) {
            var device = {};
            for (var d in _device) {
                device[d] = _device[d];
            }

            if (device.kind === 'audio') {
                device.kind = 'audioinput';
            }

            if (device.kind === 'video') {
                device.kind = 'videoinput';
            }

            var skip;
            MediaDevices.forEach(function(d) {
                if (d.id === device.id && d.kind === device.kind) {
                    skip = true;
                }
            });

            if (skip) {
                return;
            }

            if (!device.deviceId) {
                device.deviceId = device.id;
            }

            if (!device.id) {
                device.id = device.deviceId;
            }

            if (!device.label) {
                device.label = 'Please invoke getUserMedia once.';
                if (!isHTTPs) {
                    device.label = 'HTTPs is required to get label of this ' + device.kind + ' device.';
                }
            } else {
                if (device.kind === 'videoinput' && !isWebcamAlreadyCaptured) {
                    isWebcamAlreadyCaptured = true;
                }

                if (device.kind === 'audioinput' && !isMicrophoneAlreadyCaptured) {
                    isMicrophoneAlreadyCaptured = true;
                }
            }

            if (device.kind === 'audioinput') {
                hasMicrophone = true;
            }

            if (device.kind === 'audiooutput') {
                hasSpeakers = true;
            }

            if (device.kind === 'videoinput') {
                hasWebcam = true;
            }

            // there is no 'videoouput' in the spec.

            MediaDevices.push(device);
        });

        if (callback) {
            callback();
        }
    });
}

// check for microphone/camera support!
checkDeviceSupport(function() {
    console.log('hasSpeakers: ' + hasSpeakers);
    console.log('hasWebCam: ' + hasWebcam);
    console.log('hasMicrophone: ' + hasMicrophone);
    console.log('isMicrophoneAlreadyCaptured: ' + isMicrophoneAlreadyCaptured);
    console.log('isWebcamAlreadyCaptured: ' + isWebcamAlreadyCaptured);
});

So I'm not sure if the client is failing to make a video call with Browser-Phone because the camera is already used by another app. I don't know if it's possible to know which app is actually using it (via javascript).

PS: to be continued after your holidays... just posting it here in case someone else can help

InnovateAsterisk commented 4 years ago

From what I have seen on my PC (Mac OS), I can capture the mic and camera multiple times, in the same browser, and even with different browsers, although there are some strange things when you get different browsers to capture the same camera. In my setup and demonstration video you will see that I Edge and Chrome together.

This may be a permission issue.

I see this is an Android Tablet... is the user able permanently accept the capture device permission settings - I have seen that on iOS you have to follow this: https://wccftech.com/how-to/access-website-camera-microphone-location-permissions-in-safari-for-ios-13-ipados/ to permanently accept camera/mic use.

vieridipaola commented 4 years ago

Hi,

At times, device enumeration and "getting user media" sounds a bit like black magic to me. After painfully trying to get some info from an elderly user who is not tech-savvy, it seems that the user's microphone was "blocked" (not the webcam, as I first thought). It makes sense because if I "Freedial" with video, it should seamlessly degrade to an audio call. I don't know yet why this was not detected on the console. Anyway, I asked the user to "allow the microphone", but it seems that the same dialing error occurs.

Now the console log sent via ajax calls is as in the following snippet:

2020-07-05 09:30:41 Error enumerating devices
2020-07-05 09:30:44 Open Window: Configure Extension
2020-07-05 09:30:44 Window width is small, consider fullscreen
2020-07-05 09:30:45 Found Device (audioinput):
2020-07-05 09:30:45 Found Device (videoinput):
2020-07-05 09:30:45 Found Device (videoinput):
2020-07-05 09:30:45 Found Device (audiooutput):
2020-07-05 09:30:45 Get User Media
2020-07-05 09:30:45 Alert called with Title: Error, saying: Error getting User Media.
2020-07-05 09:30:46 Alert OK clicked
2020-07-05 09:30:51 Error enumerating devices
2020-07-05 09:30:55 Disabling some features for patient
2020-07-05 09:30:55 Navigator - User Agent: Mozilla/5.0 (Linux; Android 8.0.0; PRA-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36, platform: Linux armv7l, codename: Mozilla, name: Netscape, version: 5.0 (Linux; Android 8.0.0; PRA-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36
2020-07-05 09:30:55 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-05 09:30:55 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-05 09:30:55 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-05 09:30:55 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-05 09:30:55 hasSpeakers: true
2020-07-05 09:30:55 hasWebCam: true
2020-07-05 09:30:55 hasMicrophone: true
2020-07-05 09:30:55 isMicrophoneAlreadyCaptured: false
2020-07-05 09:30:55 isWebcamAlreadyCaptured: true
2020-07-05 09:30:55 Error enumerating devices

The "Error enumerating devices" message comes from the function DetectDevices in phone.js. Get User Media also fails.

So I guess I need to:

1) find out why there's a failure to get user media, but most of all

2) find out why the devices are not enumerated properly

vieridipaola commented 4 years ago

Hi,

I don't know if this extra info can help. I collected a new log from the remote device (with a few custom messages): see below.

Quick questions:

1) why am I seeing "The audio device you used before is no longer available, default settings applied."? What does "used before" mean exactly? I'm not sure how to interpret the code.

2) where does the message "NotAllowedError: Permission denied" come from exactly? If it refers to a media device, which one is it?

I'm pretty sure this issue is related to the microphone being blocked or something, but I can't quite put my finger on it.

2020-07-06 10:43:11 Disabling some features for patient
2020-07-06 10:43:12 Navigator - User Agent: Mozilla/5.0 (Linux; Android 8.0.0; PRA-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36, platform: Linux armv7l, codename: Mozilla, name: Netscape, version: 5.0 (Linux; Android 8.0.0; PRA-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36
2020-07-06 10:43:14 [object InputDeviceInfo]
2020-07-06 10:43:14 Lanaguage Pack already loaded:
2020-07-06 10:43:14 Clearing Buddies...
2020-07-06 10:43:14 Adding Buddies...
2020-07-06 10:43:14 Updating Buddy List...
2020-07-06 10:43:14 Selecting previously selected buddy...
2020-07-06 10:43:14 Creating User Agent...
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | configuration parameters after validation:
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ viaHost: "192.0.2.2"
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ uri: sip:patient@sip.domain.org
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ custom: {}
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ displayName: "Patient"
2020-07-06 10:43:15 Total Buddies: 3
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ password: NOT SHOWN
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ registerExpires: 300
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ register: false
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ registrarServer: sip:sip.domain.org
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ transportConstructor: i
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ transportOptions: {"wsServers":"wss://sip.domain.org:8090/ws","traceSip":false,"connectionTimeout":15,"maxReconnectionAttempts":99,"reconnectionTimeout":15}
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ userAgentString: "browserphone"
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ noAnswerTimeout: 60000
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackViaTcp: false
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackIpInContact: true
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackWssInTransport: true
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackAllowUnregisteredOptionTags: false
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ sessionDescriptionHandlerFactoryOptions: {"constraints":{},"peerConnectionOptions":{}}
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ contactName: "6hoj831l"
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ contactTransport: "wss"
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ forceRport: false
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ autostart: false
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ autostop: true
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ rel100: "none"
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ dtmfType: "info"
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ replaces: "none"
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ sessionDescriptionHandlerFactory: function(e,t){var r=e.ua.getLogger("sip.invitecontext.sessionDescriptionHandler",e.id),n=new(i(31))(e,t);return new s(r,n,t)}
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ authenticationFactory: undefined
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ allowLegacyNotifications: false
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ allowOutOfDialogRefers: false
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ authorizationUser: "patient"
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ instanceId: "e56af795-a2db-494e-a17d-c08352170322"
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ sipjsId: "cppg0"
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hostportParams: "sip.domain.org"
2020-07-06 10:43:15 Creating User Agent... Done
2020-07-06 10:43:15 Connecting to Web Socket...
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.ua | user requested startup...
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.transport | configuration parameters after validation:
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.transport | ▒ wsServers: [{"ws_uri":"wss://sip.domain.org:8090/ws","sip_uri":"<sip:sip.domain.org:8090;transport=ws;lr>","weight":0,"isError":false,"scheme":"WSS"}]
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.transport | ▒ connectionTimeout: 15
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.transport | ▒ maxReconnectionAttempts: 99
2020-07-06 10:43:15 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.transport | ▒ reconnectionTimeout: 15
2020-07-06 10:43:16 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.transport | ▒ keepAliveInterval: 0
2020-07-06 10:43:16 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.transport | ▒ keepAliveDebounce: 10
2020-07-06 10:43:16 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.transport | ▒ traceSip: false
2020-07-06 10:43:16 Transport Object Created
2020-07-06 10:43:16 Mon Jul 06 2020 10:43:15 GMT+0200 (Central European Summer Time) | sip.transport | connecting to WebSocket wss://sip.domain.org:8090/ws
2020-07-06 10:43:16 Connected to Web Socket!
2020-07-06 10:43:16 Sending Registration...
2020-07-06 10:43:16 Mon Jul 06 2020 10:43:16 GMT+0200 (Central European Summer Time) | sip.transport | WebSocket wss://sip.domain.org:8090/ws connected
2020-07-06 10:43:16 Registered!
2020-07-06 10:43:16 Subscribe to voicemail Messages...
2020-07-06 10:43:16 Starting Subscribe of all (3) Extension Buddies...
2020-07-06 10:43:16 SUBSCRIBE: 900@sip.domain.org
2020-07-06 10:43:16 SUBSCRIBE: doctor@sip.domain.org
2020-07-06 10:43:16 SUBSCRIBE: 900@sip.domain.org
2020-07-06 10:43:16 Mon Jul 06 2020 10:43:17 GMT+0200 (Central European Summer Time) | sip.dialog | new UAS dialog created with status CONFIRMED
2020-07-06 10:43:16 Setting Presence for 15929242524482557 to Unavailable
2020-07-06 10:43:18 User Agent ready
2020-07-06 10:43:18 Disabling some features for patient
2020-07-06 10:43:18 Patient auto-dials queue
2020-07-06 10:43:18 Selecting Line : 1
2020-07-06 10:43:18 The audio device you used before is no longer available, default settings applied.
2020-07-06 10:43:18 INVITE (audio): 900@sip.domain.org
2020-07-06 10:43:18 [Provisioning] Properly exiting
2020-07-06 10:43:18 Mon Jul 06 2020 10:43:19 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | SessionDescriptionHandlerOptions: {"constraints":{},"peerConnectionOptions":{}}
2020-07-06 10:43:18 Mon Jul 06 2020 10:43:19 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | initPeerConnection
2020-07-06 10:43:18 Mon Jul 06 2020 10:43:19 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | New peer connection created
2020-07-06 10:43:18 Mon Jul 06 2020 10:43:19 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | acquiring local media
2020-07-06 10:43:18 Mon Jul 06 2020 10:43:19 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | unable to acquire streams
2020-07-06 10:43:18 NotAllowedError: Permission denied
2020-07-06 10:43:18 Mon Jul 06 2020 10:43:19 GMT+0200 (Central European Summer Time) | sip.inviteclientcontext | unable to acquire streams
2020-07-06 10:43:18 NotAllowedError: Permission denied
2020-07-06 10:43:18 Call failed: WebRTC Error
2020-07-06 10:43:18 New CDR
2020-07-06 10:43:18 Last Activity is now: 2020-07-06 08:43:19 UTC
2020-07-06 10:43:18 Mon Jul 06 2020 10:43:19 GMT+0200 (Central European Summer Time) | sip.inviteclientcontext | closing INVITE session cppg0sqhjn9op2nvjeura9a60imgro
2020-07-06 10:43:18 Mon Jul 06 2020 10:43:19 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | closing PeerConnection
2020-07-06 10:43:18 Session terminated
2020-07-06 10:43:19 Closing Line: 1
2020-07-06 10:43:19 Selecting previously selected buddy...
2020-07-06 10:43:22 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:43:22 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:43:22 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:43:22 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:43:22 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:43:24 [object InputDeviceInfo]
2020-07-06 10:43:32 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:43:32 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:43:32 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:43:32 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:43:32 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:43:34 [object InputDeviceInfo]
2020-07-06 10:43:37 Unsubscribing...
2020-07-06 10:43:37 Unsubscribing 3 subscriptions...
2020-07-06 10:43:37 Disconnecting...
2020-07-06 10:43:37 Unregistered, bye!
2020-07-06 10:43:42 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:43:42 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:43:42 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:43:42 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:43:42 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:43:42 Open Window: Configure Extension
2020-07-06 10:43:42 Window width is small, consider fullscreen
2020-07-06 10:43:42 Found Device (audioinput):
2020-07-06 10:43:42 Found Device (videoinput):
2020-07-06 10:43:42 Found Device (videoinput):
2020-07-06 10:43:42 Found Device (audiooutput):
2020-07-06 10:43:42 Get User Media
2020-07-06 10:43:42 NotAllowedError: Permission denied
2020-07-06 10:43:42 Error - Error getting User Media.
2020-07-06 10:43:42 Alert called with Title: Error, saying: Error getting User Media.
2020-07-06 10:43:44 [object InputDeviceInfo]
2020-07-06 10:43:44 Alert OK clicked
2020-07-06 10:43:52 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:43:52 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:43:52 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:43:52 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:43:52 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:43:53 Window Button 1 clicked
2020-07-06 10:43:53 Alert called with Title: Reload Required, saying: In order to apply these settings, the page must reload, OK?
2020-07-06 10:43:54 [object InputDeviceInfo]
2020-07-06 10:43:55 Alert OK clicked
2020-07-06 10:43:55 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | user requested closure...
2020-07-06 10:43:55 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | closing registerContext
2020-07-06 10:43:55 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | unsubscribing from subscription cppg0hf9ifvai839aegacd55mbkq4r31cbd3df-3646-4d35-b2ff-9c2360fcdac0
2020-07-06 10:43:56 Disabling some features for patient
2020-07-06 10:43:56 Navigator - User Agent: Mozilla/5.0 (Linux; Android 8.0.0; PRA-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36, platform: Linux armv7l, codename: Mozilla, name: Netscape, version: 5.0 (Linux; Android 8.0.0; PRA-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36
2020-07-06 10:43:56 [object InputDeviceInfo]
2020-07-06 10:43:56 Lanaguage Pack already loaded:
2020-07-06 10:43:56 Clearing Buddies...
2020-07-06 10:43:56 Adding Buddies...
2020-07-06 10:43:56 Total Buddies: 3
2020-07-06 10:43:56 Updating Buddy List...
2020-07-06 10:43:56 Selecting previously selected buddy...
2020-07-06 10:43:56 Creating User Agent...
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | configuration parameters after validation:
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | ▒ viaHost: "192.0.2.172"
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | ▒ uri: sip:patient@sip.domain.org
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | ▒ custom: {}
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | ▒ displayName: "Patient"
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | ▒ password: NOT SHOWN
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | ▒ registerExpires: 300
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | ▒ register: false
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | ▒ registrarServer: sip:sip.domain.org
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | ▒ transportConstructor: i
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | ▒ transportOptions: {"wsServers":"wss://sip.domain.org:8090/ws","traceSip":false,"connectionTimeout":15,"maxReconnectionAttempts":99,"reconnectionTimeout":15}
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | ▒ userAgentString: "browserphone"
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | ▒ noAnswerTimeout: 60000
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackViaTcp: false
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:56 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackIpInContact: true
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackWssInTransport: true
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackAllowUnregisteredOptionTags: false
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ sessionDescriptionHandlerFactoryOptions: {"constraints":{},"peerConnectionOptions":{}}
2020-07-06 10:43:56 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ contactName: "2f1afbke"
2020-07-06 10:43:57 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ contactTransport: "wss"
2020-07-06 10:43:57 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ forceRport: false
2020-07-06 10:43:57 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ autostart: false
2020-07-06 10:43:57 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ autostop: true
2020-07-06 10:43:57 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ rel100: "none"
2020-07-06 10:43:57 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ dtmfType: "info"
2020-07-06 10:43:57 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ replaces: "none"
2020-07-06 10:43:57 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ sessionDescriptionHandlerFactory: function(e,t){var r=e.ua.getLogger("sip.invitecontext.sessionDescriptionHandler",e.id),n=new(i(31))(e,t);return new s(r,n,t)}
2020-07-06 10:43:57 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ authenticationFactory: undefined
2020-07-06 10:43:57 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ allowLegacyNotifications: false
2020-07-06 10:43:57 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ allowOutOfDialogRefers: false
2020-07-06 10:43:57 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ authorizationUser: "patient"
2020-07-06 10:43:57 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ instanceId: "30574457-75cc-48c1-bf0e-edd18e259ce0"
2020-07-06 10:43:57 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ sipjsId: "3nls7"
2020-07-06 10:43:57 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hostportParams: "sip.domain.org"
2020-07-06 10:43:57 Mon Jul 06 2020 10:43:57 GMT+0200 (Central European Summer Time) | sip.ua | user requested closure...
2020-07-06 10:44:23 Disabling some features for patient
2020-07-06 10:44:23 Navigator - User Agent: Mozilla/5.0 (Linux; Android 8.0.0; PRA-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36, platform: Linux armv7l, codename: Mozilla, name: Netscape, version: 5.0 (Linux; Android 8.0.0; PRA-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36
2020-07-06 10:44:23 [object InputDeviceInfo]
2020-07-06 10:44:23 Lanaguage Pack already loaded:
2020-07-06 10:44:23 Clearing Buddies...
2020-07-06 10:44:23 Adding Buddies...
2020-07-06 10:44:23 Total Buddies: 3
2020-07-06 10:44:23 Updating Buddy List...
2020-07-06 10:44:23 Selecting previously selected buddy...
2020-07-06 10:44:23 Creating User Agent...
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:23 GMT+0200 (Central European Summer Time) | sip.ua | configuration parameters after validation:
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:23 GMT+0200 (Central European Summer Time) | sip.ua | ▒ viaHost: "192.0.2.160"
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:23 GMT+0200 (Central European Summer Time) | sip.ua | ▒ uri: sip:patient@sip.domain.org
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:23 GMT+0200 (Central European Summer Time) | sip.ua | ▒ custom: {}
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:23 GMT+0200 (Central European Summer Time) | sip.ua | ▒ displayName: "Patient"
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:23 GMT+0200 (Central European Summer Time) | sip.ua | ▒ password: NOT SHOWN
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ registerExpires: 300
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ register: false
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ registrarServer: sip:sip.domain.org
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ transportConstructor: i
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ transportOptions: {"wsServers":"wss://sip.domain.org:8090/ws","traceSip":false,"connectionTimeout":15,"maxReconnectionAttempts":99,"reconnectionTimeout":15}
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ userAgentString: "browserphone"
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ noAnswerTimeout: 60000
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackViaTcp: false
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackIpInContact: true
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackWssInTransport: true
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackAllowUnregisteredOptionTags: false
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ sessionDescriptionHandlerFactoryOptions: {"constraints":{},"peerConnectionOptions":{}}
2020-07-06 10:44:23 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ contactName: "7pllhj2o"
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ contactTransport: "wss"
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ forceRport: false
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ autostart: false
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ autostop: true
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ rel100: "none"
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ dtmfType: "info"
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ replaces: "none"
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ sessionDescriptionHandlerFactory: function(e,t){var r=e.ua.getLogger("sip.invitecontext.sessionDescriptionHandler",e.id),n=new(i(31))(e,t);return new s(r,n,t)}
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ authenticationFactory: undefined
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ allowLegacyNotifications: false
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ allowOutOfDialogRefers: false
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ authorizationUser: "patient"
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ instanceId: "b35da62f-20a8-4326-8c68-0049690fb1cd"
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ sipjsId: "64a41"
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hostportParams: "sip.domain.org"
2020-07-06 10:44:24 Creating User Agent... Done
2020-07-06 10:44:24 Connecting to Web Socket...
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.ua | user requested startup...
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.transport | configuration parameters after validation:
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.transport | ▒ wsServers: [{"ws_uri":"wss://sip.domain.org:8090/ws","sip_uri":"<sip:sip.domain.org:8090;transport=ws;lr>","weight":0,"isError":false,"scheme":"WSS"}]
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.transport | ▒ connectionTimeout: 15
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.transport | ▒ maxReconnectionAttempts: 99
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.transport | ▒ reconnectionTimeout: 15
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.transport | ▒ keepAliveInterval: 0
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.transport | ▒ keepAliveDebounce: 10
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.transport | ▒ traceSip: false
2020-07-06 10:44:24 Transport Object Created
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.transport | connecting to WebSocket wss://sip.domain.org:8090/ws
2020-07-06 10:44:24 Connected to Web Socket!
2020-07-06 10:44:24 Sending Registration...
2020-07-06 10:44:24 Registered!
2020-07-06 10:44:24 Mon Jul 06 2020 10:44:24 GMT+0200 (Central European Summer Time) | sip.transport | WebSocket wss://sip.domain.org:8090/ws connected
2020-07-06 10:44:24 Subscribe to voicemail Messages...
2020-07-06 10:44:24 Starting Subscribe of all (3) Extension Buddies...
2020-07-06 10:44:24 SUBSCRIBE: 900@sip.domain.org
2020-07-06 10:44:24 SUBSCRIBE: doctor@sip.domain.org
2020-07-06 10:44:24 SUBSCRIBE: 900@sip.domain.org
2020-07-06 10:44:25 Mon Jul 06 2020 10:44:25 GMT+0200 (Central European Summer Time) | sip.dialog | new UAS dialog created with status CONFIRMED
2020-07-06 10:44:25 Setting Presence for 15929242524482557 to Unavailable
2020-07-06 10:44:27 User Agent ready
2020-07-06 10:44:27 Disabling some features for patient
2020-07-06 10:44:27 Patient auto-dials queue
2020-07-06 10:44:27 Selecting Line : 1
2020-07-06 10:44:27 INVITE (audio): 900@sip.domain.org
2020-07-06 10:44:27 The audio device you used before is no longer available, default settings applied.
2020-07-06 10:44:27 [Provisioning] Properly exiting
2020-07-06 10:44:27 Mon Jul 06 2020 10:44:27 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | SessionDescriptionHandlerOptions: {"constraints":{},"peerConnectionOptions":{}}
2020-07-06 10:44:27 Mon Jul 06 2020 10:44:27 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | initPeerConnection
2020-07-06 10:44:27 Mon Jul 06 2020 10:44:27 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | New peer connection created
2020-07-06 10:44:27 Mon Jul 06 2020 10:44:27 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | acquiring local media
2020-07-06 10:44:27 Mon Jul 06 2020 10:44:27 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | unable to acquire streams
2020-07-06 10:44:27 NotAllowedError: Permission denied
2020-07-06 10:44:27 Mon Jul 06 2020 10:44:27 GMT+0200 (Central European Summer Time) | sip.inviteclientcontext | unable to acquire streams
2020-07-06 10:44:27 NotAllowedError: Permission denied
2020-07-06 10:44:27 New CDR
2020-07-06 10:44:27 Call failed: WebRTC Error
2020-07-06 10:44:27 Last Activity is now: 2020-07-06 08:44:27 UTC
2020-07-06 10:44:27 Mon Jul 06 2020 10:44:28 GMT+0200 (Central European Summer Time) | sip.inviteclientcontext | closing INVITE session 64a41hd60q08c4briu6rjl4a94dn1u
2020-07-06 10:44:27 Mon Jul 06 2020 10:44:28 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | closing PeerConnection
2020-07-06 10:44:27 Session terminated
2020-07-06 10:44:28 Closing Line: 1
2020-07-06 10:44:28 Selecting previously selected buddy...
2020-07-06 10:44:33 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:44:33 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:44:33 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:44:33 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:44:33 [object InputDeviceInfo]
2020-07-06 10:44:33 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:44:43 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:44:43 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:44:43 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:44:43 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:44:43 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:44:43 [object InputDeviceInfo]
2020-07-06 10:44:53 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:44:53 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:44:53 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:44:53 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:44:53 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:44:53 [object InputDeviceInfo]
2020-07-06 10:45:00 Unsubscribing 3 subscriptions...
2020-07-06 10:45:00 Unsubscribing...
2020-07-06 10:45:00 Disconnecting...
2020-07-06 10:45:00 Unregistered, bye!
2020-07-06 10:45:03 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:45:03 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:45:03 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:45:03 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:45:03 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:45:03 [object InputDeviceInfo]
2020-07-06 10:45:13 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:45:13 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:45:13 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:45:13 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:45:13 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:45:13 [object InputDeviceInfo]
2020-07-06 10:47:02 Disabling some features for patient
2020-07-06 10:47:02 Navigator - User Agent: Mozilla/5.0 (Linux; Android 8.0.0; PRA-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36, platform: Linux armv7l, codename: Mozilla, name: Netscape, version: 5.0 (Linux; Android 8.0.0; PRA-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36
2020-07-06 10:47:02 [object InputDeviceInfo]
2020-07-06 10:47:02 Lanaguage Pack already loaded:
2020-07-06 10:47:02 Clearing Buddies...
2020-07-06 10:47:02 Adding Buddies...
2020-07-06 10:47:02 Total Buddies: 3
2020-07-06 10:47:02 Updating Buddy List...
2020-07-06 10:47:03 Selecting previously selected buddy...
2020-07-06 10:47:03 Creating User Agent...
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | configuration parameters after validation:
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ viaHost: "192.0.2.155"
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ uri: sip:patient@sip.domain.org
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ custom: {}
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ displayName: "Patient"
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ password: NOT SHOWN
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ registerExpires: 300
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ register: false
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ registrarServer: sip:sip.domain.org
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ transportConstructor: i
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ transportOptions: {"wsServers":"wss://sip.domain.org:8090/ws","traceSip":false,"connectionTimeout":15,"maxReconnectionAttempts":99,"reconnectionTimeout":15}
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ userAgentString: "browserphone"
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ noAnswerTimeout: 60000
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackViaTcp: false
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackIpInContact: true
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackWssInTransport: true
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackAllowUnregisteredOptionTags: false
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ sessionDescriptionHandlerFactoryOptions: {"constraints":{},"peerConnectionOptions":{}}
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ contactName: "8mshvvqa"
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ contactTransport: "wss"
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ forceRport: false
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ autostart: false
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ autostop: true
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ rel100: "none"
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ dtmfType: "info"
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ replaces: "none"
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ sessionDescriptionHandlerFactory: function(e,t){var r=e.ua.getLogger("sip.invitecontext.sessionDescriptionHandler",e.id),n=new(i(31))(e,t);return new s(r,n,t)}
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ authenticationFactory: undefined
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ allowLegacyNotifications: false
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ allowOutOfDialogRefers: false
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ authorizationUser: "patient"
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ instanceId: "645374b3-d998-4654-bc1b-b31f0ebd74f4"
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ sipjsId: "nrro4"
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hostportParams: "sip.domain.org"
2020-07-06 10:47:03 Creating User Agent... Done
2020-07-06 10:47:03 Connecting to Web Socket...
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.ua | user requested startup...
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.transport | configuration parameters after validation:
2020-07-06 10:47:03 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.transport | ▒ wsServers: [{"ws_uri":"wss://sip.domain.org:8090/ws","sip_uri":"<sip:sip.domain.org:8090;transport=ws;lr>","weight":0,"isError":false,"scheme":"WSS"}]
2020-07-06 10:47:04 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.transport | ▒ connectionTimeout: 15
2020-07-06 10:47:04 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.transport | ▒ maxReconnectionAttempts: 99
2020-07-06 10:47:04 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.transport | ▒ reconnectionTimeout: 15
2020-07-06 10:47:04 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.transport | ▒ keepAliveInterval: 0
2020-07-06 10:47:04 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.transport | ▒ keepAliveDebounce: 10
2020-07-06 10:47:04 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.transport | ▒ traceSip: false
2020-07-06 10:47:04 Transport Object Created
2020-07-06 10:47:04 Mon Jul 06 2020 10:47:03 GMT+0200 (Central European Summer Time) | sip.transport | connecting to WebSocket wss://sip.domain.org:8090/ws
2020-07-06 10:47:04 Connected to Web Socket!
2020-07-06 10:47:04 Sending Registration...
2020-07-06 10:47:04 Mon Jul 06 2020 10:47:04 GMT+0200 (Central European Summer Time) | sip.transport | WebSocket wss://sip.domain.org:8090/ws connected
2020-07-06 10:47:04 Registered!
2020-07-06 10:47:04 Subscribe to voicemail Messages...
2020-07-06 10:47:04 Starting Subscribe of all (3) Extension Buddies...
2020-07-06 10:47:04 SUBSCRIBE: 900@sip.domain.org
2020-07-06 10:47:04 SUBSCRIBE: doctor@sip.domain.org
2020-07-06 10:47:04 SUBSCRIBE: 900@sip.domain.org
2020-07-06 10:47:04 Mon Jul 06 2020 10:47:05 GMT+0200 (Central European Summer Time) | sip.dialog | new UAS dialog created with status CONFIRMED
2020-07-06 10:47:04 Setting Presence for 15929242524482557 to Unavailable
2020-07-06 10:47:06 User Agent ready
2020-07-06 10:47:06 Disabling some features for patient
2020-07-06 10:47:06 Patient auto-dials queue
2020-07-06 10:47:06 Selecting Line : 1
2020-07-06 10:47:06 INVITE (audio): 900@sip.domain.org
2020-07-06 10:47:06 [Provisioning] Properly exiting
2020-07-06 10:47:06 Mon Jul 06 2020 10:47:07 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | SessionDescriptionHandlerOptions: {"constraints":{},"peerConnectionOptions":{}}
2020-07-06 10:47:06 Mon Jul 06 2020 10:47:07 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | initPeerConnection
2020-07-06 10:47:06 Mon Jul 06 2020 10:47:07 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | New peer connection created
2020-07-06 10:47:07 Mon Jul 06 2020 10:47:07 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | acquiring local media
2020-07-06 10:47:07 Mon Jul 06 2020 10:47:07 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | unable to acquire streams
2020-07-06 10:47:07 NotAllowedError: Permission denied
2020-07-06 10:47:07 Mon Jul 06 2020 10:47:07 GMT+0200 (Central European Summer Time) | sip.inviteclientcontext | unable to acquire streams
2020-07-06 10:47:07 NotAllowedError: Permission denied
2020-07-06 10:47:07 Call failed: WebRTC Error
2020-07-06 10:47:07 Last Activity is now: 2020-07-06 08:47:07 UTC
2020-07-06 10:47:07 New CDR
2020-07-06 10:47:07 Mon Jul 06 2020 10:47:07 GMT+0200 (Central European Summer Time) | sip.inviteclientcontext | closing INVITE session nrro4uh4esh0e7rv2fia05gkjffsvh
2020-07-06 10:47:07 Mon Jul 06 2020 10:47:07 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | closing PeerConnection
2020-07-06 10:47:07 Session terminated
2020-07-06 10:47:08 Closing Line: 1
2020-07-06 10:47:08 Selecting previously selected buddy...
2020-07-06 10:47:12 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:47:12 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:47:12 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:47:12 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:47:12 [object InputDeviceInfo]
2020-07-06 10:47:12 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:47:26 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:47:26 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:47:26 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:47:26 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:47:26 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:47:26 [object InputDeviceInfo]
2020-07-06 10:47:35 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:47:35 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:47:35 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:47:35 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:47:35 [object InputDeviceInfo]
2020-07-06 10:47:35 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:47:45 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:47:45 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:47:45 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:47:45 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:47:45 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:47:45 [object InputDeviceInfo]
2020-07-06 10:47:55 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:47:55 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:47:55 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:47:55 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:47:55 [object InputDeviceInfo]
2020-07-06 10:47:55 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:48:58 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:48:58 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:48:58 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:48:58 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:48:59 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:48:59 [object InputDeviceInfo]
2020-07-06 10:50:57 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:50:57 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:50:57 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:50:57 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:50:57 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:50:57 [object InputDeviceInfo]
2020-07-06 10:51:06 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:51:06 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:51:06 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:51:06 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
2020-07-06 10:51:06 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:51:06 [object InputDeviceInfo]
2020-07-06 10:54:29 Disabling some features for patient
2020-07-06 10:54:29 Navigator - User Agent: Mozilla/5.0 (Linux; Android 8.0.0; PRA-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36, platform: Linux armv7l, codename: Mozilla, name: Netscape, version: 5.0 (Linux; Android 8.0.0; PRA-LX1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Mobile Safari/537.36
2020-07-06 10:54:29 [object InputDeviceInfo]
2020-07-06 10:54:29 Lanaguage Pack already loaded:
2020-07-06 10:54:29 Clearing Buddies...
2020-07-06 10:54:29 Adding Buddies...
2020-07-06 10:54:29 Total Buddies: 3
2020-07-06 10:54:29 Updating Buddy List...
2020-07-06 10:54:29 Selecting previously selected buddy...
2020-07-06 10:54:29 Creating User Agent...
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | configuration parameters after validation:
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ viaHost: "192.0.2.37"
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ uri: sip:patient@sip.domain.org
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ custom: {}
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ displayName: "Patient"
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ password: NOT SHOWN
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ registerExpires: 300
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ register: false
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ registrarServer: sip:sip.domain.org
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ transportConstructor: i
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ transportOptions: {"wsServers":"wss://sip.domain.org:8090/ws","traceSip":false,"connectionTimeout":15,"maxReconnectionAttempts":99,"reconnectionTimeout":15}
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ userAgentString: "browserphone"
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ noAnswerTimeout: 60000
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackViaTcp: false
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackIpInContact: true
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackWssInTransport: true
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hackAllowUnregisteredOptionTags: false
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ sessionDescriptionHandlerFactoryOptions: {"constraints":{},"peerConnectionOptions":{}}
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ contactName: "gfm4jb4b"
2020-07-06 10:54:29 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ contactTransport: "wss"
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ forceRport: false
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ autostart: false
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ autostop: true
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ rel100: "none"
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ dtmfType: "info"
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ replaces: "none"
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ sessionDescriptionHandlerFactory: function(e,t){var r=e.ua.getLogger("sip.invitecontext.sessionDescriptionHandler",e.id),n=new(i(31))(e,t);return new s(r,n,t)}
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ authenticationFactory: undefined
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ allowLegacyNotifications: false
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ allowOutOfDialogRefers: false
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ authorizationUser: "patient"
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ instanceId: "65a25104-7c13-4478-be40-fbf6a5cb0ddf"
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ sipjsId: "9jia7"
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | ▒ hostportParams: "sip.domain.org"
2020-07-06 10:54:30 Creating User Agent... Done
2020-07-06 10:54:30 Connecting to Web Socket...
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.ua | user requested startup...
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.transport | configuration parameters after validation:
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.transport | ▒ wsServers: [{"ws_uri":"wss://sip.domain.org:8090/ws","sip_uri":"<sip:sip.domain.org:8090;transport=ws;lr>","weight":0,"isError":false,"scheme":"WSS"}]
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.transport | ▒ connectionTimeout: 15
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.transport | ▒ maxReconnectionAttempts: 99
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.transport | ▒ reconnectionTimeout: 15
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.transport | ▒ keepAliveInterval: 0
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.transport | ▒ keepAliveDebounce: 10
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.transport | ▒ traceSip: false
2020-07-06 10:54:30 Transport Object Created
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.transport | connecting to WebSocket wss://sip.domain.org:8090/ws
2020-07-06 10:54:30 Connected to Web Socket!
2020-07-06 10:54:30 Sending Registration...
2020-07-06 10:54:30 Mon Jul 06 2020 10:54:30 GMT+0200 (Central European Summer Time) | sip.transport | WebSocket wss://sip.domain.org:8090/ws connected
2020-07-06 10:54:30 Registered!
2020-07-06 10:54:30 Subscribe to voicemail Messages...
2020-07-06 10:54:30 Starting Subscribe of all (3) Extension Buddies...
2020-07-06 10:54:30 SUBSCRIBE: 900@sip.domain.org
2020-07-06 10:54:30 SUBSCRIBE: doctor@sip.domain.org
2020-07-06 10:54:30 SUBSCRIBE: 900@sip.domain.org
2020-07-06 10:54:31 Mon Jul 06 2020 10:54:31 GMT+0200 (Central European Summer Time) | sip.dialog | new UAS dialog created with status CONFIRMED
2020-07-06 10:54:31 Setting Presence for 15929242524482557 to Unavailable
2020-07-06 10:54:33 User Agent ready
2020-07-06 10:54:33 Disabling some features for patient
2020-07-06 10:54:33 Patient auto-dials queue
2020-07-06 10:54:33 Selecting Line : 1
2020-07-06 10:54:33 INVITE (audio): 900@sip.domain.org
2020-07-06 10:54:33 [Provisioning] Properly exiting
2020-07-06 10:54:33 Mon Jul 06 2020 10:54:34 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | SessionDescriptionHandlerOptions: {"constraints":{},"peerConnectionOptions":{}}
2020-07-06 10:54:33 Mon Jul 06 2020 10:54:34 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | initPeerConnection
2020-07-06 10:54:33 Mon Jul 06 2020 10:54:34 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | New peer connection created
2020-07-06 10:54:33 Mon Jul 06 2020 10:54:34 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | acquiring local media
2020-07-06 10:54:33 Mon Jul 06 2020 10:54:34 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | unable to acquire streams
2020-07-06 10:54:33 NotAllowedError: Permission denied
2020-07-06 10:54:33 Mon Jul 06 2020 10:54:34 GMT+0200 (Central European Summer Time) | sip.inviteclientcontext | unable to acquire streams
2020-07-06 10:54:33 NotAllowedError: Permission denied
2020-07-06 10:54:33 Call failed: WebRTC Error
2020-07-06 10:54:33 New CDR
2020-07-06 10:54:33 Last Activity is now: 2020-07-06 08:54:34 UTC
2020-07-06 10:54:33 Mon Jul 06 2020 10:54:34 GMT+0200 (Central European Summer Time) | sip.inviteclientcontext | closing INVITE session 9jia701mjgqn6o7f95988s0g1cilbg
2020-07-06 10:54:33 Mon Jul 06 2020 10:54:34 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | closing PeerConnection
2020-07-06 10:54:33 Session terminated
2020-07-06 10:54:34 Closing Line: 1
2020-07-06 10:54:34 Selecting previously selected buddy...
2020-07-06 10:54:39 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
2020-07-06 10:54:39 MediaDevices: videoinput: camera2 1, facing front id = f00971400c85f0526ddbc566f38894d1fd9816f98d4d328a2b1a1a2b66e82b4d
2020-07-06 10:54:39 MediaDevices: videoinput: camera2 0, facing back id = ebb3bf6f77c19ec072c04b1a23495be052bb41b1f0360ec544816df47dd84412
2020-07-06 10:54:39 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: true
2020-07-06 10:54:39 [object InputDeviceInfo]
2020-07-06 10:54:39 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
InnovateAsterisk commented 4 years ago

Take a look at this page: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia especially in the security section. Are you using this in an IFRAME?

It's clear you have a permission issue, but it unclear why.

vieridipaola commented 4 years ago

In this particular scenario, the client wasn't using iframe. It received an HTTP redirect and loaded basically the same html as in github. I'm not sure it will change anything, but I changed the index.html to PHP and added an explicit Feaure-Policy for both microphone ; and camera ;. We'll see how that goes... Thanks.

In the meantime, I've noticed another issue with two other clients: failure to register an extension in Asterisk.

# grep -i registration webphoneRemote.log
<CLIENT_IP_ADDR> 2020-07-07 14:40:24 Sending Registration...
<CLIENT_IP_ADDR> 2020-07-07 14:40:56 Registration Failed: null
<CLIENT_IP_ADDR> 2020-07-07 14:41:59 Sending Registration...
<CLIENT_IP_ADDR> 2020-07-07 14:42:32 Registration Failed: null
<CLIENT_IP_ADDR> 2020-07-07 14:42:53 Sending Registration...
<CLIENT_IP_ADDR> 2020-07-07 14:43:25 Registration Failed: null
<CLIENT_IP_ADDR> 2020-07-07 14:44:18 Sending Registration...
<CLIENT_IP_ADDR> 2020-07-07 14:44:49 Registration Failed: null

I'm pretty sure the registration credentials are OK. Also, the client waits around 30 seconds before reporting the failure... Websocket connection seems to be OK. Here's the log context:

<CLIENT_IP_ADDR> 2020-07-07 14:40:24 Tue Jul 07 2020 14:40:23 GMT+0200 (hora de verano de Europa central) | sip.transport | connecting to WebSocket wss://sip.domain.org:8090/ws
<CLIENT_IP_ADDR> 2020-07-07 14:40:24 Connected to Web Socket!
<CLIENT_IP_ADDR> 2020-07-07 14:40:24 Sending Registration...
<CLIENT_IP_ADDR> 2020-07-07 14:40:24 Tue Jul 07 2020 14:40:23 GMT+0200 (hora de verano de Europa central) | sip.transport | WebSocket wss://sip.domain.org:8090/ws connected
<CLIENT_IP_ADDR> 2020-07-07 14:40:25 [object InputDeviceInfo],[object InputDeviceInfo],[object InputDeviceInfo]
<CLIENT_IP_ADDR> 2020-07-07 14:40:34 MediaDevices: audioinput: Please invoke getUserMedia once. id = default
<CLIENT_IP_ADDR> 2020-07-07 14:40:34 MediaDevices: audioinput: Please invoke getUserMedia once. id = 87b7c6697672c7196fbe8bbd352ac6cc68b456a7da9a1328e6cc359a928efd1b
<CLIENT_IP_ADDR> 2020-07-07 14:40:34 MediaDevices: videoinput: Please invoke getUserMedia once. id = 2d44da6c1bb269b43034d4ce50d1f643c1682efa600de801a6bfe5db5af0c917
<CLIENT_IP_ADDR> 2020-07-07 14:40:34 MediaDevices: audioinput: Please invoke getUserMedia once. id = d5350c1885f0f4fdff1a3679d1e2a7b268bff816a82db5e37034dcfe1d2f4788
<CLIENT_IP_ADDR> 2020-07-07 14:40:34 MediaDevices: videoinput: Please invoke getUserMedia once. id = 87b7c6697672c7196fbe8bbd352ac6cc68b456a7da9a1328e6cc359a928efd1b
<CLIENT_IP_ADDR> 2020-07-07 14:40:34 MediaDevices: audiooutput: Please invoke getUserMedia once. id = default
<CLIENT_IP_ADDR> 2020-07-07 14:40:34 hasSpeakers: true, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: false, isWebcamAlreadyCaptured: false
<CLIENT_IP_ADDR> 2020-07-07 14:40:56 Registration Failed: null

Asterisk seems OK and the only thing I see is:

   == WebSocket connection from '<CLIENT_IP_ADDR>:<CLIENT_PORT>' for protocol 'sip' accepted using version '13'
[<DATE>] NOTICE[15621]: res_pjsip/pjsip_transport_management.c:170 idle_sched_cb: Shutting down transport 'WSS to <CLIENT_IP_ADDR>:<CLIENT_PORT>' since no request was received in 32 seconds

However, this must be a bug in Asterisk, or some kind of misconfiguration on my behalf because if I restart the Asterisk service then the "registration" issue is solved. I use pjsip wizard and template to configure the client0s extension, to which I also specify aor/max_contacts = 200 since I could be having more than one client browser registering with that extension.

However, I finally managed to reproduce a media device issue on my desktop with Chrome (no issues with Firefox!). Of course, I need to solve the Chrome issue as it's the #1 browser in the smartphone market. With Chrome, once registered I can't call a local extension, and I see this in the log:

<MY_CLIENT_IP_ADDR> 2020-07-07 16:11:57 Tue Jul 07 2020 16:11:57 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | New peer connection created
<MY_CLIENT_IP_ADDR> 2020-07-07 16:11:57 Tue Jul 07 2020 16:11:57 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | unable to acquire streams
<MY_CLIENT_IP_ADDR> 2020-07-07 16:11:57 NotReadableError: Could not start audio source
<MY_CLIENT_IP_ADDR> 2020-07-07 16:11:57 Tue Jul 07 2020 16:11:57 GMT+0200 (Central European Summer Time) | sip.inviteclientcontext | unable to acquire streams
<MY_CLIENT_IP_ADDR> 2020-07-07 16:11:57 NotReadableError: Could not start audio source
<MY_CLIENT_IP_ADDR> 2020-07-07 16:11:57 Call failed: WebRTC Error

This happens on an audio call, too. However, the mic is enabled as I'm using Chrome on Linux desktop (I see "This page is accessing your microphone."). I also tried using the default index.html file from Browser-Phone github repo, just in case, but I'm getting the same result. I cleared the whole settings in Chrome for Linux. I went to "history", "clear browsing data", "advanced", "Time range: all time", selected everything and "cleared data". I load the page in Chrome, it asks me to use the mic, it registers properly in Asterisk and tries to dial an extension. However, it fails with:

<MY_CLIENT_IP_ADDR> 2020-07-07 16:45:02 Tue Jul 07 2020 16:45:02 GMT+0200 (Central European Summer Time) | sip.invitecontext.sessionDescriptionHandler | unable to acquire streams
<MY_CLIENT_IP_ADDR> 2020-07-07 16:45:02 NotReadableError: Could not start audio source

I have: Version 81.0.4044.138 (Official Build) (64-bit) I upgraded to: Version 83.0.4103.116 (Official Build) (64-bit)

Still, same issue, same console log error.

So it seems I hit several issues here at the same time.

For Asterisk issues (registration failure), what debug information do you suggest I enable?

BTW, this is what I use now to send client logs to the server (in case it's of use to anyone else):

// send console log messages to server
function remoteConsoleLog(msg){
        var item = {data:window.btoa(unescape(encodeURIComponent(msg)))};
        $.ajax({
           type:'POST', url: 'remotelog.php',data: item
        });
        // We might log again to the client's console by reimplementing the console object?
        // alert(msg);
}

window.onerror = remoteConsoleLog;
console.log = remoteConsoleLog;
console.error = remoteConsoleLog;
console.warn = remoteConsoleLog;

It's a lot of information, and I could eventually remove "console.log" from the list above, but it's currently very useful.

vieridipaola commented 4 years ago

I found another client with issues. This time it's an iOS phone, the client can conenct fine, make a call (video)... However, no sound (client doesn't hear anything). The log I could get is the following:

<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Navigator - User Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1, platform: iPhone, codename: Mozilla, name: Netscape, version: 5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 [object MediaDeviceInfo]
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Lanaguage Pack already loaded:
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Clearing Buddies...
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Adding Buddies...
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Creating User Agent...
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | configuration parameters after validation:
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · viaHost: "192.0.2.77"
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · uri: sip:patient@sip.domain.org
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · custom: {}
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · displayName: "Patient"
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · password: NOT SHOWN
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · registerExpires: 300
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · register: false
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · registrarServer: sip:sip.domain.org
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · transportConstructor: i
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · transportOptions: {"wsServers":"wss://sip.domain.org:8090/ws","traceSip":false,"connectionTimeout":15,"maxReconnectionAttempts":99,"reconnectionTimeout":15}
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · userAgentString: "browserphone"
<CLIENT_IP_ADDR> 2020-07-06 19:58:23 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · noAnswerTimeout: 60000
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · hackViaTcp: false
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · hackIpInContact: true
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · hackWssInTransport: true
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · hackAllowUnregisteredOptionTags: false
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · sessionDescriptionHandlerFactoryOptions: {"constraints":{},"peerConnectionOptions":{}}
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · contactName: "tnkkqifo"
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · contactTransport: "wss"
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · forceRport: false
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · autostart: false
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · autostop: true
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · rel100: "none"
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · dtmfType: "info"
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · replaces: "none"
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · sessionDescriptionHandlerFactory: function (e,t){var r=e.ua.getLogger("sip.invitecontext.sessionDescriptionHandler",e.id),n=new(i(31))(e,t);return new s(r,n,t)}
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · authenticationFactory: undefined
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · allowLegacyNotifications: false
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · allowOutOfDialogRefers: false
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · authorizationUser: "patient"
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · instanceId: "ffe5adf4-c558-432e-ab5b-f7e924c7c044"
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · sipjsId: "0v8jb"
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | · hostportParams: "sip.domain.org"
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Creating User Agent... Done
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Connecting to Web Socket...
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.ua | user requested startup...
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.transport | configuration parameters after validation:
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.transport | · wsServers: [{"ws_uri":"wss://sip.domain.org:8090/ws","sip_uri":"<sip:sip.domain.org:8090;transport=ws;l▒▒ZY▒▒
                                                        ▒\▒\▒▒܈▒▒▒[▒▒▒▒[YH▒▒▒▒▒ȟW
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.transport | · connectionTimeout: 15
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.transport | · maxReconnectionAttempts: 99
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.transport | · reconnectionTimeout: 15
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.transport | · keepAliveInterval: 0
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.transport | · keepAliveDebounce: 10
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.transport | · traceSip: false
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Transport Object Created
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.transport | connecting to WebSocket wss://sip.domain.org:8090/ws
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Connected to Web Socket!
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Sending Registration...
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Mon Jul 06 2020 19:58:23 GMT+0200 (CEST) | sip.transport | WebSocket wss://sip.domain.org:8090/ws connected
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Registered!
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Subscribe to voicemail Messages...
<CLIENT_IP_ADDR> 2020-07-06 19:58:24 Starting Subscribe of all (0) Extension Buddies...
<CLIENT_IP_ADDR> 2020-07-06 19:58:27 User Agent ready
<CLIENT_IP_ADDR> 2020-07-06 19:58:27 Disabling some features for patient
<CLIENT_IP_ADDR> 2020-07-06 19:58:27 Patient auto-dials queue
<CLIENT_IP_ADDR> 2020-07-06 19:58:27 SUBSCRIBE: 900@sip.domain.org
<CLIENT_IP_ADDR> 2020-07-06 19:58:27 Selecting Line : 1
<CLIENT_IP_ADDR> 2020-07-06 19:58:27 INVITE (video): 900@sip.domain.org
<CLIENT_IP_ADDR> 2020-07-06 19:58:27 [Provisioning] Properly exiting
<CLIENT_IP_ADDR> 2020-07-06 19:58:27 Mon Jul 06 2020 19:58:27 GMT+0200 (CEST) | sip.invitecontext.sessionDescriptionHandler | SessionDescriptionHandlerOptions: {"constraints":{},"peerConnectionOptions":{}}
<CLIENT_IP_ADDR> 2020-07-06 19:58:27 Mon Jul 06 2020 19:58:27 GMT+0200 (CEST) | sip.invitecontext.sessionDescriptionHandler | initPeerConnection
<CLIENT_IP_ADDR> 2020-07-06 19:58:27 Mon Jul 06 2020 19:58:27 GMT+0200 (CEST) | sip.invitecontext.sessionDescriptionHandler | New peer connection created
<CLIENT_IP_ADDR> 2020-07-06 19:58:27 Mon Jul 06 2020 19:58:27 GMT+0200 (CEST) | sip.invitecontext.sessionDescriptionHandler | acquiring local media
<CLIENT_IP_ADDR> 2020-07-06 19:58:31 Mon Jul 06 2020 19:58:31 GMT+0200 (CEST) | sip.invitecontext.sessionDescriptionHandler | acquired local media streams
<CLIENT_IP_ADDR> 2020-07-06 19:58:31 Mon Jul 06 2020 19:58:31 GMT+0200 (CEST) | sip.invitecontext.sessionDescriptionHandler | RTCIceGatheringState changed: gathering
<CLIENT_IP_ADDR> 2020-07-06 19:58:31 Mon Jul 06 2020 19:58:31 GMT+0200 (CEST) | sip.invitecontext.sessionDescriptionHandler | ICE candidate received: candidate:2130411746 1 udp 2113939711 2001:b07:6469:7d8a:e139:6144:e0:1e15 49305 typ host generation 0 ufrag pNMm network-cost 999
<CLIENT_IP_ADDR> 2020-07-06 19:58:31 Mon Jul 06 2020 19:58:31 GMT+0200 (CEST) | sip.invitecontext.sessionDescriptionHandler | ICE candidate received: candidate:3690124833 1 udp 2113937151 192.168.1.147 49304 typ host generation 0 ufrag pNMm network-cost 999
<CLIENT_IP_ADDR> 2020-07-06 19:58:31 Mon Jul 06 2020 19:58:31 GMT+0200 (CEST) | sip.invitecontext.sessionDescriptionHandler | ICE candidate received: candidate:3690124833 1 udp 2113937151 192.168.1.147 51993 typ host generation 0 ufrag pNMm network-cost 999
<CLIENT_IP_ADDR> 2020-07-06 19:58:31 Mon Jul 06 2020 19:58:31 GMT+0200 (CEST) | sip.invitecontext.sessionDescriptionHandler | ICE candidate received: candidate:2130411746 1 udp 2113939711 2001:b07:6469:7d8a:e139:6144:e0:1e15 51994 typ host generation 0 ufrag pNMm network-cost 999
<CLIENT_IP_ADDR> 2020-07-06 19:58:31 Mon Jul 06 2020 19:58:31 GMT+0200 (CEST) | sip.invitecontext.sessionDescriptionHandler | ICE candidate received: candidate:842163049 1 udp 1677729535 <CLIENT_IP_ADDR> 40122 typ srflx raddr 192.168.1.147 rport 49304 generation 0 ufrag pNMm network-cost 999
<CLIENT_IP_ADDR> 2020-07-06 19:58:31 Mon Jul 06 2020 19:58:31 GMT+0200 (CEST) | sip.invitecontext.sessionDescriptionHandler | ICE candidate received: candidate:842163049 1 udp 1677729535 <CLIENT_IP_ADDR> 40123 typ srflx raddr 192.168.1.147 rport 51993 generation 0 ufrag pNMm network-cost 999
<CLIENT_IP_ADDR> 2020-07-06 19:58:31 Mon Jul 06 2020 19:58:31 GMT+0200 (CEST) | sip.invitecontext.sessionDescriptionHandler | ICE candidate gathering complete
<CLIENT_IP_ADDR> 2020-07-06 19:58:31 Mon Jul 06 2020 19:58:31 GMT+0200 (CEST) | sip.invitecontext.sessionDescriptionHandler | RTCIceGatheringState changed: complete
<CLIENT_IP_ADDR> 2020-07-06 19:58:31 Direction Change:
<CLIENT_IP_ADDR> 2020-07-06 19:58:33 MediaDevices: audioinput: iPhone Microfono id = 09773EF7E31B0E2E7D89594FF56C79F6731ADA09
<CLIENT_IP_ADDR> 2020-07-06 19:58:33 MediaDevices: videoinput: Fotocamera anteriore id = 6719F8E04DE58BEA55490A60EE614A219A340C76
<CLIENT_IP_ADDR> 2020-07-06 19:58:33 MediaDevices: videoinput: Fotocamera posteriore id = 5060EDDD6FC5752D4E122999BA45DE43C6B12EF1
<CLIENT_IP_ADDR> 2020-07-06 19:58:33 hasSpeakers: false, hasWebCam: true, hasMicrophone: true, isMicrophoneAlreadyCaptured: true, isWebcamAlreadyCaptured: true

I don't see any 'audiooutput' in the log (device.kind), and I do see 'hasSpeakers: false' (which is a custom boolean that checks for device.kind === 'audiooutput').

What could be the cause for this?

vieridipaola commented 4 years ago

After all, in most cases the problem is simply that the client browser cannot have access to a device (mic, camera, speaker). Why is still unclear to me. Sometimes it's the user who inadvertently blocks a device, or does not give it permission explicitly. However, maybe sometimes the user is not asked and the device is blocked straight away. The Feature-Policy header doesn't seem to help much at least in the case of Chrome.

Maybe the console output could be changed so we can quickly detect which device is actually being "blocked" or denied access to. We should then inform the user of that, with an alert message or something.

For instance, the following console log output only produces a "webrtc failure" message in the end user's web UI:

<CLIENT_IP_ADDR> 2020-07-08 11:09:08 Wed Jul 08 2020 11:09:08 GMT+0200 (hora de verano de Europa central) | sip.invitecontext.sessionDescriptionHandler | acquiring local media
<CLIENT_IP_ADDR> 2020-07-08 11:09:09 Wed Jul 08 2020 11:09:08 GMT+0200 (hora de verano de Europa central) | sip.invitecontext.sessionDescriptionHandler | unable to acquire streams
<CLIENT_IP_ADDR> 2020-07-08 11:09:09 NotReadableError: Could not start video source
<CLIENT_IP_ADDR> 2020-07-08 11:09:09 Wed Jul 08 2020 11:09:08 GMT+0200 (hora de verano de Europa central) | sip.inviteclientcontext | unable to acquire streams
<CLIENT_IP_ADDR> 2020-07-08 11:09:09 NotReadableError: Could not start video source
<CLIENT_IP_ADDR> 2020-07-08 11:09:09 Call failed: WebRTC Error

Instead, it should be explicitly informing the client that there are problems accessing the camera (but not the microphone or the speakers). This check might be run each time the client tries to make a call.

vieridipaola commented 3 years ago

Hi again,

Just wanted to share what I'm finally using to log JS messages to my server for debugging purposes. It' s better than the method I suggested earlier. I'm not sure about the window.onerror part at the beginning, but the rest is working nicely as I can finally receive every console detail on the server.

// -----------------------------------
// send console log messages to server
function remoteConsoleLog(msg){
        var item = {data:window.btoa(unescape(encodeURIComponent(msg)))};
        $.ajax({
           type:'POST', url: 'remotelog.php',data: item
        });
}

window.onerror = remoteConsoleLog;

//console.log = remoteConsoleLog;
//console.error = remoteConsoleLog;
//console.warn = remoteConsoleLog;

function objToString(obj, ndeep) {
  if(obj == null){ return String(obj); }
  if (ndeep > 5){ return obj.toString(); }
  switch(typeof obj){
    case "string": return '"'+obj+'"';
    case "function": return obj.name || obj.toString();
    case "object":
      var indent = Array(ndeep||1).join('\t'), isArray = Array.isArray(obj);
      return '{['[+isArray] + Object.keys(obj).map(function(key){
           return '\n\t' + indent + key + ': ' + objToString(obj[key], (ndeep||1)+1);
         }).join(',') + '\n' + indent + '}]'[+isArray];
    default: return obj.toString();
  }
}

(function(){
    var _log = console.log;
    var _error = console.error;
    var _warn = console.warn;

    console.error = function(errMessage){
        // Either handle errMessage.toString() or the full arguments
        var item = {data:window.btoa(unescape(encodeURIComponent("ERROR: " + objToString(arguments))))};
        $.ajax({
           type:'POST', url: 'remotelog.php',data: item
        });
        // apply to local console too
        _error.apply(console,arguments);
    };

    console.log = function(logMessage){
        // Either handle logMessage.toString() or the full arguments
        var item = {data:window.btoa(unescape(encodeURIComponent(objToString(arguments))))};
        $.ajax({
           type:'POST', url: 'remotelog.php',data: item
        });
        // apply to local console too
        _log.apply(console,arguments);
    };

    console.warn = function(warnMessage){
        // Either handle warnMessage.toString() or the full arguments
        var item = {data:window.btoa(unescape(encodeURIComponent("WARNING: " + objToString(arguments))))};
        $.ajax({
           type:'POST', url: 'remotelog.php',data: item
        });
        // apply to local console too
        _warn.apply(console,arguments);
    };
})();

// -----------------------------------
InnovateAsterisk commented 3 years ago

Nice work! I'll see if I can integrate this into the master branch