Avatar billede sijmonj Nybegynder
06. august 2009 - 15:12 Der er 41 kommentarer og
1 løsning

coolsms send sms via hjemmeside

Hej nu har jeg fået til opgave at lave et system som skal bygges op mod coolsms.dk's API

http://www.coolsmsbusiness.dk/Support/HTTPGateway.html

men jeg har ingen idé om hvordan det skal gøres.

så tænkte på om nogen havde prøvet det før og kan forklare lidt hvordan jeg skal lave det, gerne kode eksempler hvis i har sådan nogen.

har tænkt mig at bruge PHP til det

tak på forhånd (:
Avatar billede sijmonj Nybegynder
06. august 2009 - 15:14 #1
det vil sige jeg har købt en smsgateway hos coolSMS
Avatar billede leif Seniormester
06. august 2009 - 15:18 #2
Avatar billede leif Seniormester
06. august 2009 - 15:20 #3
<?php
$url = "http://sms.coolsmsc.dk/";
$url .= "?message=" . urlencode("This is a test."); //Besked
$url .= "&to=4512345678"; // To
$url .= "&username=yourusername"; // Username
$url .= "&password=yourpassword"; // Password
$url .= "&from=" . urlencode("Sendername"); // Sendername

$reply = file_get_contents($url);

echo $reply;

?>
Avatar billede sijmonj Nybegynder
06. august 2009 - 15:23 #4
men har ingen idé hvordan det skal sættes op :O.

skal jeg lave en config.php fil og så skrive

Hostname:    smpp.coolsmsc.dk
Port:    2775

og hvad mere :P? jeg er helt lost så håbede en kunne komme med lidt mere hjælp hvordan de har klaret sån en opgave hvis de har prøvet det før
Avatar billede repox Seniormester
06. august 2009 - 15:23 #5
Det er ret simpelt hvis du benytter curl.

<?php


    $sms["username"] = urlencode("ditbrugernavn");
    $sms["password"] = urlencode("ditbrugernavn");
    $sms["to"] = urlencode("+4512345678");
    $sms["from"] = urlencode("Fra mig");
    $sms["message"] = urlencode("Dette er min besked");

    $ch = curl_init("http://sms.coolsmsc.dk/");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, implode("&", $sms));

    $content = curl_exec($ch);
    curl_close($ch);

    var_dump($content);
?>

Jeg går ud fra du selv kigger funktionerne igennem og ser hvad de gør i manualen?
Avatar billede sijmonj Nybegynder
06. august 2009 - 15:25 #6
skal jeg prøve at smide det ind i en fil og kører det script?. men jeg skal kunne sende mange sms'er og der er 6 kategorier

jokes
guldkorn
kærlighed

osv.

så kunne jeg måske lave 6 forskellige scripts en til hver kategori?
Avatar billede sijmonj Nybegynder
06. august 2009 - 15:28 #7
jeg prøver lige at læse lidt om curl
Avatar billede leif Seniormester
06. august 2009 - 15:32 #8
Dvs. det er et helt system du vil have til at sende masse SMSer med eller hva' ?

De 2 kodestumper du har fået sender 1 SMS
Avatar billede sijmonj Nybegynder
06. august 2009 - 15:47 #9
det som systemet skal kunne er


sende en sms ud til ALLE som har tilmeldt sig "guldkorn"
sende en sms ud til ALLE som har tilmeldt sig "jokes"
sende en sms ud til ALLE som har tilmeldt sig "kærlighed"

osv.

i hver kategori skal der så være noget forskelligt indhold som jeg selv har skrevet.

og så skal jeg kunne sidde og skrive hvad der skal sendes hver dag på 1 gang sådan at jeg kan sidde en weekend og skrive en masse jokes og så hver dag bliver de automatisk sendt ud til brugeren kl et eller andet.

og så skal der være mulighed for at få 1 uges gratis prøve derefter skal man automatisk slettes.

og så skal der være mulighed for rabat ved tilmelding af flere 2,3 osv. kategorier
Avatar billede leif Seniormester
06. august 2009 - 18:25 #10
Og du vil have os til at kode hele systemet ? De kodestumper du har fået kan sende 1 SMS
Avatar billede sijmonj Nybegynder
06. august 2009 - 19:12 #11
nej vil ikke have i skal lave det.

