tags:

views:

748

answers:

5

What all would be the requirements for the following scenario:

A GSM modem connected to a PC running a web based (ASP.NET) application. In the application the user selects a phone number from a list of phone nos. When he clicks on a button named the PC should call the selected phone number. When the person on the phone responds he should be able to have a conversation with the PC user. Similarly there should be a facility to send SMS.

Now I don't want any code listings. I just need to know what would be the requirements besides asp.net, database for storing phone numbers, and GSM modem.

Any help in terms of reference websites would be highly appreciated.

+1  A: 

I'll pick some points of your very broad question and answer them. Note that there are other points where others may be of more help...

First, a GSM modem is probably not the way you'd want to go as they usually don't allow for concurrency. So unless you just want one user at the time to use your service, you'd probably need another solution.

Also, think about cost issues - at least where I live, providing such a service would be prohibitively expensive using a normal GSM modem and a normal contract - but this is drifting into off-topicness.

The next issue will be to get voice data from the client to the server (which will relay it to the phone system - using whatever practical means). Pure browser based functionality won't be of much help, so you would absolutely need something plugin based.

Flash may work, seeing they provide access to the microphone, but please don't ask me about the details. I've never done anything like this.

Also, privacy would be a concern. While GSM data is encrypted, the path between client and server is not per default. And even if you use SSL, you'd have to convince your users trusting you that you don't record all the conversations going on, but this too is more of a political than a coding issue.

Finally, you'd have to think of bandwidth. Voice uses a lot of it and also it requires low latency. If you use a SIP trunk, you'll need the bandwidth twice per user: Once from and to your client and once from and to the SIP trunk. Calculate with 10-64 KBit/s per user and channel.

A feasible architecture would probably be to use a SIP trunk (they optimize on using VoIP as much as possible and thus can provide much lower rates than a GSM provider generally does. Also, they allow for concurrency), an Asterisk box (http://www.asterisk.org - a free PBX), some custom made flash client and a custom made SIP client on the server.

All in all, this is quite the undertaking :-)

pilif
A: 

You'll need a GSM library. There appear to be a few of these.
e.g. http://www.wirelessdevstudio.com/eng/

seanyboy
A: 

@pilif

What is SIP?

Codeslayer
A: 

@Codeslayer SIP (Session Initiation Protocol) is a protocol for signalling VoIP calls. Asterisk is a PBX software solution which can speak with various SIP clients and servers and also provides a nice API to hook into.

So in the end, you'd probably have a better solution overall if you get a SIP trunk, hook up an Asterisk box and talk to that using its API.

This will be much cheaper to operate than a GSM solution, but of course, it'll require the server to be connected to the internet.

pilif
A: 

Have a looke at the Ekiga project at http://www.Ekiga.org. This provides audio and or video chat between users using the standard SIP (Session Initiation Protocol) over the Internet. Like most SIP clients, it can also be used to make calls to and receive calls from the telephone network, but this requires an account with a commercial service provder (there are many, and fees are quite reasonable compared to normal phone line accounts).

Ekiga uses the open source OPAL library to implement SIP communications (OPAL has support for serveral VoIP and video over IP standards - see www.opalvoip.org for more info).