Asterisk Et Le GSM
Asterisk Et Le GSM
Asterisk Et Le GSM
1 sur 8
home
http://www.stocksy.co.uk/articles/Networks/use_an_old_mobile_phone_...
stocksys
contact
about
archive
rss
wiki
stocksy.co.uk
Se arch
the Web
Ca rs
Automotive Gynaecology
Cy cli ng
Dolan Multicross
Like most people I carry a mobile phone, but mine is for emergencies only. Just a
handful of people know the the number and that's how I like to keep it. Because
I use Asterisk, I'm always reachable through my land line number which I route
around between various destinations or voicemail depending on what suits me.
I'm spoilt by this, so having my mobile phone ring unexpectedly at an
inconvenient time is a bit intrusive.
are Scammers
using a 'personal use' 070 number which is designed for precisely the kind of
provider, who would then route the calls to my Asterisk server across the
premium-rate scams. For example, the number couldn't be dialled from T-Mobile
or Orange. Shame.
CR520/CR720
Undeterred, I tried another approach. I now have an old spare mobile phone
to Asterisk. This is a real mobile with a real mobile number. I simply feed any
Li nux
which never leaves the house and is permanently connected through bluetooth
incoming calls to this mobile into a macro which handles the call in the same way
as calls to my landline. If I want to take calls on my (real) mobile, I can. If I'm
not available to take the call, the caller is passed to my Asterisk voicemail box.
SMS text messages arrive as emails, my replies to which are sent by SMS.
Having all my incoming calls and voicemail messages in one place is very
convenient and it prevents me from missing calls when I am in the house and
probably would not hear a mobile phone ringing.
Asterisk has included support for bluetooth connections to mobile phones and
headsets for some time now. This is accomplished through chan_mobile. Not all
phones are supported, so it's worth taking a look at voip-info.org's page which
lists the confirmed compatible dongles and phones. I am getting good results
with a D-Link DBT-120 dongle and a Nokia E72, 6306i, 6021 handsets, however
20/07/2016 12:42
2 sur 8
http://www.stocksy.co.uk/articles/Networks/use_an_old_mobile_phone_...
only the 6021 works with SMS. It is worth noting that each bluetooth dongle can
Domains
Tecra S1
Mac
Essential OS X Applications
M is cella neo us
# vi /usr/src/asterisk-1.8.11.0/addons/chan_mobile.c
Find this:
addr.rc_channel = (uint8_t) 1;
Replace with:
addr.rc_channel = (uint8_t) 0;
painlessly through the CLI. First, make your phone discoverable and then scan
for it:
# hcitool scan
Scanning ...
EC:1B:6B:64:C2:88
Trollphone
Make a note of the MAC address. In order to pair, a helper is required to handle
the PIN. Run the helper in the background and begin the pairing process:
# bluetooth-agent 7472 &
Recording TV
Once the pairing has succeeded, make sure your phone is configured to
Airport
N etwo rks
automatically accept connections for this paring in future. You can verify that the
# hcitool con
Connections:
Now, Asterisk needs to be configured to use the paired phone. We need to know
chan_mobile:
FreeBSD router)
on the Cheap
which rfcomm channel offers the voice service. The easiest way is to use
# rasterisk
20/07/2016 12:42
3 sur 8
EC:1B:6B:64:C2:88 Trollphone
# hcitool dev
Devices:
hci0
00:81:C5:33:25:A4
At last we have all the information needed. Edit or create the chan_mobile
configuration file:
[Adapter]
Ads by Google
# vi /etc/asterisk/chan_mobile.conf
FXS Card
Phone
address of the bluetooth dongle installed in the Asterisk server. Exit the Asterisk
Yes
http://www.stocksy.co.uk/articles/Networks/use_an_old_mobile_phone_...
address = 00:81:C5:33:25:A4
id = pabx
[Trollphone]
address = EC:1B:6B:64:C2:88
port = 2
context = from-trollphone
adapter = pabx
You will need something in the dialplan to handle this, at minimum something
like:
# vi /etc/asterisk/extensions.conf
[from-trollphone]
Trickier, but there is a solution. None of the phones I had spare were supported
three phones are known to support SMS: the Nokia models E51, 6021 and 6230i.
Of the three, the 6021 seems to be the most widely available - I was able to get
three of them from eBay for just a few pounds.
Once the phone is paired in the normal way, it will send any incoming SMS
messages to Asterisk over the bluetooth connection. Asterisk looks for an 'sms'
At first, incoming messages were all arriving with a blank ${SMSSRC}, the easy
solution was to apply a patch and re-compile:
20/07/2016 12:42
4 sur 8
http://www.stocksy.co.uk/articles/Networks/use_an_old_mobile_phone_...
# cd /usr/src/asterisk-1.8*
system to have a working MTA, the setup of which I won't cover here. If you
don't have an MTA at present, take a look at postfix.
Outgoing SMS messages are more work because it's necessary to parse the
contents of the email message, the format of which will be a little less
#!/usr/bin/env python
# (:? YOUR SCRIPT IS BAD AND YOU SHOULD FEEL BAD! (:?
# I'M NOT A DEVELOPER AND THIS IS PROBABLY VERY, VERY BAD, but it does work.
# email2sms.py James Stocks
2012-04-28
import sys, time, email, email.Message, email.Errors, email.Utils, smtplib, os, sock
from datetime import date
# Generate a random number as a string. We'll use this for file names later on
callnum = str(random.randint(1, 100000000))
# Taken from here, with thanks -
# http://ginstrom.com/scribbles/2007/11/19/parsing-multilingual# email-with-python/
if message.get_content_charset():
return message.get_content_charset()
if message.get_charset():
return message.get_charset()
return default
# Taken from here, with thanks -
# http://ginstrom.com/scribbles/2007/11/19/parsing-multilingual# email-with-python/
def get_body(message):
'plain')]
20/07/2016 12:42
5 sur 8
http://www.stocksy.co.uk/articles/Networks/use_an_old_mobile_phone_...
body = []
body.append(unicode(part.get_payload(decode=True),
charset,
"replace"))
return u"\n".join(body).strip()
else: # if it is not multipart, the payload will be a string
# representing the message body
body = unicode(message.get_payload(decode=True),
get_charset(message),
"replace")
return body.strip()
emailmsg = email.message_from_string(raw_msg)
# Extract database Fields from mail
msgfrom = emailmsg['From']
msgto =
emailmsg['To']
msgsubj = emailmsg['Subject']
msgbody = get_body(emailmsg)
# Find the part of the 'To' field that is the phone number
phonenum = re.match( r'\+?([0-9]+)', msgto, re.M)
# Whose mobile is this?
mobile = sys.argv[1]
s.send('Action: login\r\n')
s.send('Action: originate\r\n')
20/07/2016 12:42
6 sur 8
http://www.stocksy.co.uk/articles/Networks/use_an_old_mobile_phone_...
sleep(1)
s.send('Action: Logoff\r\n\r\n')
s.close()
Copy the above script to /usr/sbin/email2sms.py and make executable:
# chmod +x /usr/sbin/email2sms.py
The script uses the Asterisk Manager Interface, so it will need an AMI user.
Append this to manager.conf:
# vi /etc/asterisk/manager.conf
[your-ast-man-user]
secret=dysmsdvsa
read=call,user,originate
write=call,user,originate
and also make sure it is enabled in the general section:
# vi /etc/asterisk/manager.conf
[general]
enabled = yes
webenabled = yes
port = 5038
You'll note that I'm using the context 'mobiles'. You'll need to make sure that the
extensions you'll be using exist in this context in extensions.conf:
# vi /etc/asterisk/extensions.conf
exten => stocksy,1,MobileSendSMS(JS6021,${SMSTO},${SMSBODY})
NoOp isn't quite sufficient, I could only get it to work if the extension answered
and then did something, in this case answer and wait 10 seconds:
# vi /etc/asterisk/extensions.conf
[sms-dummy]
So, calling email2sms.py with the argument 'stocksy' uses the JS6021 mobile,
and calling it with 'karen' uses the trollphone mobile.
You need to make sure that email for the domain you have chosen - in my case
sms.stocksy.co.uk - is routed to the Asterisk box. This will normally be
Assuming that you are using postfix, you'll need a new transport for each mobile
you want to use. In my case:
# vi /etc/postfix/master.cf
sms-stocksy unix -
pipe
20/07/2016 12:42
7 sur 8
http://www.stocksy.co.uk/articles/Networks/use_an_old_mobile_phone_...
pipe
postfix needs to know that it must use these transports for SMS domains:
# vi /etc/postfix/transport ; postmap /etc/postfix/transport
sms.stocksy.co.uk sms-stocksy
sms.herdomain.co.uk sms-karen
If postfix doesn't already have a transport_maps setting, create one. Obviously
this could break any existing postfix setup you might have, but if so I'm
expecting you to know what you're doing:
# postconf -e transport_maps=hash:/etc/postfix/transport
Restart postfix and that should be all that's necessary.
# /etc/init.d/postfix restart
You need to satisfy yourself that you are not allowing the entire world to
relay through your SMS gateway! Understand and make use of postfix's
security features! Don't wait until you've racked up a collosal SMS bill! Loud
noises!
Username: your-ast-man-user
Secret: dysmsdvsa
Action: originate
Channel: LOCAL/1@sms-dummy
Context: mobiles
Exten: stocksy
WaitTime: 30
CallerId: 5555
Async: true
Priority: 1
Variable: SMSTO=5555555555,SMSBODY="foo"
Action: Logoff
Watch out for whitespace in the AMI - exten 'stocksy' != 'stocksy '.
Good luck.
20/07/2016 12:42
8 sur 8
http://www.stocksy.co.uk/articles/Networks/use_an_old_mobile_phone_...
New Comments
9 Comments
Sort by Oldest
sasikarans
James Stocks
vpn4voip_net
thanks for your nice post. now I would like to forward the call to
another mobile.
Like when asterisk get a call it goes to a mobile. then the mobile will
call the destination number.
So the mobile will act like a GSM gateway.
I would like to use the Mobile as 1 Port GSM Gateway?
How can I do that?
James Stocks
home
stocksys
contact
about
archive
rss
wiki
20/07/2016 12:42