TMobile SMSC használata

Fórumok

Van valakinek tapasztalata / ötlete, hogy miképp tudom linux alól használni, a T-Mobil "tömeges SMS" szolgáltatását? Teljesen analfabéta vagyok a témában, eddig odáig jutottam, hogy megvannak a kulcsszavak: SMSC, UCP protocol, ETS 300 133-3.

Hozzászólások

Három lehetőséged van:
1, leimplementálod magad
2, keresel valakit akinek van ilyen verziójú EMI/UCP implementációja és használod azt.
3, a T-Mobile helyett egy aggregátorhoz kötsz be, és akkor valószínűleg egy egyszerűbb http alapú gateway-en keresztül tudsz küldeni / fogadni SMS-eket

Mondjuk ha ez így az elején ekkora kérdés, akkor az 1-est nem javasolnám.

Kannel: http://www.kannel.org/

Ezzel működik, tapasztalatból mondom. Ugyan a T-mobile kekecségei miatt néhány helyen bele kellett nyúlni a kannel forráskódjába, de nem volt nagy ügy.
A kannel kezeli az UCP/EMI-t és ad neked egy interface-t, ahol HTTP GET/POST-tal tudod fogadni/küldeni az SMS-t.

Egyébként a Vodafone megoldása (ahol eleve webes (HTTPS) interface-t anak) sokkal egyszerűbb, stabilabb.

Igen, működnek az ékezetek.
Nem árt persze, ha tisztában vagy az SMS üzenetekben kódolási konvencióival:
http://en.wikipedia.org/wiki/GSM_03.38

A lényeg, hogy a kannelhez kapcsolódó kliens oldalon (pl. PHP függvényekkel) kell a megfelelő kódolásra alakítani az SMS-ek szövegét.

Lehet hogy csak én bénáztam el, de gsm338-al a magyar ékezetes betűk nagy része nem írható le, ahogy a linkelt ábra is mutatja. Néha van mondjuk másik irányba döntött ékezettel hasonló betű, de abból sincs mindhez. Pl: őű.

Viszont a telefonok jó része az összes ékezetes karaktert el tudja küldeni. Ez azt jelenti, hogy ezek mind UCS-2-es kódkészletet használnak? Vagy valami kiterjesztett gsm338-at (elvben van hely ott az escapelt karakterek közt ...) ?

Nem ajánlom a t-mobile tömeges sms szolgáltatását. Hetekig szenvedtünk velük, mert az új rendszerüket rajtunk tesztelték, egyfolytában lefagyott v valami bug jött elő.

Vodafone-ra váltottunk, gyors, profi, megbízható, dokumentált! :)

De simán implementálható, a doksit vagy elkéred, vagy a neten is megtalálható, de gondolom van valami támogatás ott, akik segítenek nem?
régebben valamiért egyszer már láttam a leírást

Nos eltelt egy kis idő amióta ezt a topicot létrehoztam. Újra előkerült a projekt, azaz most már meg is kellett csinálni. Perl-es UCP libbel tök jól üzemel, egyetlen nagy hiba, hogy nem mennek jól az ékezetes karakterek.

Bárkinek bármilyen tapasztalata az SMSküldés és az ékezetek viszonyáról? :)

Olvasgattam, ket ora alatt nem sikerult eletet lehelni bele. Ennel tobb energiat nem szandekoztam beleolni. Gondoltam van valaki aki vegigszivta mar a dolgot, es 4 mondatban osszefoglalja, mit kell csinalni.

Itt jegyzem meg, hogy aki ilyesmiket akarna valaszolni, hogy rtfm://gsm338, meg rtfm://ucb2, az ne pazarolja vele az idejet ...