ville bare gerne have en mere teoretisk forklaring på hvordan det kunne laves som jeg har beskrevet
Avatar billede leif Seniormester
06. august 2009 - 19:17 #12
Koderne sender en SMS smid den kode en i en løkke og kald den for hvert nummer som der skal sendes
Avatar billede sijmonj Nybegynder
06. august 2009 - 19:23 #13
okay. men når folk de sender en sms med fx. "jokes" til "12-et eller andet" hvor kan jeg så få de telefonnumre som har tilmeldt sig hver kategori ?
Avatar billede sijmonj Nybegynder
06. august 2009 - 19:29 #14
ahh jeg læste lige lidt inde på

http://www.coolsmsbusiness.dk/Support/HTTPModtagelse.html


så det vil sige at jeg kan gøre sådan her


når en person har valgt at han vil have en joke hver dag så sender en ordet jokes til 1212 han modtager en sms hvor der står han er tilmeldt.

når jeg har modtaget hans sms smider jeg hans nummer ind i en database samt hvad for en kategori han har valgt.

udfra det kan jeg så vælge at jeg skal sende en sms til alle som har tilmeldt sig jokes hvor jeg så henter alle telefon numre ud fra databasen hvor kategori er jokes.

så må jeg så købe et crom job system så jeg kan vælge en dato for hvornår sms'en skal sendes.

er det nogenlunde rigtigt forstået :)?
Avatar billede leif Seniormester
06. august 2009 - 20:04 #15
Har du både modtagelse og afsendelse ?
Avatar billede sijmonj Nybegynder
06. august 2009 - 20:07 #16
jah
Avatar billede leif Seniormester
06. august 2009 - 20:13 #17
Du laver en side på din server kald den fx. smsmodtag.php i den fil laver du så du oversætter de informationer som CoolBusinessSMS kommer med.

Fx. at den skal sætte det ind i en database på baggrund af hvad de har skrevet i smsen
Avatar billede sijmonj Nybegynder
06. august 2009 - 20:38 #18
men altså når jeg skal modtage en sms kan jeg jo ikke bare skrive


POST /receive.php HTTP/1.0
Host: server.domain.tld:8080
Content-type: application/x-www-form-urlencoded

SMS=hello+world&FROM=4512345678&NUMBER=1272


inde i et system på coolsms kan jeg vælge at hvis brugeren sender en sms til 1272 med teksten guldkorn så bliver den videre sendt til www.minside.dk/smsmodtag.php hvordan får jeg så fat i den sms :S
Avatar billede leif Seniormester
06. august 2009 - 20:44 #19
smsmodtag.php bliver kaldt hver eneste gang at der bliver sendt en SMS med teksten guldkorn

Så det er dit ansvar i smsmodtag.php at skille "SMS=hello+world&FROM=4512345678&NUMBER=1272" fra hinanden og få et brugbart resultat fx:


<?php

mysql_query("INSERT INTO `smsmodtag` (`from`, `sms`, `number`) VALUES ('".$_POST[from]."', '".$_POST[sms]."', '".$_POST[number]."')") or die(mysql_error());

?>
Avatar billede sijmonj Nybegynder
06. august 2009 - 20:46 #20
nåå på den måde.

så jeg kan bare hente det der bliver ned via $_POST[''] :)?
Avatar billede leif Seniormester
06. august 2009 - 20:52 #21
Som jeg læser deres dokumentation så sender de 3 oplysninger:
SMS
NUMBER
FROM
Avatar billede sijmonj Nybegynder
07. august 2009 - 12:53 #22
nu tænkte jeg lidt på cron job.

når nu jeg har skrevet en masse jokes og sagt at den ene skal først sendes ud mandag den 10 kl 10:00 og den anden skal sendes ud tirsdag den 11 kl 10:00

så vil det hele jo ligge i databasen med tidspunkt.

skal jeg så have en tabel i min database for hver kategori jeg har?
eller er der en smartere måde?
Avatar billede leif Seniormester
07. august 2009 - 14:37 #23
Der er flere måder at gøre det på, men ja, du kunne have alle de jokes, kærlighed osv. som laves, hvor du bare har er et felt som fortæller hvilken kategori de tilhører.


