Brauche Hilfe für spezielle SMS-Anwendung

betateilchen

Grandstream-Guru
Mitglied seit
30 Jun 2004
Beiträge
12,882
Punkte für Reaktionen
0
Punkte
0
Hallo !

Ich kann zwar inzwischen im Dialplan fast alles irgendwie hinbiegen, aber mit Skripten stehe ich auf Kriegsfuß.

Ich möchte gerne folgendes machen:

- Mein SMS-fähiges Festnetztelefon ist über IAXy mit dam Asterisk verbunden
- ich kann vom Festnetztelefon aus eine SMS absetzen, die der Asterisk korrekt mit SMS() annimmt und in das entsprechende Verzeichnis /var/spool/asterisk/sms schreibt (diese Dateien mit dem kryptischen Filename)

Soweit ist alles klar. Nun kommt der "schwierige" Teil:

Ab jetzt geht der SMS Versand nicht mehr über die SMS() Applikation oder die smsq weiter, sondern über ein spezielles AGI Skript (das ich vom Gatewaybetreiber schon habe). Dieses Skript rufe ich einfach im Dialplan mit agi(sendsms|Empfängernummer|Text|[Absendernummer]) auf. Das funktioniert auch soweit.

Mit fehlt nun die Verbindung zwischen dem Spoolfile und dem Send-Skritp. Das heißt, aus der Datei im Spoolverzeichnis, die von SMS() angelegt wird, müßten irgendwie die benötigten 3 Werte ausgelesen und an den Dialplan zurückgegeben werden, damit ich das AGI zum Versenden damit füttern kann.

Die Beiträge hier im Forum zum Thema SMS & Asterisk habe ich durch - da wird so ein Fall noch nicht behandelt.

Danke für Unterstützung.
 
bau Dir einfach noch ein agi-skript, das nichts anderes macht als die SMS-Datei zu parsen und dann einfach ein paar set_var ausführt die dann die Werte für sendsms, ... etc. beinhalten. Dann die Variablen an das andere agi-Skript übergeben.

Oder aber du modifizierst das AGI-Skript, dass es das gleich selber macht und Du statt den 4 Parametern nur den Dateinamen des spoolfiles übergibst.

Fertig.
 
bau Dir einfach noch ein agi-skript, das nichts anderes macht als die SMS-Datei zu parsen und dann einfach ein paar set_var ausführt

Du hast zumindst genau erkannt, was ich haben möchte :mrgreen: und wer baut mir bitte so ein AGI Skript ? (Das war eigentlich der Hintergrund meines Postings)
 
Na, so schwer ist das doch nicht. Ein Test-agi-Skript gibt es im asterisk/agi Ordner, auf voip-info.org sollte die Funktionsweise für AGI genauestens beschrieben sein und wie man shell-skriptet erfährt man hier: http://www.netzmafia.de/skripten/unix/unix8.html.
Ansonsten: "man grep", "man sed", "man cut", "man tr" -- mehr sollte nicht notwendig sein. :)
 
ich sehe das problem darin, herrauszufinden welche datei die aktuelle SMS ist;
sonst kein problem, habe zwar nicht viel ahnung von perl - das würde ich mir aber noch zutrauen.
 
ich sehe das problem darin, herrauszufinden welche datei die aktuelle SMS ist;

Da im Normalfall nur eine Datei in diesem Spool-Verzeichnis steht, sollte der Dateiname keine Rolle spielen, wenn man das ganze einfach in eine Schleife packt, die für alle Dateien (*) das Script ausführt und die bearbeitete Datei danach löscht.
 
ich schau mir das ganze mal an
 
schau mal hier drauf:
Code:
#!/usr/bin/perl -w
#


$delete=0;                                  #vorhandene Dateien löschen?
$dir = $ARGV[0];                         #Verzeichnis (übergabewert)



chdir($dir);
my @files = glob("*");
#print @files;

foreach $f (@files){
    open(DATEI, $f);
    @lines = <DATEI>;
    close(DATEI);

#    print 'File: '.$f;
    my ($destination, $sender, $text);

    foreach $i (@lines){
  
	$i=~m/da=(\w+)/;
        $destination = $1;
    
	$i=~m/oa=(\w+)/;
	$sender = $1;
    
	$i=~m/ud=(\w+)/;
	$text = $1;
    }
#    print $text;
    
    if($delete){unlink($f);}


#hier müsste jetzt dein script zum senden der nachricht(en)
}

schwierig wird es wenn die Variablen an Asterisk zurück gegeben werden sollen.
 
Halli Hallo,

ich wollte ein Script haben um eingehende SMS per Email zu versenden und hab deines hier gleich als Vorlage benutzt.

Ich poste das Script mal hier, viellleicht hat ja noch jemand verwendung dafür.

Code:
#!/usr/bin/perl -w
#


$delete=1;                                  #vorhandene Dateien löschen?
$dir = "/var/spool/asterisk/sms/mtrx/";                         #Verzeichnis (übergabewert)



chdir($dir);
my @files = glob("*");
# print @files;

foreach $f (@files){
    open(DATEI, $f);
        @lines = <DATEI>;
    close(DATEI);

    #    print 'File: '.$f;
    my ($destination, $sender, $text);

    foreach $i (@lines){

        if ( $i=~m/scts=(\X+)/ )  {
        $destination = $1 }

        if ( $i=~m/oa=(\X+)/ ) {
        $sender = $1; }

        if ( $i=~m/ud=(\X+)/ ) {
        $text = $1; }
    }
    #print $sender;
    #print $text;
    #print $destination;

    if($delete){unlink($f);}

    $mail = "echo '" . $text . $destination  . "' | mail hans.muster\@muster.com -s 'SMS von " . $sender ."'";
#    print $mail
    system ($mail);
    
}
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,183
Beiträge
2,247,562
Mitglieder
373,729
Neuestes Mitglied
ChTh
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.