Code Monkey home page Code Monkey logo

ctxsip's Introduction

ctxSip

Project Homepage / Demo

A Javascript SIP client based on SIP.js.

ctxSip is a Javascript based SIP client that uses WebRTC and WebSockets to connect to your SIP server. The UI is designed to be launched as a popup from within your application. Works well with Kazoo from 2600hz

Features

  • Audio only, Hold / Resume, Mute, multiple call support.
  • No plugins required, Works with WebSocket / WebRTC enabled browsers. (Firefox & Chrome.)
  • Call log is saved to localStorage.
  • Intuitive interface makes it easy for users.
  • Easy to configure and integrate into your project.
  • MIT licensed.

Screenshots

Getting Started

You will need a sip account on a server that supports SIP over websockets. This has been tested with Kamailio in front of Freeswitch.

  • Clone this project.
  • Copy phone/scripts/config-sample.js to phone/scripts/config.js
  • Edit phone/scripts/config.js to reflect your sip account.
  • In your application HMTL, create a document and add the following code:
<a href="phone" id="launchPhone">Launch</a>

<script>
var url      = '/phone',
    features = 'menubar=no,location=no,resizable=no,scrollbars=no,status=no,addressbar=no,width=320,height=480';

    $('#launchPhone').on('click', function(event) {
        event.preventDefault();
        // This is set when the phone is open and removed on close
        if (!localStorage.getItem('ctxPhone')) {
            window.open(url, 'ctxPhone', features);
            return false;
        } else {
            window.alert('Phone already open.');
        }
    });
</script>

SSL connections for are required for this to work!

Dependencies

ctxSip uses:

Tested on:

ctxsip's People

Contributors

bat-o-matic avatar bmac901 avatar ludovic-gasc avatar mancy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ctxsip's Issues

DTMF not work

the sipSendDTMF function is executed but does not send the tone when pressing an option.

I have active debug in the asterisk and the log level in DTMF but I don't see the tones

I have the pjsip account set to dtmf_mode = info
even so it doesn't work

any ideas?

INCOMPATIBLE_DESTINATION error

hello dear
When I use your app with my kazoo(version 4.3.112), kazoo-freeswitch gives INCOMPATIBLE_DESTINATION error.
did kazoo need any configurations?

ctxSip doesnt work on android phone , Iphone

if I access via android, iphone, then I can see unssuported browser error message.
As my checking result, this is related with getUserMedia.

correctly the part is hasWebRTC : function() {} .

