The reason for this message is that recently no less than THREE services have popped up that allow “free” calls to various international points. There are all based in the U.S. state of Iowa, and the way they work is that you call a regular number in Iowa, wait for a prompt, then dial the number you want to call. As best anyone can determine, there must be some quirk in Iowa telecommunications law that allows them to charge higher than normal termination charges on connected calls, and they use VoIP to complete the calls, so they actually wind up making anywhere from a fraction of a cent to a few cents on each minute of use. If the Federal Communications Commission ever reforms the ridiculous compensation system we have here, these companies will probably be out of business overnight.
But for now, if you have “free” calling within the USA, and can place calls to these Iowa numbers, you can then get connected through to numbers in other countries, including Mexico (which is a fairly high cost call on many U.S. long distance plans) at no additional charge.
The challenge, then, is whether FreePBX can work in this manner. Assuming a user dials an international call to certain countries, select an outbound trunk (that allows completion of U.S. calls) and then do the following:
- Connect to a particular U.S. number (NOT the number dialed by the user),
- Wait for the other end to answer, then wait until it is ready to receive digits (a couple seconds timeout may work),
- Send DTMF tones, possibly interspersed with waits, to the other end, representing the number the caller originally dialed, but the number MIGHT have to be massaged a bit. For example, if the caller is in a country where you dial 00+country code+number and the U.S. system expects 011+country code+number, you’d need to strip the “00” and add the “011.” Also I believe one of the systems has an initial prompt that is something like “press 1 for English, press 2 for Spanish” so in some cases there may be a need to prepend additional digits and/or wait states.
Now, have determined that it IS possible to have Asterisk send post-connect DTMF digits and waits. For example, if you were to add this to extensions_custom.conf:
[code:1]exten => *20,1,Dial(Local/[email protected],D(wwww932))
exten => *20,2,Hangup[/code:1]
Assuming you had a route for U.S. 1-800 numbers, when the user dials *20 it would place a call to the “TellMe” service, then wait two seconds, then send DTMF for 932 (“WEA”) which would take you directly to the WEAther forecast section (to further automate it for a particular location, you could add a few more waits after the 932, and then a five-digit U.S. zip code). The point is that the caller never hears the tones that are being sent because the audio path doesn’t connect until after the digits have been sent (which would make this technique useful for sending account codes, etc.)
I will list a few of these “free” international call services below. Remember that the numbers you have to call are NOT toll free, so they are only “free” if you have unlimited U.S. calling, or are using a cell phone with “free” airtime, etc. Also, I have no connection to any of these companies, so I cannot say whether they might save the calling or called numbers for any reason - obviously if you are highly concerned about privacy of communications, you would want to investigate these services further before using them.
FuturePhone.com - free international calls to over 50 countries.
FreeCallsToMexico.com - free international calls to Mexico, Canada, China, The UK, Singapore, Korea (Seoul), Hong Kong Mobile, Argentina (Buenos Aires) and Germany.
CallChinaForFree.com - free international calls to China and Hong Kong, as well as Singapore and Singapore mobile numbers.
Before you could make a transparent pass-thru to any of these services, you’d likely have to place a few manual test calls, listen to the prompts and find how what they want to have entered, and when. Still, for those that have high calling volumes to one of these countries, it might be worthwhile to figure out.
Alternately, if you have only one or two international numbers you call, you could simply create a custom extension for each of the numbers in extensions_custom.conf (as I did in the example above), and set up the DTMF string to insert the requisite waits and prompt responses, and then dial the number for your friend or relative, etc.