SMS ins Festnetz

tom-tom

Neuer User
Mitglied seit
18 Okt 2004
Beiträge
163
Punkte für Reaktionen
0
Punkte
0
Hallo VoIPler,

ich versuche grade meinen Asterisk zu erklären das er auch SMS senden kann, nur ist er z.Z. etwas störisch.
Habe schon unter
http://www.automated.it/asterisk/sms.html und
http://voip-info.org/wiki/view/Asterisk+cmd+sms geschaut aber noch keine Lösung gefunden.
Mir ist immer noch nicht klar wie ich das Service Center der T-Com setzen kann.
Leider haben die bisheriegen Threads im Forum noch nichts gebracht :-(

Hat das jemand von euch SMS grade am laufen und kann mal seine config Posten?

Verwendet wird der aktuelle Bristuff mit HFC Karte unter Debian
 
ist recht einfach ;)

du erzeugst ein callfile mit dem Channel zu Service Center der T-Com und der context ist dein context zu senden von sms

z.B.

[smsdial]
exten => _X.,1,noop(Send SMS to ${EXTEN} - ${CALLERIDNAME})
exten => _X.,2,SMS(default,s,${EXTEN},${CALLERIDNAME})
exten => _X.,3,SMS(default,s)
exten => _X.,4,Hangup


${CALLERIDNAME} ist der SMStext
 
chaos2000 schrieb:
ist recht einfach ;)

du erzeugst ein callfile mit dem Channel zu Service Center der T-Com und der context ist dein context zu senden von sms

z.B.

[smsdial]
exten => _X.,1,noop(Send SMS to ${EXTEN} - ${CALLERIDNAME})
exten => _X.,2,SMS(default,s,${EXTEN},${CALLERIDNAME})
exten => _X.,3,SMS(default,s)
exten => _X.,4,Hangup


${CALLERIDNAME} ist der SMStext

Ok den Kontext verstehe ich, nur verstehe ich nicht wie ich meine 3 Variablen "Service Center", "Sms Text" und "Handy nummer" angeben muss.

Oder ist exten die Handynummer? Und ich muss in einer Config die "Service Center Nummer angeben" ?
 
Du erzeugst ein Call file:

Code:
Channel: CAPI/contr1/servicenummer
MaxRetries: 2 
RetryTime: 60 
WaitTime: 30 
Callerid: "NACHRICHTENTEXT" <ABSENDERNUMMER>
Context: smsdial
Extension: EMPFÄNGERNUMMER
Priority: 1
 
Danke für die Antwort. Schreibe ich das Call file in /var/spool/asterisk/outgoing
führt asteriisk das auch brave aus:

-- Attempting call on ZAP/G1/0193010 for "Handynummer"@smsdial:1 (Retry 1)
-- Requested transfer capability: 0x00 - SPEECH
-- PROGRESS with cause code 0 received
-- Hungup 'Zap/31-1'