so I added some code in here.
navigator.mediaDevices.enumerateDevices().then(function(deviceInfos){
// deviceInfos will not have a populated lable unless to accept the permission
// during getUserMedia. This normally happens at startup/setup
// so from then on these devices will be with lables.
HasVideoDevice = false;
HasAudioDevice = false;
HasSpeakerDevice = false; // Safari and Firefox don't have these
AudioinputDevices = [];
VideoinputDevices = [];
SpeakerDevices = [];
var savedVideoDevice = 'default';
var videoDeviceFound = false;

                    var savedAudioDevice = 'default';
                    var audioDeviceFound = false;

                    var MicrophoneFound = false;
                    var SpeakerFound = false;
                    var VideoFound = false;
                    for (var i = 0; i < deviceInfos.length; ++i) {
                        if (deviceInfos[i].kind === "audioinput") {
                            MicrophoneFound = true;
                            HasAudioDevice = true;
                            AudioinputDevices.push(deviceInfos[i]);
                        }
                        else if (deviceInfos[i].kind === "audiooutput") {
                            SpeakerFound = true;
                            HasSpeakerDevice = true;
                            SpeakerDevices.push(deviceInfos[i]);
                        }
                        else if (deviceInfos[i].kind === "videoinput") {
                            HasVideoDevice = true;
                            VideoinputDevices.push(deviceInfos[i]);
                        }
                    }
                    console.log(AudioinputDevices, VideoinputDevices);

                    var contraints = {
                        audio: MicrophoneFound,
                        video: VideoFound
                    }

                    if(MicrophoneFound){
                        contraints.audio = { deviceId: "default" }
                        if(audioDeviceFound) contraints.audio.deviceId = { exact: savedAudioDevice }
                    }
                    if(VideoFound){
                        contraints.video = { deviceId: "default" }
                        if(videoDeviceFound) contraints.video.deviceId = { exact: savedVideoDevice }
                    }
                    // Additional

                    console.log("Get User Media", contraints);
                    // Get User Media
                    navigator.mediaDevices.getUserMedia(contraints).then(function(mediaStream){
                        // Handle Video
                        var videoTrack = (mediaStream.getVideoTracks().length >= 1)? mediaStream.getVideoTracks()[0] : null;
                        if(VideoFound && videoTrack != null){
                            localVideoStream.addTrack(videoTrack);
                            // Display Preview Video
                            localVideo.srcObject = localVideoStream;
                            localVideo.onloadedmetadata = function(e) {
                                localVideo.play();
                            }
                        }
                        else {
                            console.warn("No video / webcam devices found. Video Calling will not be possible.")
                        }

                        // Handle Audio
                        var audioTrack = (mediaStream.getAudioTracks().length >= 1)? mediaStream.getAudioTracks()[0] : null ;
                        if(MicrophoneFound && audioTrack != null){
                            localMicrophoneStream.addTrack(audioTrack);
                            // Display Micrphone Levels
                            window.SettingsMicrophoneStream = localMicrophoneStream;
                            window.SettingsMicrophoneSoundMeter = MeterSettingsOutput(localMicrophoneStream, "Settings_MicrophoneOutput", "width", 50);
                        }
                        else {
                            console.warn("No microphone devices found. Calling will not be possible.")
                        }

                        // Display Output Levels
                        $("#Settings_SpeakerOutput").css("width", "0%");
                        $("#Settings_RingerOutput").css("width", "0%");
                        if(!SpeakerFound){
                            console.log("No speaker devices found, make sure one is plugged in.")
                            $("#playbackSrc").hide();
                            $("#RingDeviceSection").hide();
                        }

                        // Return .then()
                        return navigator.mediaDevices.enumerateDevices();
                    }).catch(function(e){
                        console.error(e);
                        Alert(lang.alert_error_user_media, lang.error);
                    });
                }).catch(function(e){
                    console.error("Error enumerating devices", e);
                });

Then I can see detect audio and video media.
but when try call, I can see this error.

sip-0.10.0.js:807 Fri Jul 22 2022 06:19:10 GMT+0300 (Moscow Standard Time) | sip.invitecontext.sessionDescriptionHandler | unable to acquire streams
sip-0.10.0.js:807 DOMException: Requested device not found.

please check and help me this problem

Can't make incoming calls as because the extension is UNREACHABLE.

I'm facing UNREACHABLE issue on ctxSip phone. Where actually I'll change in sip.js file please assist me. Thanks in Advance.

My sip.js version is: useragent "SIP.js/0.7.8"

My sip.js contact uri:

     while(contacts--) {
        contact = response.parseHeader('contact', contacts);
        if(contact.uri.user === this.ua.contact.uri.user) {
          expires = contact.getParam('expires');
          break;
        } else {
          contact = null;
        }
      }

SIP Debug:

NOTICE[11012]: chan_sip.c:30209 sip_poke_noanswer: Peer '401' is now UNREACHABLE! Last qualify: 0

OPTIONS sip:[email protected];transport=ws SIP/2.0
Via: SIP/2.0/WS 20.147.223.220:5060;branch=z9hG4bK7b866875;rport
Max-Forwards: 70
From: "Unknown" sip:[email protected];tag=as1735d89c
To: sip:[email protected];transport=ws
Contact: sip:[email protected]:5060;transport=ws
Call-ID: [email protected]:5060
CSeq: 102 OPTIONS
User-Agent: IPBX-2.11.0(13.30.0)
Date: Mon, 09 Oct 2023 20:36:11 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
Content-Length: 0

Is the project still alive?

Hi. I would like to use this and I have an issue, but before posting the issue, I wonder if the project still alive? I see last update was 3 years ago.