Sajnos meg kell irni a konvertert a GSM kodolashoz. En Gammu ala dolgoztam be kozvetlen, es ennek kapcsan foglalkoztam a dologgal, pdu enkodolas, meg minden szepseg, en is atnezegettem a doksikat, aztan letojtam. A bank csak angol nyelvu SMS kozlemenyeket ad ki, igy a dolog ezen a ponton szamomra elveszitette az erdekesseget.
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Nos újabb probléma merült fel :-(!

Összepatkoltuk a teszrendszert egy ideje. Az élesbe álláshoz viszont a T* egy bizonyos UCP31 logot kér tőlünk. Elvben elküldtük a teljes forgalom logját, de úgy tűnik ez nem felel meg nekik. Gondoltam megkérdezem itt, hátha előbb kapok értelmes választ mint amíg a management lelevelezi a problémát. Szóval: látott már valaki UCP-31 logot?

Sziasztok!

Tömeges sms küldésre kellene egy script.
Bejön a levél, azt a script átfordítani UCP-re és kiküldi az smsc-nek.
Hogyan lehet ezt egyszerűen?

Ezt nem sikerül feltelepítenem:
http://search.cpan.org/~nemux/Net-UCP-0.42/


gep:/usr/src/ucp/Net-UCP-0.42 # perl Makefile.PL
*** ExtUtils::AutoInstall version 0.63
*** Checking for dependencies...
[Core Features]
- Carp ...loaded. (1.08 >= 0.00)
- IO::Socket ...loaded. (1.30_01 >= 0.00)
- IO::Select ...loaded. (1.17 >= 0.00)
- Time::HiRes ...loaded. (1.9711 >= 0.00)
- Net::UCP::Common ...loaded. (0.05 >= 0.05)
- Net::UCP::IntTimeout ...loaded. (0.05 >= 0.05)
- Net::UCP::TransactionManager ...loaded. (0.02 >= 0.02)
*** ExtUtils::AutoInstall configuration finished.
Checking if your kit is complete...
Looks good
Writing Makefile for Net::UCP
gep:/usr/src/ucp/Net-UCP-0.42 # make
cp lib/Net/UCP.pm blib/lib/Net/UCP.pm
cp lib/._Net blib/lib/._Net
Manifying blib/man3/Net::UCP.3pm
/usr/bin/perl "-Iblib/arch" "-Iblib/lib" ._Makefile.PL ._Makefile
Unrecognized character \x05 in column 2 at ._Makefile.PL line 1.
make: *** [._Makefile] Error 255
make:/usr/src/ucp/Net-UCP-0.42 # cat /etc/SuSE-release
SUSE Linux Enterprise Server 11 (x86_64)
VERSION = 11
PATCHLEVEL = 2
LYYSLnrdcsms01:/usr/src/ucp/Net-UCP-0.42 #

Gondolom egy mail2sms gateway-t akar.

Nem szerencses hakkolni, mert az UCP elegge nem egyszeruen mukodik. Azt a perl scriptet kene hasznalni, csak valamiert neki nem fordul. Viszont abban nem tudok segiteni, en is csak kinlodni szoktam, ha ilyenek vannak. A perl nem a szakteruletem.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Hat, minden egyes feature-jat nem. Pl. proxy, websocket, if-modified-since... ha valaki nem gyakorlott programozo, akkor nem egyszeru. Nem egy, mittudomen, mysql connect/insert/close egyszerusegu tortenet.
Ja, es mindezt uzembiztosra megirni persze.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Szia!

A Net-UCP-0.41-es verzió feltelepült, már "csak" meg kellene írni a perl scriptet, de nem tudom hogyan kell.

Kaptam egy scriptet, de sajnos nem értek a perl-hez és kapásból nem működik :(

Más nyelven is lehetne, nekem az mindegy :)


#!/usr/bin/perl -w

use utf8;
use Encode;
use IO::Socket;
use Net::UCP;
use Net::hostent;

my $login = "<>";
my $password = "<>";
my $port = 2222; #=shift || die "Usage server.pl
\n";

my ($acknowledge, $error_number, $error_text);

my $server = IO::Socket::INET->new(
Proto => 'tcp',
LocalPort => $port,
Listen => SOMAXCONN,
Reuse => 1,
Timeout => 60);

die "can't setup server" unless $server;

$emi = Net::UCP->new(
SMSC_HOST => '<>',
SMSC_PORT => <>,
SENDER_TEXT => '<>',
SRC_HOST => '<>',
WARN => 1,
FAKE => 0) or die("Failed to create SMSC object");

$emi->open_link() or die ($!);

($acknowledge,$error_number,$error_text) = $emi->login(
SMSC_ID => $login,
SMSC_PW => $password,
OTON => '6', # Originator type of number: Abbreviated number (registered large account identification)
ONPI => '5', # Originator Numbering Plan Id: 5 = SMSC specific: Private (TCP/IP address/abbreviated number)
VERS => '0100');

die ("Login to SMSC failed. Error nbr: $error_number, Error txt: $error_text\n") unless($acknowledge);
print $error_text;

print "[Server $0 is running]\n";

while (1) {

while ($client = $server->accept()) {
$client->autoflush(1);

$hostinfo = gethostbyaddr($client->peeraddr);

printf "[Connect from %s]\n", $hostinfo->name || $client->peerhost;

$input = <$client>;

if( $input =~ /(\w+)\s+(\d+)\s+([\w\s]+)/ ) {
$msg = $3;
print $client "OK";
printf "$1 $2 $3";

if($1 =~ /SEND/) {
($acknowledge,$error_number,$error_text) = $emi->send_sms(
RECIPIENT => '<>',
MESSAGE_TEXT => "$msg",
SENDER_TEXT => '<>'
);
die("Sending SMS failed. Error nbr: $error_number, Error txt: $error_text\n") unless($acknowledge);
print $error_text;
}

} else {
print $client "INVALID";
printf $input;
}

close $client;
}

$timeout = $emi->{TIMEOUT_OBJ}->get();
print "TO\n";

$message_string = $emi->make_message(
op => '31',
operation => 1,
adc => '0100010110095183',
pid => '0539');

($acknowledge,$error_number,$error_text) = $emi->transmit_msg($message_string, $timeout, 1);
die ("SMT_ALERT failed. Error nbr: $error_number, Error txt: $error_text\n") unless($acknowledge);
print $error_text;

#sleep(2);
}

$emi->close_link();

Ezeket írtam át:
(Most épp a telenoros smsc-t próbálom, majd t-mobile is kell)

SMSC_HOST => '84.225.254.70',
SMSC_PORT => 2965,
SENDER_TEXT => 'CEGNEV',
my $login = "username";
my $password = "password";
my $port = 2965; #=shift || die "Usage server.pl
\n";

majd: perl file.pl

Eredménye:
Failed to read from SMSC socket. Never received ETX. Remote end closed? at /usr/lib/perl5/site_perl/5.10.0/Net/UCP.pm line 1966.
Login to SMSC failed. Error nbr: 0, Error txt: Failed to read from SMSC socket. Never received ETX. Remote end closed?

Közben a tcpdump:
http://pastebin.com/jVBA3j2P

1. Hogy csatlakoztok a szolgáltatóhoz, min keresztül?
2. Egy TCP dump segítségével nézd meg, hogy összejön e a tcp kapcsolat. Összejön?
3. Beküldi az UCP60-as session nyitó, bejelentkező üzenetet? (szintén a dump)
4. Jön vissza válasz?
5. Beküldi az UCP51-es üzenetet (üzenetküldő üzenet típus)?
6. Jön vissza válasz?
7. Megérkezik mobilra az sms?

Ezeket a pontokat az alap pontok. Mindig a szállító közeggel kell kezdeni, ami itt a tcp kapcsolat. Amíg az nem épül fel megfelelően, addig felesleges továbblépni.
Az IP-ből gondolom, hogy valamilyen VPN-en keresztül kéne csatlakoznotok, az rendben felépül?

A dump legyen beszédesebb, inkább így :
tcpdump -pleni eth0 -XX -s 0 port 2965 and host 84.225.254.70

Köszi a segítséget, a t-mobile rossz ip-t adott meg.

A tcpdump meg becsapós volt, mert jött válasz a mi alkalmazás szintű tűzfalunkról, ahol az smsc ip-je szerepelt. Valójában nem jöhetett létre a kapcsolat.

Most már tudok sms-t küldeni, viszont az ékezetek rosszul jelennek meg, azzal még dolgozni kell.