Cronjob kræver jo at du enten kan kalde en side eller script på et bestemt tidspunkt ellers er det jo bare en side du selv loader så den sender alle smserne.


Men, ja, cronjobbet skal jo så finde den SMS som den skal sende nu og efterfølgende finde de personer som der skal sendes også sende dem til din gateway
Avatar billede sijmonj Nybegynder
07. august 2009 - 14:42 #24
hvis jeg laver et script som sender sms'er ud hvis jeg laver en løkke hvor den køre den indtil den har taget alle i databasen så skal cron jobbet bare køres 1 gang på 1 script. det ville være lidt nederen hvis jeg selv sku gå ind på scriptet hver dag kl 10:00 for at den skal sende sms'erne ud
Avatar billede leif Seniormester
07. august 2009 - 14:49 #25
Så skal du have mulighed for at enten kalde siden elektronisk eller kunne sætte cronjob op hos din udbyder.
Avatar billede sijmonj Nybegynder
07. august 2009 - 15:03 #26
okay, men jeg har prøvet at skrive til dem og spurgt hvordan jeg gør det med at sms'erne bliver sendt ud automatisk
Avatar billede sijmonj Nybegynder
10. august 2009 - 22:40 #27
istedet for at bruge cronjob

kan jeg så ikke lave en knap min kunde kan trykke på og så bliver der kørt et script som sender alle de sms'er som er i databasen (hvis nu min kunde har skrevet masser af jokes, og andre ting) så bliver der sendt en gruppe sms afsted med den samme joke og en gruppe med noget andet indhold?.

hvis du forstår hvad jeg mener
Avatar billede repox Seniormester
10. august 2009 - 22:51 #28
Jo, men hvad nu hvis (af uransagelige årsager) at scriptet timer ud, forbindelsen bliver brudt eller noget helt tredie - foresaget af klienten? Og hvad med andre brugerfejl, som f.eks. dobbeltklik på 'send' knappen (som i nogle tilfælde kan starte to instanser) - så modtager modtagerne to sms'er? Eller hvad?
Avatar billede sijmonj Nybegynder
12. august 2009 - 15:34 #29
det har du ret i :), har fundet en gratis cronjob service.

jeg har fået lavet så jeg kan modtage sms'er.

jeg skal have gjort sådan at hvis brugeren har været tilmeldt servicen mere end 1 uge så skal han slettes fra systemet, hvordan gør jeg det ?
Avatar billede leif Seniormester
12. august 2009 - 18:23 #30
Registrerer dato ved tilmelding og lav et cronjob som sletter alle med dato som ligger 1 uge tilbage
Avatar billede sijmonj Nybegynder
12. august 2009 - 18:36 #31
okay tak :)

ved du hvordan jeg via det jeg har lavet her kan sende sms'er ud til alle som har tilmeldt sig en kategori



  1.  <?php
  2.
  3. include("../config.php");
  4.
  5. $hent_nummer = mysql_query("SELECT * FROM sms_modtag") or die(mysql_error());
  6. $vis_nummer = mysql_fetch_array($hent_nummer);
  7.
  8.
  9. #Send sms med 0 kr i taksering
  10. if($vis_nummer['tilmeldt_en_uge'] == "nej")
  11. {
  12. $hent_guldkorn = mysql_query("SELECT * FROM sms_send WHERE kategori = 'guldkorn'") or die(mysql_error());
  13.
  14. $hent_jokes = mysql_query("SELECT * FROM sms_send WHERE kategori = 'jokes'") or die(mysql_error());
  15.
  16. $hent_kerlighed = mysql_query("SELECT * FROM sms_send WHERE kategori = 'kerlighed'") or die(mysql_error());
  17.
  18. $hent_astrologi = mysql_query("SELECT * FROM sms_send WHERE kategori = 'astrologi'") or die(mysql_error());
  19.
  20. $hent_motion = mysql_query("SELECT * FROM sms_send WHERE kategori = 'motion'") or die(mysql_error());
  21.
  22.
  23. }
  24. #Send sms med penge i taksering
  25. elseif($vis_nummer['tilmeldt_en_uge'] == "ja")
  26. {
  27. $hent_guldkorn = mysql_query("SELECT * FROM sms_send WHERE kategori = 'guldkorn'") or die(mysql_error());
  28.
  29. $hent_jokes = mysql_query("SELECT * FROM sms_send WHERE kategori = 'jokes'") or die(mysql_error());
  30.
  31. $hent_kerlighed = mysql_query("SELECT * FROM sms_send WHERE kategori = 'kerlighed'") or die(mysql_error());
  32.
  33. $hent_astrologi = mysql_query("SELECT * FROM sms_send WHERE kategori = 'astrologi'") or die(mysql_error());
  34.
  35. $hent_motion = mysql_query("SELECT * FROM sms_send WHERE kategori = 'motion'") or die(mysql_error());
  36. }
  37.
  38.
  39.
  40. ?>
