Menü

Login

Aktuelle Version

Forum > SMS-Feature *

DOTLAN Intranet / Portal >> Konfiguration, Erweiterungen, Addons > SMS-Feature
Antwort erstellen
Autor Thema: SMS-Feature
Thanquol
28.09.2009 um 00:03 QuoteProfileSend PM
NEW

Clan: Gamers' Congress
Postings: 123

Ahoi,

ich bin derzeit noch am bauen einer DotLan2SMS Lösung

Was derzeit schon funktioniert: Startet der Admin ein Turnier werden alle beteiligten per SMS benachrichtigt.

Ich hätte nun noch gerne:
* User A setzt sich auf: Bereit fürs Turnier
-> if($do == "contest_save") $output = $TC->save($id,$wins);
Wie lässt sich rausfinden welche Teilnehmer dann in dieser Turnierrunde sind?
In der Datenbank gibt es in t_contest zwar das jeweilige Turnier, ich kann aber mit den team_a und team_b einstellungen nichts anfangen

* Ein Ergebnis wird eingetragen -> die nächste runde kann gespielt werden
-> wie finde ich raus, welche Runden aufgrund des Eintrags nun gespielt werden könnten?

Geht das überhaupt / ists hier möglich eine der bestehenden Objekte evtl. anzuzapfen?

Danke schonmal,
Florian
 
Bigga
28.09.2009 um 09:12 QuoteProfileSend PM
NEW

Clan: KST-LAN
Postings: 418

Am einfachsten wäre es wohl, wenn du zusätzlich speicherst, für welche Runden du schon ne SMS verschickt hast. Und dann jedes mal schaust, welche das Flag noch nicht haben.
 
Thanquol
28.09.2009 um 10:37 QuoteProfileSend PM
NEW

Clan: Gamers' Congress
Postings: 123

das wäre ne Möglichkeit, löst aber noch nicht mein Problem: Wer muss denn nun spielen?
 
muemmel
28.09.2009 um 19:57 QuoteProfileSend PM
NEW

Clan: lantertainment
Postings: 19

Hab das ganze schon für unsere Turnierserververwaltung gelöst. Kann nur leider atm nicht mehr nachschauen wie, weil ich den Intranetserver nicht mehr griffbereit habe. War aber relativ simpel und funktioniert tadellos.

Melde mich dann die Tage nochmal.
 
Thanquol
29.09.2009 um 00:34 QuoteProfileSend PM
NEW

Clan: Gamers' Congress
Postings: 123

saucool! Danke dir
 
sUkY
07.10.2009 um 16:55 QuoteProfileSend PM
NEW

Clan: Kein Clan
Postings: 6

und gibs schu was neues!?
 
Thanquol
07.10.2009 um 17:49 QuoteProfileSend PM
NEW

Clan: Gamers' Congress
Postings: 123

hab leider noch kein Feedback vom Muemmel bekommen
wäre cool wenn das klappen würde!!!
 
DerMega
20.10.2009 um 09:57 QuoteProfileSend PM
NEW

Clan: Mitten aus Deutschland e.V.
Postings: 438

Megaaaaa
Wie realisierst du denn den SMS Versand an sich?
 
Thanquol
20.10.2009 um 19:52 QuoteProfileSend PM
NEW

Clan: Gamers' Congress
Postings: 123

via Dotlan schreibe ich die Daten in ne MySQL-Tabelle
diese lese ich an einem Windows XP PC aus, der generiert ne TXT Datei namens sms_uhrzeit__handynummer.txt mit dem entsprechenden SMS Inhalt und legt das in nem Ordner X ab. Dann schnappt sich ein kleines Tool namens mwconn die TXT Datei und verschickt die SMS mittels angeschlossenem T-Mobile UMTS Stick
 
DerMega
21.10.2009 um 11:27 QuoteProfileSend PM
NEW

Clan: Mitten aus Deutschland e.V.
Postings: 438

Megaaaaa
oha net schlecht, da muss man ersma drauf kommen
 
Thanquol
21.10.2009 um 13:45 QuoteProfileSend PM
NEW

Clan: Gamers' Congress
Postings: 123

jopp war ne derbe Bastlerei, aber funzt 1A


 
Griffon
21.10.2009 um 19:24 QuoteProfileSend PM

NEW

Clan: dotlan.net
Postings: 1252

Ich hab für die Arbeit mal nen SMS Gateway über Festnetz ISDN mit Asterisk gebaut, ich weiß wie fummelig das ist. :-)
 
Thanquol
22.10.2009 um 12:54 QuoteProfileSend PM
NEW

Clan: Gamers' Congress
Postings: 123

was bei der Sache nur a bissl pervers is: die MySQL Datenbank wird von nem oldschoolBatchScript angezapft :p

Sobald das ganze Stable läuft stell ichs gerne zur Verfügung!

Meine Intention bei dem ganzen war: wir haben oftmals ne Lan die nur mit ner unstabilen DSL Verbindung wia WLAN ausgestattet ist, ISDN ist dann auch nicht vorhanden, Handynetz geht allerdings noch am besten...
von daher wars mir lieber die SMS via SimKarte als über ISDN/Webservice zu verschicken

zumal zumindest die D1 SMS von meiner Flat gedeckelt sind
 
Fr33man
10.11.2009 um 00:57 QuoteProfileSend PM
NEW

Clan: Kein Clan
Postings: 17