No inbound calls possible

Hello,
I have implemented this on a freepbx 13, no issue with outgoing calls.
Incoming calls not possible.
When checking sip show peers the extension is showing unreacheable however outbound calls still possible,

Can someone tell me what could be wrong ?

Integration

I am trying to integrate it with the our web sip client engines, however for NS engine I always get "undefined plhandler" errors.
Do you have any suggestion on how to add other engines to your user interface apart from WebRTC?
Otherwise it is a nice project and it would be fine if people can change the underlying SIP.js engine.

SIP.js - removed SIP.WebRTC.isSupported()

Hello,

Thanks for your good WebRTC phone.
All working fine with SIP.js 0.7.8
0.8.2 not working.
Here is answer from SIP.js support:
"We have removed SIP.WebRTC.isSupported() from our library. It is up to the end user application to determine if it is running in an environment that can support it's features or not. SIP.js does not require to work. It is fully capable of being a SIP stack where there is no WebRTC support."

error while outging call made

Rejecting secure audio stream without encryption details: audio 58843 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 126

Sip.js update warning

sip.min.js:1 Wed May 18 2022 06:14:28 GMT-0700 (Pacific Daylight Time) | sip.ua | The UA class has been deprecated and will no longer be available starting with SIP.js release 0.16.0. The UA has been replaced by the UserAgent class. Please update accordingly.

I hope ctxSip project is still alive because it really rocks!

thanks

Ringcentral Sip

i have tried my ringcentral SIP But its not work with that can you help me to do with that.

DOMException: The play() request was interrupted by a new load request.

I am encountering this error:
"DOMException: The play() request was interrupted by a new load request."

This may reference on this code:

			const remoteVideo = document.getElementById('audioRemote')
			const localVideo = document.getElementById('audioRemote')

			s.on('trackAdded', function () {
				// We need to check the peer connection to determine which track was added
				const pc = s.sessionDescriptionHandler.peerConnection

				// Gets remote tracks
				const remoteStream = new MediaStream()
				pc.getReceivers().forEach(function (receiver) {
					remoteStream.addTrack(receiver.track)
				})

				remoteVideo.srcObject = remoteStream
				remoteVideo.play()
			})

CTXSip incoming call multiple sessions created

I have multiple asterisk extensions ,few mapped to 3cx and one mapped to ctxsip. A DID number e.g. 026001000 is mapped to a queue having all the extensions . So when i dial DID number from mobile, the call is forwarded to the queue , it lands on registered extensions .Issue i am facing is in case the call lands on CTXsip it creates multiple sessions for the same incoming call and i am unable to receive the call when i click on phone icon.

Also having hanging up on incoming and outgoing calls.

Hello I have freepbx setup and i like the web sip calling. But the problem I have is that when i call out or a incoming call comes in it hangs up the call from the web phone. But the complete call is not hanging up when i did a test to my cellphone and it hang up the call but my cellphone showed the call was still there. Not sure what to do can someone please help me?

Joseph

backend

Is it possible to use this as a frontend for this web sip engine? I have a customer who likes the ctxSip solution very much, but needs also native SIP/RTP support (not just WebRTC) and for this the above mizu engine would be suitable. Other users might also benefit from this integration.
(I am the author of this webphone library)

Problem in outgoing internal calls

Problem context.
When you dial an extension of the same SIP account, the person who generates the call is NOT listening, the mute does not work
and Pause call does not work.

This scenario persists while the call is still active, even if the call is transferred, it is still not heard from one side.

SIP version: 0.7.8

Stage.
You are running this example and only the credentials were changed.

Extra.
If I frame an external number (example, cell phone) everything works perfect.

No ivr provider for number non-existent

Hi
When call a number non-existent no have ivr of provider but continue to ring.
If I call from other sip client I can listen ivr of provider.
How can fix this bug?

Https (With Open SSL,TLS Certificates) Configuration Guide Required For Chrome

