VoIP SIP (Voice Calls) System : Source Code

sfsameer

Well-Known Member
Licensed User
Longtime User
Hello everyone :)

The next update will contain :
1- Call Recording
2- B4J (Desktop) Client : you will be able to make phone calls through your PC
3- add new features which will be announced once we are finished feature by feature

New features will be added as well:
4- Add Geo location
5- Add push to talk
6- Add centralized address book
7- Add group Call

Next Update will be released : 01-05-2021 11:00 GMT 3+
 

amorosik

Expert
Licensed User
Hello everyone :)

Tip
- To use the project publicly :
1- Open the port in your server firewall : example 5061
also make sure that you choose if it's TCP or UDP in your server's configurations panel
Example in our server's configurations (Microsoft Azure) :
View attachment 112250

and in our server's Firewall (In bound):
View attachment 112251

and in our server's Firewall (Out bound):
View attachment 112252


**Our server Public IP : 94.127.212.200
**Our Server Private IP : 10.0.0.4
So when we enter the IP in the B4J Server Admin :
View attachment 112254

*You will have to enter your Local IP and not the public ip


-Now connect your B4A Client to the Public IP and port and the connection will be established successfully

**Very important :

Because this is Voice Over internet protocol meaning there will be huge and constant sending/receiving Packets so your server has to be really good and the internet speed has to be really high, in our case we tested it using (Server):
1- 64 GB RAM
2- 1GB Internet Speed

:)

Thank you,
Saif

Hi Saif, what you mean exactly with 1GB Internet Speed ?
Your connection to internet send/receive at 1 gigabyte/sec ???

In Italy we have connections that on average go between 5-10 Mbit / sec and 50-100 Mbit / sec in download
On average 1-5 Mbit / sec and 10-20 Mbit / sec in upload
Do you think it is sufficient for a communication of 2-3 telephone lines?
 

sfsameer

Well-Known Member
Licensed User
Longtime User
Hi Saif, what you mean exactly with 1GB Internet Speed ?
Your connection to internet send/receive at 1 gigabyte/sec ???
Download speed : 1GB/s
Upload Speed : 600 MB/s

Microsoft Azure provides the highest internet speed compared to other servers providers :)
 

amorosik

Expert
Licensed User
Ah ok, your 1GB/s is 1 gigabit/sec
Truly exceptional performances
I believe available only on large datacenters connected in particular points of the internet
 

sfsameer

Well-Known Member
Licensed User
Longtime User
Ah ok, your 1GB/s is 1 gigabit/sec
Truly exceptional performances
I believe available only on large datacenters connected in particular points of the internet
But it's too expensive to be honest, The more traffic, CPU Usage, Data Storage the more you will pay
We pay around 3000-4000 USD per month for one of the servers (Pay as you go method) because we use it for really heavy duty :)

BTW currently we are in the middle of signing a contract with a telecommunication company and we will be releasing our own VPS servers very soon which will be 8GB RAM, 4Core, 180GB SSD for only 35$ (Special Price for B4X Members only ;)
 

Xfood

Expert
Licensed User
thanks Saif, this project is truly fantastic, you did a great job as always, too bad I'm out today, it's a national holiday in Italy, tonight as soon as I get back I put everything on and start configuring the clients,
Thanks Saif, and thanks also to your team
 

amorosik

Expert
Licensed User
I have a little curiosity that I have not yet satisfied
I see that in your systems the graphical interfaces are always made via code
Probably using a tool that recreates the graphical interface used in lines of code
I can't understand what the real usefulness is in this working method In doing so
However, it becomes impossible to make changes to the form/control if not recreating it with components that have the same name
Exactly, why do you create graphical interfaces from code and not using the designer?
 

sfsameer

Well-Known Member
Licensed User
Longtime User
I have a little curiosity that I have not yet satisfied
I see that in your systems the graphical interfaces are always made via code
Probably using a tool that recreates the graphical interface used in lines of code
I can't understand what the real usefulness is in this working method In doing so
However, it becomes impossible to make changes to the form/control if not recreating it with components that have the same name
Exactly, why do you create graphical interfaces from code and not using the designer?
We have answered this so many times before ?

We use the code to create the controls because it gives us more power to control how the project is displayed, also i have been using B4X since the beginning and when Basic4android (back then it was basic4android) the code was more powerful than the Designer, and since that day i have been using the code to create the views, also i hate the (Drag & Drop) :)

But in the future releases of the other projects we will be using the Layouts because it's been requested by almost everyone ?
 

amorosik

Expert
Licensed User
We have answered this so many times before ?

We use the code to create the controls because it gives us more power to control how the project is displayed, also i have been using B4X since the beginning and when Basic4android (back then it was basic4android) the code was more powerful than the Designer, and since that day i have been using the code to create the views, also i hate the (Drag & Drop) :)

But in the future releases of the other projects we will be using the Layouts because it's been requested by almost everyone ?

Ok, i'm sorry a don't have seen the question/answer
Can i post a most difficult question? ?
 

sfsameer

Well-Known Member
Licensed User
Longtime User
Ok, i'm sorry a don't have seen the question/answer
Can i post a most difficult question? ?
Your question : Why do we always use the code to create the design
Our Answer : We always use the code because it give us more power to control how the design is displayed
and in the future when we release new projects we will create the designs in the designer not in code

:)
 

amorosik

Expert
Licensed User
Yes I understand the answer
I meant something else, I wanted to ask if there are any forecasts for the possibility of connecting the server to a gateway with the public telephone network
To allow software clients to call and receive calls on the public telephone network
 