Nur schickt er keine SMS :-(
 
Nimm mal die option s raus.
Leider kann ich es nicht extern testen, da ich arcor kunde bin und die telnummer für mich nicht erreichbar ist
 
Auch das hilft leider nicht.
 
ich denk das problem liegt bei SPEECH; soweit ich mich erinnere weden SMS im D-Kanal übermitteld - bitte verbessert mich wenn ich mich irre
 
Und das bedeutet für mich?
 
chaos2000 schrieb:
ich denk das problem liegt bei SPEECH; soweit ich mich erinnere weden SMS im D-Kanal übermitteld - bitte verbessert mich wenn ich mich irre

Das ist nur halb richtig. SMS im GSM Netz werden über die Steuerkanäle übertragen. Diese sind mit dem D-Kanal bei ISDN vergleichbar. Für SMS im Festznetz wurde allerdings auf eine Fax-ähnliche Technik zurückgegriffen um die SMS zu übermitteln. Das heißt es wird ganz normal im B-Kanal übertragen. Diese Wahl wurde getroffen um keinen unterschied zwischen analogem und digitalem Festnetz machen zu müssen.

Das heißt aber leider auch, dass alle Probleme vom Faxen auch auf die Festnetz-SMS zutreffen. Damit eine SMS erfolgreich übermittelt werden kann ist eine genaues Timing wichtig, Echo-Compensation darf nicht eingeschaltet sein und es muss ein verlusstfreier Codec verwendet werden.
 
Ich habe das retry jetzt testweise auf 2 gestell und bekomme folgenden Fehler/Ausgabe:

CLI>
-- Attempting call on ZAP/G1/00193010 for "HANDYNUMMER"@smsdial:1 (Retry 1)
-- Requested transfer capability: 0x00 - SPEECH
-- PROGRESS with cause code 0 received
-- Hungup 'Zap/31-1'
-- Attempting call on ZAP/G1/00193010 for "HANDYNUMMER"@smsdial:1 (Retry 2)
-- Requested transfer capability: 0x00 - SPEECH
> Channel Zap/31-1 was answered.
-- Executing NoOp("Zap/31-1", "Send SMS to "HANDYNUMMER" - TEST 1234") in new stack
-- Executing SMS("Zap/31-1", ""HANDYNUMMER"|TEST 1234") in new stack
-- SMS RX 93 00 6D
-- SMS TX 94 00 6C
-- Channel 0/31, span 1 got hangup request
-- Hungup 'Zap/31-1'

Jemand eine Idee?
 
Geht eigentlich ganz einfach:

Unser Empfangskontext:

[smsreceive]
exten => s,1,Answer
exten => s,2,Wait(3)
exten => s,3,SMS(${CALLERIDNUM},a)
exten => s,4,system(smsq --queue=${CALLERIDNUM} --process=<script>)
exten => s,5,HangUp

Das Skript kriegt Text und Absenderadresse in Umgebungsvariablen übergeben. Das Wait(3) scheint nötig zu sein, mit kürzeren Werten klappt der Empfang nicht immer. Es gibt auf den Telekomseiten auch ein PDF mit näheren Informationen, da wird die Wartezeit auch erwähnt, ausserdem auch Sonderfunktionen wie Quittungen u.a.

Da unsere SMS ausserhalb von Asterisk erzeugt werden, nehmen wir zum senden auch smsq:

smsq --da <empfaenger> --motx-channel Zap/g1/01930100 --motx-callerid <absendernummer> <text>

Das bedürfnis, SMS innerhalb von Asterisk zu erzeugen verspürten wir bisher nicht, die doc/README.sms scheint aber Hinweise zu enthalten.

Ich hoffe, geholfen zu haben.
 
mal ne blöde frage:

klappt das eingentlich nur über ISDN?
ich habe hier mein SMS-fähiges Analogtelefon über einen IAXy-clone angeschlossen
und kann nichts sehen ...

extention.conf
Code:
...
exten => _0193010,1,Macro(sms-out,${EXTEN},${CALLERIDNUM},${CALLERIDNAME})
...
[macro-sms-out]
exten => s,1,NoOp(Transmiting SMS: ${ARG1}, ${ARG2}, ${ARG3})
exten => s,2,Hangup

log
Code:
    -- Accepting AUTHENTICATED call from 62.191.185.14:
       > requested format = ulaw,
       > requested prefs = (),
       > actual format = ulaw,
       > host prefs = (ulaw),
       > priority = mine
    -- Executing Macro("IAX2/siptronic-2", "sms-out|0193010||Frank Office") in new stack
    -- Executing NoOp("IAX2/siptronic-2", "Transmiting SMS: 0193010| | Frank Office") in new stack
    -- Executing Hangup("IAX2/siptronic-2", "") in new stack
  == Spawn extension (macro-sms-out, s, 2) exited non-zero on 'IAX2/siptronic-2' in macro 'sms-out'
  == Spawn extension (home, 0193010, 1) exited non-zero on 'IAX2/siptronic-2'
    -- Hungup 'IAX2/siptronic-2'

wo finde ich denn den SMS text und die rufnummer, oder hab ich das was falsch verstanden ???
 
meine ursprüngliche idee war: wenn ich rufnummer und text habe mittels einem kleinen script das sipgate sms web-interface aufzurufen.
 
dann werd ich mir noch mal selbst helfen :)

Der SMS-Empfang klappt nun. Einfach eine SMS an die Sipgate Nummer
und schon ... "Sie haben Post!"

Bei bedarf muss nur die MessageCenter Nummer im Telefon angepasst bzw. erweitert
werden, damit das Telefon auch auf die SMS reagiert.

Hier meine Version in Perl:

Code:
#!/usr/bin/perl