We require ctxSip Phone with Asp.net library on chrome browser, we have successfully tested on localhost (IIS ) with ws using following configuration,
SipID:4000
SipPwd:4000
ws URL:
ws://10.197.0.186:8088/ws

Sip Realm:
10.197.0.186

Where 10.197.0.186 is our FreePBX (Asterisk v13) IP:

getUserMedia failed: NavigatorUserMediaErrorconstraintName: ""message: "Only secure origins are allowed (see: https://goo.gl/Y0ZkNV)."name: "PermissionDeniedError"proto: NavigatorUserMediaErrorgetUserMediaFailure @ app.js:193

phone_error

call out issue with error 488

i am using your live demo for test with my freepbx v15, my extension able to register but when trying to make outgoing call on the server side can see server reject the call with below error:
<--- Transmitting SIP response (364 bytes) to WSS:client.com:64383 ---> SIP/2.0 488 Not Acceptable Here Via: SIP/2.0/WSS dcjo818s1hde.invalid;rport=64383;received=client.com;branch=z9hG4bK4034036 Call-ID: 1ev46kma7st4qfjpkbqq From: "102" <sip:[email protected]>;tag=gghrj49c35 To: <sip:[email protected]>;tag=060b6e08-3549-4eb7-b0b0-28dc9044db16 CSeq: 7433 INVITE Server: FPBX-15.0.15.1(13.22.0) Content-Length: 0
the invite message is as below:

`<--- Received SIP request (2515 bytes) from WSS:IP:64383 --->
INVITE sip:[email protected] SIP/2.0
Via: SIP/2.0/WSS dcjo818s1hde.invalid;branch=z9hG4bK4034036
Max-Forwards: 70
To: sip:[email protected]
From: "102" sip:[email protected];tag=gghrj49c35
Call-ID: 1ev46kma7st4qfjpkbqq
CSeq: 7433 INVITE
Authorization: Digest algorithm=MD5, username="102", realm="asterisk", nonce="1557300130/de6ec5e2652ca58d7f684a4e8653eae6", uri="sip:[email protected]", response="218bd35031d0dc83482257b6e97c43ab", opaque="7d0413cc37f5efee", qop=auth, cnonce="qa7decj9qlpl", nc=00000001
Contact: sip:[email protected];transport=ws;ob
Allow: ACK,CANCEL,INVITE,MESSAGE,BYE,OPTIONS,INFO,NOTIFY,REFER
Supported: outbound
User-Agent: SIP.js/0.7.8
Content-Type: application/sdp
Content-Length: 1743

v=0
o=mozilla...THIS_IS_SDPARTA-66.0.4 5500504376389340098 0 IN IP4 0.0.0.0
s=-
t=0 0
a=sendrecv
a=fingerprint:sha-256 48:BF:46:FE:62:EA:2B:30:EF:B1:71:F6:38:9C:27:65:9F:DB:D5:B2:15:A6:1F:40:95:44:EC:F4:DD:35:4D:F7
a=group:BUNDLE 0
a=ice-options:trickle
a=msid-semantic:WMS *
m=audio 64699 UDP/TLS/RTP/SAVPF 109 9 0 8 101
c=IN IP4 IP
a=candidate:0 1 UDP 2122252543 IP 64698 typ host
a=candidate:2 1 UDP 2122187007 IP 64699 typ host
a=candidate:4 1 TCP 2105524479 IP 9 typ host tcptype active
a=candidate:5 1 TCP 2105458943 IP 9 typ host tcptype active
a=candidate:0 2 UDP 2122252542 IP 64700 typ host
a=candidate:2 2 UDP 2122187006 IP 64701 typ host
a=candidate:4 2 TCP 2105524478 IP 9 typ host tcptype active
a=candidate:5 2 TCP 2105458942 IP 9 typ host tcptype active
a=candidate:3 1 UDP 1685987327 client.com 64699 typ srflx raddr 172.16.16.220 rport 64699
a=candidate:3 2 UDP 1685987326 client.com 64701 typ srflx raddr 172.16.16.220 rport 64701
a=sendrecv
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2/recvonly urn:ietf:params:rtp-hdrext:csrc-audio-level
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid
a=fmtp:109 maxplaybackrate=48000;stereo=1;useinbandfec=1
a=fmtp:101 0-15
a=ice-pwd:7b2fc3b90b27ed0356d23f1aea8b464c
a=ice-ufrag:87cdac06
a=mid:0
a=msid:{7d04a76c-9c97-4f08-a601-738e549148a7} {bc8a214f-0afa-4722-b377-a7a3901d2c04}
a=rtcp:64701 IN IP4 client.com
a=rtcp-mux
a=rtpmap:109 opus/48000/2
a=rtpmap:9 G722/8000/1
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=setup:actpass
a=ssrc:2973071479 cname:{ae4a836d-df41-4bd8-b48b-e5eb14f09332}`