Ich melde hier einfach mal mein Interesse an!

Hört sich jedenfalls sehr Interessant an.
 
Thanquol
12.11.2009 um 22:13 QuoteProfileSend PM
NEW

Clan: Gamers' Congress
Postings: 123

naja ich häng immer noch bei meinem Anfangspost fest
 
Griffon
13.11.2009 um 15:41 QuoteProfileSend PM

NEW

Clan: dotlan.net
Postings: 1252

Ich würde ein extra Script machen das im Cronjob läuft und Alle 5 Minuten folgendes prüft.

Das Script hier soll als Anregung dienen. Es ist weder geprüft, noch ausprobiert. Wer es benutzten möchte muss auf jedenfall Tippfehler prüfen, Evtl Logging einbauen (damit ihr herausfinden könnt warum es zur SMS Flut kommt etc, Anbindung ans SMS Gateway u.s.w.

Ich hänge das Script nochmal sauber als Attachment dran.

Code:
<?
// kein Eintrag in der Session Datenbank
define("NO_SESSION_DB",1);
include("global.php");
include("includes/class.turnier.php");

// welche Turniere sollen geprüft werden
// bitte nur single/double/group modus
$tids = array(1,3,4,6,12);

// SMS Queue initialisieren
$sms = array();

// Tabelle sms_send erstellen
// primarykey (tid, tcid, user_id) + nr/varchar(30) + msg/varchar(255) + dateline/datetime

// Durchlauf aller Turniere
foreach($tids AS $tid) {
$T = new turnier($tid);

// Wenn Turnier nicht aktiv oder im Pause Modus oder nicht gestart, gehe weiter
if(!$T->tactive || $T->tpause || !$T->c_contests)
continue;

// Lade Turniermodus (wird zur Benennung des Rundennamen benötigt
$TS = $T->get_system();

// Lade Teilnehmerdaten
$T->load_players_info();
$T->load_players_members();

// Suche alle offene Spiele
$allmatches = $DB->query_all("
SELECT tcid, team_a, team_b, wins_a, wins_b, won, tcrunde, row,
UNIX_TIMESTAMP(starttime) AS starttime,
UNIX_TIMESTAMP(starttime)+troundtime*60 AS endtime
FROM t_contest
LEFT JOIN t_turnier ON t_turnier.tid=t_contest.tid
WHERE t_contest.tid=".intval($T->tid)." AND won=0 AND team_a>0 AND team_b>0
ORDER by starttime ASC, tcrunde DESC, row ASC
");

// wenn keine Offenen Spiele vorhanden sind, gehe weiter
if(!is_array($allmatches) || !count($allmatches))
continue;

// Selektiere (maximal 1 Spiel pro Team)
$active_matches = array();
$already_shown = array();
foreach($allmatches AS $nr => $data) {
if(!in_array($data['team_a'],$already_shown) && !in_array($data['team_b'],$already_shown))
$active_matches[] = $data;
$already_shown[] = $data['team_a'];
$already_shown[] = $data['team_b'];
}

// Lade Liste der bereits rausgeschickten Notis
$already_notified = $DB->query_all("SELECT tcid FROM sms_send WHERE tid=".intval($T->tid),'tcid','tcid');

if(!is_array($already_notified))
$already_notified = array();

// Aktive matches benachrichten
foreach($active_matches AS $data) {
if(in_array($data['tcid'],$already_notified));
continue;

// Begegnungsdaten
$tname = $T->tname;
$name_a = $T->playerinfo[$data['team_a']]['name'];
$name_b = $T->playerinfo[$data['team_b']]['name'];
$runde = $TS->get_round($data['tcrunde'].".".$data['row']);

// Alle Teilnehmer benachrichten
foreach(array($data['team_a'],$data['team_b']) AS $tnid) {
foreach($T->playermembers[$tnid] AS $user_id => $data) {
$nick = $data['nick'];
$nr = $DB->query_one("SELECT handy FROM user WHERE id=".intval($user_id));
$nr = preg_replace("/^+/","00",$nr);
$nr = preg_replace("/[^0-9]/","",$nr);

// Nur wenn Nummer vorhanden ist und Rufnummern Pruefung auf Deutsche Handy Nr
if($nr && preg_match("/^(0049|0)1[567]/",$nr)) {
$sms[] = array(
'tcid' => $data['tcid'],
'tid' => $T->tid,
'uid' => $user_id,
'nr' => $nr,
'msg' => "Hallo ".$nick.". Deine nächstes Match: ".
$tname.": ".$runde.": ".$name_a." vs ".$name_b." Zeit: ".
strftime("%H:%M",$data['starttime'])."-".strftime("%H:%M",$data['endtime']).
" - ".$global['sitename']
);
}
}
}
}
}

// Verschicke SMS Nachrichten

if(count($sms)) {
foreach($sms AS $data) {
// Call programm to send sms message
exec("/usr/local/bin/sendsms ".$data['nr']." \"".escapeshellcmd($data['msg'])."\"");
// Safe msg for history and spam prevention
$DB->query(" REPLACE INTO send_sms (tid,tcid,user_id,nr,msg,send)
VALUES (".intval($data['tid']).",".intval($data['tcid']).",
'".addslashes($data['nr'])."','".addslashes($data['msg'])."',NOW())");
}
}
?>

 

Dateianhang:    dotlan-turnier-smsgw.txt    4 KB
[ Antwort erstellen ]