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
 

chaos2000

Aktives Mitglied
Mitglied seit
22 Aug 2004
Beiträge
2,028
Punkte für Reaktionen
0
Punkte
36
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
 

tom-tom

Neuer User
Mitglied seit
18 Okt 2004
Beiträge
163
Punkte für Reaktionen
0
Punkte
0
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" ?
 

chaos2000

Aktives Mitglied
Mitglied seit
22 Aug 2004
Beiträge
2,028
Punkte für Reaktionen
0
Punkte
36
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
 

tom-tom

Neuer User
Mitglied seit
18 Okt 2004
Beiträge
163
Punkte für Reaktionen
0
Punkte
0
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 :-(
 

chaos2000

Aktives Mitglied
Mitglied seit
22 Aug 2004
Beiträge
2,028
Punkte für Reaktionen
0
Punkte
36
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
 

tom-tom

Neuer User
Mitglied seit
18 Okt 2004
Beiträge
163
Punkte für Reaktionen
0
Punkte
0
Auch das hilft leider nicht.
 

chaos2000

Aktives Mitglied
Mitglied seit
22 Aug 2004
Beiträge
2,028
Punkte für Reaktionen
0
Punkte
36
ich denk das problem liegt bei SPEECH; soweit ich mich erinnere weden SMS im D-Kanal übermitteld - bitte verbessert mich wenn ich mich irre
 

tom-tom

Neuer User
Mitglied seit
18 Okt 2004
Beiträge
163
Punkte für Reaktionen
0
Punkte
0
Und das bedeutet für mich?
 

Jonny

Neuer User
Mitglied seit
30 Dez 2004
Beiträge
189
Punkte für Reaktionen
0
Punkte
0
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.
 

tom-tom

Neuer User
Mitglied seit
18 Okt 2004
Beiträge
163
Punkte für Reaktionen
0
Punkte
0
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?
 

clan

Mitglied
Mitglied seit
21 Apr 2005
Beiträge
266
Punkte für Reaktionen
0
Punkte
0
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.
 

backbohne

Neuer User
Mitglied seit
4 Sep 2004
Beiträge
19
Punkte für Reaktionen
0
Punkte
0
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 ???
 

backbohne

Neuer User
Mitglied seit
4 Sep 2004
Beiträge
19
Punkte für Reaktionen
0
Punkte
0
meine ursprüngliche idee war: wenn ich rufnummer und text habe mittels einem kleinen script das sipgate sms web-interface aufzurufen.
 

backbohne

Neuer User
Mitglied seit
4 Sep 2004
Beiträge
19
Punkte für Reaktionen
0
Punkte
0
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 ?
 

TinTin

Aktives Mitglied
Mitglied seit
6 Mai 2004
Beiträge
1,864
Punkte für Reaktionen
0
Punkte
0
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
 

P.Hoffmann

Neuer User
Mitglied seit
1 Feb 2009
Beiträge
179
Punkte für Reaktionen
0
Punkte
0
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:

Sachmet

Neuer User
Mitglied seit
14 Jan 2007
Beiträge
115
Punkte für Reaktionen
0
Punkte
0
mit "make menuselect" solltest du es unter "apps" finden.
 

P.Hoffmann

Neuer User
Mitglied seit
1 Feb 2009
Beiträge
179
Punkte für Reaktionen
0
Punkte
0
OK, danke.
 
Zuletzt bearbeitet:

Sachmet

Neuer User
Mitglied seit
14 Jan 2007
Beiträge
115
Punkte für Reaktionen
0
Punkte
0
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.
 

Zurzeit aktive Besucher

3CX

Neueste Beiträge

Statistik des Forums

Themen
236,559
Beiträge
2,078,664
Mitglieder
358,084
Neuestes Mitglied
Ezezzezeg