Avatar billede leif Seniormester
12. august 2009 - 18:48 #32
Nu ville jeg jo gøre det lidt anderledes umiddelbart....


sms_modtag = alle modtagere
sms_send = jokes som skal sendes

$hent_guldkorn = mysql_query("SELECT * FROM sms_send WHERE kategori = 'guldkorn'") or die(mysql_error());
$guldkorn = mysql_fetch_array($hent_guldkorn)


$hent_nummer = mysql_query("SELECT * FROM sms_modtag WHERE `kategori` = 'jokes'") or die(mysql_error());

while($vis_nummer = mysql_fetch_array($hent_nummer) {
//SEND SMS
}
Avatar billede sijmonj Nybegynder
12. august 2009 - 19:46 #33
hm kan ikke lige se hvordan det der sku komme til at virke

sms_modtag = alle modtagere, hvad er det til :)?.


$hent_guldkorn = mysql_query("SELECT * FROM sms_send WHERE kategori = 'guldkorn'") or die(mysql_error());
$guldkorn = mysql_fetch_array($hent_guldkorn)


$hent_nummer = mysql_query("SELECT * FROM sms_modtag WHERE `kategori` = 'jokes'") or die(mysql_error());

while($vis_nummer = mysql_fetch_array($hent_nummer) {
//SEND SMS
}

er det der ikke noget fejl i det, hvorfor henter du 2 forskellige kategorier og kun laver en while på den ene?
Avatar billede leif Seniormester
12. august 2009 - 19:54 #34
Ja, jeg skrev fejl

$hent_guldkorn = mysql_query("SELECT * FROM sms_send WHERE kategori = 'jokes'") or die(mysql_error());
$jokes = mysql_fetch_array($hent_jokes)


$hent_nummer = mysql_query("SELECT * FROM sms_modtag WHERE `kategori` = 'jokes'") or die(mysql_error());

while($vis_nummer = mysql_fetch_array($hent_nummer) {
//SEND SMS
}





Tabeller:
sms_modtag = alle mobilnumre
sms_send = alle beskeder som skal sendes


Jeg laver en While løkke på sms_modtag så den poster en SMS til coolsms for hver nummer der skal sendes en SMS til.
Avatar billede leif Seniormester
12. august 2009 - 19:56 #35
Men afhængig af antallet af potentielle modtagere skal du overveje en log funktion således at når smsen er sendt bliver den logget således at hvis udsendelsen stopper så kan du blot genstarte den og den vil forsætte fra hvor den slap.
Avatar billede sijmonj Nybegynder
12. august 2009 - 20:03 #36
jah god idé, men så stort vil jeg heller ikke lave systemet

men forstår stadig ikke, hvorfor du laver den første mysql query
Avatar billede sijmonj Nybegynder
12. august 2009 - 20:06 #37
skal jeg ikke gøre det sådan her


        $hent_guldkorn = mysql_query("SELECT * FROM sms_send WHERE kategori = 'guldkorn'") or die(mysql_error());
        while($vis_guldkorn = mysql_fetch_array($hent_guldkorn))
        {
           
        }
       
        $hent_jokes = mysql_query("SELECT * FROM sms_send WHERE kategori = 'jokes'") or die(mysql_error());
        while($vis_jokes = mysql_fetch_array($hent_jokes))
        {
           
        }
Avatar billede leif Seniormester
12. august 2009 - 20:10 #38
Du snakkede om at du ville ligge de jokes som skal sendes i en tabel ?

Den kunne fx. hedde sms_send

Så skal du jo først hente den Tekst ud du vil sende derefter finde du alle som skal modtage den og så sender du det til coolsms
Avatar billede sijmonj Nybegynder
12. august 2009 - 23:09 #39
damm det her er kryptisk man!.


har det her endtil videre som cronjobbet skal besøge



<?php

include("../config.php");

$hent_nummer = mysql_query("SELECT * FROM sms_modtag") or die(mysql_error());
$vis_nummer = mysql_fetch_array($hent_nummer);

$difference = time() - $created;

if ($difference >= 604800) {

# Do something

}

    #Send sms med 0 kr i taksering
    if($vis_nummer['tilmeldt_en_uge'] == "nej")
    {
        if(besked = "guldkorn")
        {
            $hent_guldkorn = mysql_query("SELECT * FROM sms_send WHERE kategori = 'guldkorn'") or die(mysql_error());
            while($vis_guldkorn = mysql_fetch_array($hent_guldkorn))
            {
                #send sms
            }
        }
       
       
       
       

       
        $hent_jokes = mysql_query("SELECT * FROM sms_send WHERE kategori = 'jokes'") or die(mysql_error());
        while($vis_jokes = mysql_fetch_array($hent_jokes))
        {
           
        }
       
        $hent_kerlighed = mysql_query("SELECT * FROM sms_send WHERE kategori = 'kerlighed'") or die(mysql_error());
       
        $hent_astrologi = mysql_query("SELECT * FROM sms_send WHERE kategori = 'astrologi'") or die(mysql_error());
       
        $hent_motion = mysql_query("SELECT * FROM sms_send WHERE kategori = 'motion'") or die(mysql_error());
       
       
    }
    #Send sms med penge i taksering
    elseif($vis_nummer['tilmeldt_en_uge'] == "ja")
    {
        $hent_guldkorn = mysql_query("SELECT * FROM sms_send WHERE kategori = 'guldkorn'") or die(mysql_error());
       
        $hent_jokes = mysql_query("SELECT * FROM sms_send WHERE kategori = 'jokes'") or die(mysql_error());
       
        $hent_kerlighed = mysql_query("SELECT * FROM sms_send WHERE kategori = 'kerlighed'") or die(mysql_error());
       
        $hent_astrologi = mysql_query("SELECT * FROM sms_send WHERE kategori = 'astrologi'") or die(mysql_error());
       
        $hent_motion = mysql_query("SELECT * FROM sms_send WHERE kategori = 'motion'") or die(mysql_error());
    }



?>



først så tjekker jeg om en person har været tilmeldt 1 uge (ikke helt færdigt hvordan det skal sættes op)

så tjekker jeg om der står nej (altså om han har været tilmeldt i mere end 1 uge) og det har han ikke.

så tager jeg besked fra sms_modtag tabellen og tjekker hvad for en kategori han har tilmeldt sig

så tager jeg alt fra tabellen sms_send som er det som min kunde har skrevet (der skal jeg nok sætte noget LIMIT på 1)

og så skal jeg så sende en sms.

for at den ikke skal sende den samme sms til en person 2 gange, skal jeg så ikke slette de ting som er i den kolonne den har sendt og eventuelt få det overført til en anden tabel som hedder sms_udbakke.


Tusind tak fordi du gider hjælpe mig med det her :)
Avatar billede leif Seniormester
13. august 2009 - 09:21 #40
Der er flere måder at sikre at tingene ikke sendes 2 gange......

En måde er at have en tabel (fx. sms_udbakke) hvor alle SMS bliver lagt før de sendes til CoolSMS og hvor du har at Unik på felterne nummer og besked således at hvis den prøver at gemme fx:

12345678:Test besked
12345678:Test besked



Så vil den sidste ikke blive gemt.

Og ud fra sms_udbakke sender du data til CoolSMS
Avatar billede leif Seniormester
13. august 2009 - 09:22 #41
Men jo i den tabel med jokes er det en god idé at have et felt fx. sendt hvor du sætter om teksten er afsendt 1 gang
Avatar billede sijmonj Nybegynder
13. august 2009 - 14:41 #42
i starten er det lige meget om personen får 2 smser.

skal bare lige have styr på det med at den skal finde ud af hvem som har tilmeldt sig jokes og så skal den sende en sms til alle som er tilmeldt jokes og det samme med de andre kategorier, kan du hjælpe mig med det da jeg ikke helt kan se hvordan det skal være :(
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester