Telecomtastic

Hello Guys, I was wondering if anyone could help me with a couple of nerdy questions.  I have been watching the show from some time and figured that you guys might have some good ideas for a couple of problems I am trying to solve.

In the UK you can get Caller display on your phones.   The question is, is it possible / does anyone know a way, which can retrieve this caller display information via maybe C# based API and a fax Modem?

http://bt.custhelp.com/app/answers/detail/a_id/8502/~/what-is-caller-display%3F

I was thinking maybe I could use a fax Modem:

http://www.amazon.co.uk/Usrobotics-V-92-Express-Faxmodem-Usr5638/dp/B0049U94XG/ref=sr_1_10?s=electronics&ie=UTF8&qid=1377777678&sr=1-10&keywords=us+robotics+fax+56k+modem

 

The goal, when someone calls the line, the PC will recognise the number and pull up a database file for that person (using the c# api). 

 The second question, is – does anyone know any good Fax modem software – something that can manage voice mail, with say Press 1 for inbox 1, 2 for inbox 3 etc.  Store faxes etc.   I’m looking to decommission an old fax machine and I’ve struggled to find much information on using Modems.   It seems this was trivial to do back in 1994.  But there seems to be limited amount of information on Fax modem software these days.

 My final question,   is there a cheap way, to setup a bridge between regular landline and PC based VOIP system.  I.e.  Landline comes into a host PC, when It rings, the call will be routed to client desktop PCS and connected by the first person who answers.   This is area I know little about,  were should I start looking, what should I be searching for.

 All these questions come from a perspective someone who setting a small customer facing based business. With 2-3 people answering phones.  In this environment, I would like to use open source technology solutions so the customers we are serving get the smoothest experience possible.

 Any advice, pointers would be much appreciated.

 

PS.  I'm happy to move / for this to be moved to more suitable forum on here, I just didn't know which one to pick :)

This is an issue I have had to deal with for the FOSS office integration software I've made and that is used as a starting point to build custom software environments for customers, because one of the main functions is that when someone calls, the secretary sees info on that customer, the pending cases and the case managers, and also sees the email address and the invoice payment status.

If it's an ISDN line, there is no problem, because the data format of the callerID info is known, and you can easily pull it from the digital interface board. That's well documented, so I guess that's not your use case scenario, otherwise you'd have found that.

The other possibility is to retrieve the callerID from the modem (the modem has to support callerID). There are multiple ways to do this, depending on the use case scenario. If it's in a company installation where you also provide the communication splatform, the easiest solution is to get an analogue interface board (like the ones cisco sells), and just use asterisk to retrieve the callerID data from the modem through that. If you don't use an asterisk install, and want to go into the modem directly, you can retrieve the data with vgetty or mgetty, but the problem is that every modem (insofar it supports callerID), uses a different register and different trigger, so that means a case dependant script and a lot of research.

If you don't provide the telecom platform, and still want to implement a network solution with a virtual office software product, and use a digital telecom interface (either a digital telecom interface board or a modem) directly to the telecomunications server, and you have a compatible device, the easiest way is to integrate NCID packages into your software. These consist of the NCID server package and the client package, whereby the server goes on the box that is connected to the digital telecom interface (like a modem or a digital interface board), and the client packages go on the client computers. There is a gnome applet that provides all the information directly to the right people over the network in real time, and that is a great timesaver and offers great functionality. It's all in the fedora/redhat standard repos, just search for "ncidd" for the server package and you can go from there. The client package is even available as a Cygwin dll for clients that run windows, so that they are not hindered by their lack of modern software compatibility.

If there is no digital telecom interface board, and the company that needs the solution doesn't have a compatible modem, I use a very simple solution, namely you can buy cheap chinese callerID interface kits that connect with a serial interface of sorts that can be connected to either an RS-232 or a USB port of the communications server, and those are almost always based on a pretty standard open source design that can be integrated in either asterisk if you provide the communications platform yourself, or in ncidd if you use an existing telecom routing system, just look for the board reference or chip reference on google and the info will pop up, there are only a few designs around.

If there is anything specific, I can probably give you more info on what you need. For the modem you mentioned above, I would use ncidd on the telecom server, probably the same machine that serves the database, and ncid-client on the client computers, with ncid-client-applet to have an instant GUI for the users. You can retrieve the callerID variable from ncidd, and script your ncid-clients to query your database for the callerID string, and even echo it directly in the applet if you want.

 

1 Like

Wow, Zoltan, that’s a pretty damn comprehensive answer – with lots of things for me to research.

 It will probably help if I give you some more background on my knowledge, and maybe from that, if you guys are willing you can channel me a bit more.

The solution is going to be used as for small business which I am ultimately taking over.   The business is my Fathers – selling spare parts for cookers.  Just using standard landline telephone as it stands.

My background – is ultimately game development, with 10 years working as a designer / producer / project manager.

I’m looking to bring technical edge to the company – suitably enhancing it Ecommerce presence and massively improving our customer relations by having a fully integrated customer relations management system.

My skills,  strong C++, C#, PHP, etc etc – and I would feel pretty confident building CRMS system, but the black hole is the telecommunications side.   So I would very much need a ‘for dummies’ approach.  Or is there an ‘off the shelf’ one I should ‘just use’.

I am also aware – that many cost effective solutions can be found, if you know where to look in the right place.  It sounds like the “Chinese callerID interface kits” is right up my street.    Where would I start if I wanted to learn more about this avenue?

I more than aware I’m running into a field of ignorance right now, but a hot list of – search for this, look for this, read this, list would be good.   As it sounds like a very exhaustive topic.

My two big take away’s are

                Research using asterisk to retrieve caller ID’s

                Research NCID

 Is there anything else I should look into?

In that particular use case scenario, with a single PSTN line, the lowest cost possible full option solution in my opinion is to use Asterisk on a Raspberry Pi or Beagleboard Black and an analog adapter like the Cisco SPA3102, which costs less than 50 quid, and you don't really need anything else, if you use a fax you can keep the fax functionality directly on the incoming PSTN and let the fax take the faxes and switch to the SPA3102 for the rest. Obviously you can't connect a PSTN line directly to a RaspPi like you can with a VOIP, so the analog adapter transforms the PSTN line into a SIP line so that the RaspPi with asterisk can deal with it like a SIP trunk. This has a few advantages: e.g. you can automatically rout the lowest cost telecom service, including VOIP, and it's compatible with a relatively low cost Huawei SIM box that works really well, for cheaper mobile phone communications and integration of mobile phones into asterisk. A RaspPi can handle about 10 simultaneous full function calls despite of the low processing power and RAM, so it's plenty for your application.

Check out the wiki.asterisk.org, there are plenty of CallerID variables that asterisk stores and that you can use for further database linking, and you can modify or add existing or new variables.

Asterisk uses it's own scripting language AEL, but as a game developer you probably can work with lua without much difficulties, and that is a great tool for automating and manipulating dialplan scripts. Lua can be used for scripting all asterisk functionality, and you can even use existing AEL scripts by asterisk devs in combination with your own lua scripts.

Asterisk is not hard to set up and tweak for exactly the functions that you want, with easy integration of voice recording, least-cost routing, rerouting, outgoing callerID manipulation (for example what I do, everyone in my office dials out with a low cost SIP service, and the outgoing callerID is the mobile number of the person that makes the call, so that customers can immediately store the right number for a better service experience. Incoming calls in my offices come through ISDN or PSTN, depending on the location, asterisk rerouts the calls depending on what number was called and the person that calls the number. If it's a callerID from a case I manage for instance, and the number of the other office is called, it will patch through to my mobile phone over VOIP, so without extra cost. For every scenario, you add a dialplan, which is very easy to do, and asterisk executes the dialplan that corresponds with the use case.

It's very powerful, very stable, it runs on very cheap very low power hardware, and is very reliable. I'm running asterisk on my communications server, which is low power Atom-based, and also acts as a database server for timesheet based invoicing, and making invoices is completely automatic and takes no time at all. Once a month, I just print them out from consolidated data in the database, check them, and let the secretary put them in the mail.

The possibilities are endless, and easy to implement, especially in a small business with a limited number of lines. For bigger installations, which I have to implement regularily, there are some more tricks necessary to make stuff work and there is above all much more hardware that needs to work together with everything else, but in your case, you are completely spared of all that headache lol.

Asterisk on a rasppi is a universal low cost very reliable solution, in Germany, people, even in private houses, that have multiple lines in the house connected to a single ISDN line, don't pay extra for that service to the telecom provider, but have to use a compliant PBX, and that's expensive hardware, and owned by the subscriber, so if it breaks after 10 years or so, they need to replace it and buy it full cost, which is about 400-500 quid installed. Enter the RaspPi, a FritzBox (yeah, it's called like that, I can't help it, those Germans right?) ISDN to SIP adapter, and half an hour of installing and configuring linux and asterisk on the rasppi and adding the VOIP contacts of the people that live there, and they're good to go for another 10 years for under a 100 quid on materials and 50 quid of service fee. We've done a dozen of these in private homes in the last 10 months or so, even with wireless phones, not had a single complaint or problem, people are very enthusiastic about it, because the audio quality is much better than an analog PBX, because the signal is immediately converted to digital at the PSTN entry point, and because there is less switching and routing lag, less clicks and switching noises, and they just have to use their phone like before, but save on communications costs by using SIP communications without even realizing that they are, it's just a great simple upgrade.

1 Like

Awesome stuff, thanks Zoltan!