sfsameer

Well-Known Member
Licensed User
Longtime User
Yes I understand the answer
I meant something else, I wanted to ask if there are any forecasts for the possibility of connecting the server to a gateway with the public telephone network
To allow software clients to call and receive calls on the public telephone network
If you mean that if you could use it as a public service provider then it's already been answered here with the steps:

:)
 

amorosik

Expert
Licensed User
If you mean that if you could use it as a public service provider then it's already been answered here with the steps:

:)


No, I mean that currently individual clients can call and be called by other clients
Comparing the system to a classic telephone system, we have the switchboard (b4j server), we have the extensions (the android clients), but we do not yet have the external trunks
Where by 'external trunk' I mean the connection of the server with services/devices that allow the pbx to communicate with the public telephone network
An example of a service that allows you to do this in Italy is Messagenet
An example of a device that allows you to do this is the Patton 4552 to connect a voip pbx to an isdn telephone line
So what I meant to ask is when it will be possible to connect the server to a service/device that allows the sending/receiving of calls on the public telephone network
 

sfsameer

Well-Known Member
Licensed User
Longtime User
No, I mean that currently individual clients can call and be called by other clients
Comparing the system to a classic telephone system, we have the switchboard (b4j server), we have the extensions (the android clients), but we do not yet have the external trunks
Where by 'external trunk' I mean the connection of the server with services/devices that allow the pbx to communicate with the public telephone network
An example of a service that allows you to do this in Italy is Messagenet
An example of a device that allows you to do this is the Patton 4552 to connect a voip pbx to an isdn telephone line
So what I meant to ask is when it will be possible to connect the server to a service/device that allows the sending/receiving of calls on the public telephone network
Because we don't have that external device so we can't be 100% sure, but if you do have it then please do test it and if you faced any problem let us know and we will try to help you set it up
 

amorosik

Expert
Licensed User
Because we don't have that external device so we can't be 100% sure, but if you do have it then please do test it and if you faced any problem let us know and we will try to help you set it up

It is not necessary to have a hardware device available

A very important first step could be the realization of the communication between b4j servers with a voip service provider
For example, on https://www.messagenet.com/voip/ it is possible to register for free and obtain a telephone number and an account for accessing Messagenet voip systems.
Already only with this it is possible to test the registration of the b4j server on Messagenet systems
With the free account it is already possible to receive calls from any phone in the world
With a small fee (6- euro) it is possible to activate the account also for calls to the outside

As for the hardware devices, I can directly access systems that have a Grandstream HT503 and a Patton 4112 and therefore I can help in debugging and checking operation.
I'd like to do the above things myself but I don't know where to put my hands in the code

With access to the public telephone network, the system built in the B4X environment would become a real voip pbx, currently still with modest functionality, but certainly a new entry in the world of voip telephony with great potential, and above all with a faithful and powerful community
 
Last edited:

sfsameer

Well-Known Member
Licensed User
Longtime User
It is not necessary to have a hardware device available

A very important first step could be the realization of the communication between b4j servers with a voip service provider
For example, on https://www.messagenet.com/voip/ it is possible to register for free and obtain a telephone number and an account for accessing Messagenet voip systems.
Already only with this it is possible to test the registration of the b4j server on Messagenet systems
With the free account it is already possible to receive calls from any phone in the world
With a small fee (6- euro) it is possible to activate the account also for calls to the outside

As for the hardware devices, I can directly access systems that have a Grandstream HT503 and a Patton 4112 and therefore I can help in debugging and checking operation.
I'd like to do the above things myself but I don't know where to put my hands in the code
Your question has 2 points :

1- First point is : is there a way to call another client even if he/she are not connected to the same B4J server?

I think you would be able to do the above. but you will have to test it and make some changes in the source codes.

Could you please test the following scenario :

1-Register the B4A client to the B4J Server
2-Call a client that is connected to another service provider (You will have to edit the source code to enable the srvVoIPSIP service to read the client's IP and Port)

And see if it calls the client even if the client is not connected to same B4J Server

2- Second Point : How to receive phone calls from a normal call (Telecommunication service provider) to the B4A client SIP?
To enable this feature you will have to make deals with the telecommunication companies and it's not free to do that, that's why even "messagenet" charges for 6-euro for the calls because it's not free and they will have to pay for the service provided to the telecommunication company

And to take this further :
you could easily get a virtual phone number (not free) online and connect it your B4A app and resell the service, this way you will be just like "messagenet"
 

amorosik

Expert
Licensed User
Thank you for the invitation to create the required components independently
But I repeat I don't know where to start
When you write

"..2-Call a client that is connected to another service provider (You will have to edit the source code to enable the srvVoIPSIP service to read the client's IP and Port) .."

what do you mean exactly?
I mean, in the VOIP SIP SDK project every Android client communicates with the Bj4 server, how is it possible to call another client that hasn't registered yet?
I imagine that a Voip provider, for example Messagenet.com, from the logical point of view is seen as a 'sip server' by the clients who have to register on it before being able to use its services
But a mobile phone, for example mine phone, never registers on the messagenet servers, and therefore even assuming that from my B4J server it manages to register me on the Messagenet.com sip servers, but how to call my phone number mobile phone?
 

LucaMs

Expert
Licensed User
Longtime User
We use the code to create the controls because it gives us more power to control how the project is displayed
Using Designer plus its script engine you have at least the same "power" and in addition the advantage of seeing immediately what you will get (not a complete wysiwyg but anyway a very useful thing).

also i hate the (Drag & Drop)
"Drag & drop" was the best invention since mouse!
 
Top