How do I connect without a password on the SIP URI

Hi

When I use version 0.15.10, Wucheng successfully registered with the password;

This is my configuration option

config : {
/password : user.Pass,
displayName : user.Display,
uri : 'sip:'+user.User+'@'+user.Realm,
wsServers : user.WSServer,
registerExpires : 30,
traceSip : true,
log : {
level : 3,
}
/
uri: user.User+'.'+token+'@'+user.Realm,
displayName: user.Display,
authorizationUser: user.Display,
password: user.Pass,
userAgentString: user.Display,
log : {
level : 3,
builtinEnabled: true,
},
transportOptions: {
wsServers : [user.WSServer],
traceSip : true,
},
registerOptions: {
expires: 30,
//instanceId: "uuid:8f1fa16a-1165-4a96-8341-785b1ef24f12",
//registrar: 'sip:'+user.Realm,
},
//rel100: SIP.C.supported.REQUIRED,
//allowLegacyNotifications: true,
//hackWssInTransport: true,
register: true,
//hackIpInContact: true,
autostart: true,
//hackViaTcp: true

    },

but get errors

sip.min.js:10491 Thu Apr 23 2020 17:19:53 GMT+0800 (**标准时间) | sip.parser | no CRLF found, not a SIP message, discarded
LoggerFactory.print @ sip.min.js:10491
LoggerFactory.genericLog @ sip.min.js:10469
Logger.genericLog @ sip.min.js:10533
Logger.warn @ sip.min.js:10529
parseMessage @ sip.min.js:5411
UA.onTransportReceiveMsg @ sip.min.js:17939
(anonymous) @ sip.min.js:17917
emit @ sip.min.js:6771
Transport.onMessage @ sip.min.js:20989
sip.min.js:10491 Thu Apr 23 2020 17:19:53 GMT+0800 (**标准时间) | sip.ua | UA failed to parse incoming SIP message - discarding.
LoggerFactory.print @ sip.min.js:10491
LoggerFactory.genericLog @ sip.min.js:10469
Logger.genericLog @ sip.min.js:10533
Logger.warn @ sip.min.js:10529
UA.onTransportReceiveMsg @ sip.min.js:17941
(anonymous) @ sip.min.js:17917
emit @ sip.min.js:6771
Transport.onMessage @ sip.min.js:20989
sip.min.js:10491 Thu Apr 23 2020 17:20:25 GMT+0800 (**标准时间) | sip.user-agent-client | User agent client request timed out. Generating internal 408 Request Timeout.

try to try , I can't find the reason

thanks

Thank you

I just wanted to say thank you for this nice WebRTC SIP client
you actually did good work

Conference feature

Hi,
You mentioned in features that ctxsip supports Multiple calls what do you mean by that ? Is that the conference. ? Supports multiple calls (incoming or outgoing).?

Problem when working with meteor and sip.js installed as node module

Can you tell me if you tested your phone app with sip.js installed as node module in meteor?
I'm encountering some problems here:
modules.js?hash=32b0f2f…:15998 Uncaught (in promise) TypeError: Cannot read property 'close' of undefined(…)
which is thrown by this line:
exports.clearInterval = function(timeout) { timeout.close(); };

That line in question is part of meteor-node-stubs, which are meteor essentials installed as node module, more specifically this one which is part of that: https://www.npmjs.com/package/timers-browserify