# extentions.conf:
# <MessageCenter>  depents on your phone settings (e.g. 090032669000 for t-com)
# <Channel>        your local phone (e.g. SIP/phone1)
#
# ...
# [in]
# exten => <sipgate ID>/02212704060,1,Goto(in-sms,s,1) ; incomming SMS via sipgate
# ...
# [in-sms]
# exten => s,1,Answer
# exten => s,2,Wait(1)
# exten => s,3,SMS(${CALLERIDNUM},a)
# exten => s,4,agi(dialin-sms.agi|${CALLERIDNUM}|<Channel>|<MessageCenter>|out-sms) ;
# exten => s,5,Hangup
#
# [out-sms]
# exten => _X.,1,SMS(${CALLERIDNUM},s,${EXTEN},${MSG})
# exten => _X.,2,SMS(${CALLERIDNUM},s)
# exten => _X.,3,Hangup
#

use strict;

my ($calleridnum, $channel, $mc, $context) = @ARGV;

$calleridnum ||= 'smsinfo';      # SMS MTRX file prefix
$channel     ||= 'SIP/phone1';   # your local phone
$mc          ||= "090032669000"; # MessageCenter 090032669000, 01930100 (t-com), 02212704060 (sipgate)
$context     ||= "out-sms";      # outgoing SMS context

my $in_dir  = "/var/spool/asterisk/sms/mtrx";   # incomming SMS dir
my $out_dir = "/var/spool/asterisk/outgoing";   # outgoing callfile dir

my @sms = getsms($in_dir, $calleridnum);

sms2phone($out_dir, $calleridnum, $channel, $mc, $context, @sms)
  or die "could not send SMS to phone $channel";

exit 1;

sub getsms {
  my ($dir, $prefix) = @_;
  my @sms;

  opendir DIR, $dir or die "could not open dir $dir: $!";
  for my $file (
     sort {$a cmp $b}
     grep { /^$prefix\.+/ && -f "$dir/$_" }
     readdir(DIR)
    ) {

    open SMS, "$dir/$file" or die "could not read file $dir/$file: $!";
    my $sms = {};

    # oa=017812345678
    # ud=Hello World
    # scts=2006-03-03T16:20:44
    # dcs=0

    while (<SMS>) {
      chomp;
      my ($k, $v) = split /=/, $_, 2;
      $sms->{$k} = $v;
    }
    push @sms, $sms;
    unlink "$dir/$file" or die "could not remove SMS $dir/$file: $!";
  }
  closedir DIR;

  @sms;
}

sub sms2phone {
  my ($dir, $prefix, $channel, $mc, $context, @sms) = @_;
  my $i = 0;

  for my $sms (@sms) {

    open CALLFILE, sprintf(">%s/%s.%s-%d.call", $dir, $prefix, $$, ++$i)
      or die "could not create callfile $dir/$prefix.$$.call: $!";

    print CALLFILE qq/Channel: $channel
CallerID: "MessageCenter" <$mc>
MaxRetries: 3
RetryTime: 60
Waittime: 30
Context: $context
Extension: $sms->{oa}
Priority: 1
SetVar: MSG=$sms->{ud}
/;

    close CALLFILE;
  }

  1
}

Fehlt nur noch das Versenden vom Telefon. Mir schwebt hier die Nutzung des Sipgate
Webinterfaces vor, oder lässt sich auch die 02212704060 direkt verwenden ?
 
backbohne schrieb:
Fehlt nur noch das Versenden vom Telefon. Mir schwebt hier die Nutzung des Sipgate
Webinterfaces vor, oder lässt sich auch die 02212704060 direkt verwenden ?

Einfacher und auch billiger wäre es, wenn man nicht über sipgate verschickt sondern einen Web-SMS Anbieter, der email2SMS unterstützt. Telefon SMS eingeben -> Asterisk -> email mit SMS an Web-SMS Anbieter wie z.B. sms77.de

Gruß,
Tin
 
Hallo,

unter Asterisk 1.4 finde ich kein Makefile für smsq im utils/ Verzeichnis.

Hat jemand einen Tipp?

Viele Grüße,
Philipp.
 
Zuletzt bearbeitet:
mit "make menuselect" solltest du es unter "apps" finden.
 
OK, danke.
 
Zuletzt bearbeitet:
Von deinem "Screenshot" aus musst du [pfeil rechts] drücken, dann in der Liste mit [pfeil unten] nach unten scrollen. Bei mir ist es die Applikation 57 "app_sms".


In der aktuellsten 1.4er ist die app_sms jedenfalls noch drin.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.