So do you think you can help me or should I ask on sip.js git page?

Only heared one side's voice

When I call to second side ,I heared his voice but he does'nt hear my voice.I tried many times but all time the same issue happened.We used asterisk freePBX as sip accaunt and websocket server.

User: 200
password : 200
Realm:10.10.3.30:5160
WSServer: wss://10.10.3.30:8089/ws

What's the problem ?

Hangs up when answering a call

When trying to make an outgoing call using the demo provided on the site, the call completes but once it is answered it immediately hangs up. Noticed this error on the browser console:

app.js:226 Uncaught TypeError: Cannot read property 'displayName' of null
at Object.logCall (app.js:226)
at f. (app.js:126)
at f.d.emit (sip.min.js:35)
at f.b.receiveResponse [as receiveNonInviteResponse] (sip.min.js:35)
at Object.b.RequestSender.receiveResponse (sip.min.js:37)
at b.receiveResponse (sip.min.js:37)
at d.receiveResponse (sip.min.js:39)
at d.onMessage (sip.min.js:39)
at WebSocket.ws.onmessage (sip.min.js:39)

Demo isn't working?

Hello,

For some weird reason, demo isn't working for me, I tried with different browsers and still couldn't able to make calls.

Could you please check?

Thanks.

Issue in Chrome App

Hello , excellent client implementation in jQuery to sip.js.

Since a few days ago, I've been trying to use it from a chrome app, but I have not succeeded.
Initially I thought it was this, onsip/SIP.js#163 but still does not work, although this state ready softphone calls do not go.

You could give me a hand with this, if they want gives me your email and I send files chrome app is only for charging and test it.

Note: I have already discussed all traces of onload and beforeOnLoad within app.js

Auto Answer a call

I am trying to integrate it with my asterisk telephony engine and I was wondering if there is a way to set it to auto answer?
If there is, please let me know.

phone not loading

"Copy scripts/config-sample.js to scripts/config.js"
meaning renaming the 1st to 2nd or anything else please?

  1. config.js or config_sample.js
    // WebSocket URL = wss.sipserver.com:8443"?
    "WSServer" : "wss://wss.ippi.fr:8443"

idd1717.com/web
all files and sip account in place,
click only to open the demo page

help fix please.

how to set PCMA codec?

Hi, I need help. Im using FreeSWITCH-mod_sofia/1.6.9~64bit + Version 52.0.2743.116 (64-bit) and your client. Then I calling my codec show G722. I need change to PCMA. How to do that?

not working connecting event

Hello,

I have issue with connecting event. I cant get any log of this event. Here is my code and freeswitch logs:

        sipClient.phone = new SIP.UA(sipClient.config);

        sipClient.phone.on('connecting', function(arg) {
            alert('connecting'); // not working
            sipClient.setStatus("Connecting");
        });

        // this event working perfect!
        sipClient.phone.on('connected', function(e) {
            sipClient.setStatus("Connected");
        });

Here is log:

Wed Sep 28 2016 14:23:27 GMT+0300 (EEST) | sip.transport | connecting to WebSocket wss://CP1.sip.domain.com:5067

Wed Sep 28 2016 14:23:27 GMT+0300 (EEST) | sip.transport | WebSocket wss://CP1.sip.domain.com:5067 connected
Wed Sep 28 2016 14:23:27 GMT+0300 (EEST) | sip.ua | connection state set to 0

Connection status: Connected

Wed Sep 28 2016 14:23:27 GMT+0300 (EEST) | sip.transport | sending WebSocket message:

Why this connecting event don't work?

Ctxsip Not Working on Samsung A03 Android 11 Chrome

I tried Ctxsip on Samsung A03 Android 11 Chrome. It got to "Ready". When I tried making calls it never went through. I used it with Asterisk 16.

However, the same phone with Firefox, everything worked fine. Please, any insights??

No DTMF Tones

Awesome work here, I wonder if there is a plan to implement DTMF tones via RFC 2833, there seems to be an mp3 relating to but does not function for me

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.