it-swarm.com.de

SMS von der Webanwendung

Ich möchte nur SMS von meiner Webanwendung in PHP aus verschicken. Kann mir jemand sagen, wie ich das machen soll? Was ist alles, was ich dafür tun muss?

59
Shyju

Ich weiß nicht, ob dies für Sie zutrifft, aber was ich oft getan habe, um mir das Geld zu sparen, ist, den Benutzer in seinem Profil zu fragen, was sein Träger ist, und dann versucht, ihn mit this list abzugleichen. Im Wesentlichen haben viele/die meisten Netzbetreiber eine E-Mail-Adresse, die mit einer Telefonnummer verbunden ist, über die Sie leicht Texte an die Nummer senden können. Wenn Sie beispielsweise über ATT verfügen und Ihre Telefonnummer 786-262-8344 lautet, wird Ihnen eine E-Mail an [email protected] eine Kurzmitteilung mit dem Betreff/Text der E-Mail kostenlos senden. Diese Technik wird so ziemlich alle Ihre US-Benutzer kostenlos abdecken. Abhängig von den Anforderungen Ihrer Anwendung ist dies natürlich nicht möglich/nicht ausreichend/erwünscht, es ist jedoch eine Option, die Sie beachten sollten.

48

Ihre Hauptoption zum Senden von SMS -Nachrichten ist die Verwendung eines vorhandenen SMS -Providers. Nach meiner Erfahrung (die bei SMS Messaging-Webanwendungen umfangreich ist) werden Sie häufig feststellen, dass Verhandlungen mit verschiedenen Anbietern der beste Weg sind, um das beste Angebot für Ihre Anwendung zu erzielen.

Verschiedene Anbieter bieten oft unterschiedliche Dienste und Funktionen an. Mein Lieblingsanbieter und in der Tat ist der TM4B ( http://www.tm4b.com ) derjenige, der in der Vergangenheit gerne mit mir für niedrigere Tarife verhandelt hat. Diese Jungs haben ausgezeichnete Preise, decken einen großen Teil der Welt ab und haben einen exzellenten Kundenservice.

Nachfolgend finden Sie Code, der aus einer meiner Live-Webanwendungen extrahiert wurde (und einige Teile verschleiert), um eine einfache Nachricht über die API zu senden:

require_once("tm4b.lib.php");
$smsEngine = new tm4b();

// Prepare the array for sending
$smsRequest["username"] = "YOURUNAME";
$smsRequest["password"] = "YOURPWORD";
$smsRequest["to"] = "+441234554443";
$smsRequest["from"] = "ME!";
$smsRequest["msg"] = "Hello, test message!";

// Do the actual sending
$smsResult = $smsEngine->ClientAPI($smsRequest);

// Check the result
if( $smsResult['status'] == "ok" ) {
    print "Message sent!";
} else {
    print "Message not sent.";
}

Viele andere Anbieter, die ich in der Vergangenheit verwendet habe, haben sehr ähnliche Schnittstellen und alle sind wirklich wettbewerbsfähig, was die Preisgestaltung angeht. Sie müssen sich nur nach einem Anbieter umsehen, der Ihren Bedürfnissen entspricht.

In Bezug auf die Kosten sehen Sie Preise für die meisten westlichen Länder von wenigen Pence/Cents (die Preise für die meisten Länder der Dritten Welt sind jedoch etwas höher, also passen Sie auf). Die meisten Anbieter müssen in großen Mengen zahlen, wenn Sie anständige Preise von ihnen wünschen, aber sie verhandeln oft mit Ihnen über "kleinere als übliche" Chargen. Die meisten Anbieter bieten eine Nachzahlungsoption an, aber nur, wenn Sie einige Transaktionen erfolgreich mit ihnen abgeschlossen haben ... andere bieten sie von Anfang an an, aber die Preise sind unberechenbar.

26
James B

Nur senden, aber billig und einfach

Der einfachste Weg ist definitiv die Verwendung des E-Mail-Hack, den @ Paolo Bergantino oben erwähnt hat. Es ist einfach, Ihre Benutzer aufzufordern, ihre Telefonnummer einzugeben und ihren Netzbetreiber aus einer Liste auszuwählen. Es ist auch einfach, auf absolut jeder Entwicklungsplattform eine E-Mail zu senden, sobald Sie die Benutzerinformationen haben.

Es gibt jedoch zwei sehr wichtige Einschränkungen, die ich bei diesem Ansatz festgestellt habe:

  1. Das erste ist, dass die Mobilfunkbetreiber alle SMS Nachrichten, die über ihre E-Mail-Gateways gesendet werden, vor dem anderen SMS Verkehr priorisieren. Wahrscheinlich, weil sie nicht vom Absender dafür bezahlt werden. Verwenden Sie diese Methode nicht, wenn Ihnen die Minimierung der Latenz wichtig ist.
  2. Der zweite Grund ist, dass Benutzer gerade in dieser modernen Ära der tragbaren Telefonnummern von Zeit zu Zeit den Anbieter wechseln und mit ziemlicher Sicherheit vergessen werden, es Ihnen mitzuteilen. Wenn Sie in der Lage sein müssen, in ein oder zwei Jahren zuverlässig SMS Nachrichten an dieselben Personen zu senden, schlägt diese Methode fehl.

günstig senden und empfangen

Wenn Sie versuchen, auf Ihrer Website das Senden und Empfangen von SMS Nachrichten für ein begrenztes Budget einzurichten, können Sie einen Dienst wie TextMarks) verwenden . Mit TextMarks können Sie ein Schlüsselwort für Ihren Dienst auswählen, mit dem Benutzer Nachrichten über den gemeinsam genutzten Funktionscode 41411 von TextMarks an Sie weiterleiten können. Der Haken dabei ist, dass sie in jeder Nachricht 20 Zeichen für Kurzwerbung reservieren, um ihre Dienste zu bezahlen.

Professionelle Qualität

Wenn Sie eine geringe Latenz, hohe Zuverlässigkeit und keine Werbung benötigen, müssen Sie einen SMS - Aggregator durchlaufen, es sei denn, Sie sind groß genug, um mit jedem Netzbetreiber einzeln zu verhandeln.

Das Wichtigste, worauf ich bei SMS Aggregatoren achten muss, ist, dass viele von ihnen wirklich als Marketingunternehmen und nicht als Anwendungs-Hosts eingerichtet sind - sie verstehen die Verwendung von SMS als Kanal, über den Benutzer mit Dienstanbietern interagieren können. Ich habe festgestellt, dass die Aggregatoren, die den Ausdruck "Ihre Kampagne" anstelle von "Ihre Anwendung" verwenden, die schlimmsten Straftäter sind. Halten Sie sich von ihnen fern und suchen Sie einen Aggregator, der Ihre Anforderungen als Anwendungsentwickler versteht.

12
sblom

Twilio hat kürzlich eine API zum Senden von SMS -Nachrichten veröffentlicht. Die API ist ziemlich einfach, eine grundlegende REST - Schnittstelle zum Senden von SMS und ein Post, das ein Dokument zurücksendet, um zu antworten .

11
Tim Lytle

Hallo, mein Name ist Jarod und ich arbeite für Twilio.com, also bin ich ein bisschen voreingenommen. Trotzdem ist es unglaublich einfach, eine SMS von Ihrer PHP - Webanwendung mithilfe der Twilio REST - API zu senden. Hier ist ein einfaches Beispiel:

<?php
// Get the PHP helper library from twilio.com/docs/php/install
require_once('/path/to/twilio-php/Services/Twilio.php'); // Loads the library

// Your Account Sid and Auth Token from twilio.com/user/account
$sid = "{{ account_sid }}"; 
$token = "{{ auth_token }}"; 
$client = new Services_Twilio($sid, $token);

$client->account->messages->sendMessage("+14158141829", "+14159352345", "Hi Shyju, Sorry it took me so long to get back to you. <3 The Internet.");
8
Jarod Reyes

Wir verwenden dazu eine kommerzielle Lösung namens TextAnywhere .

Gegen eine geringe Gebühr (einige Pence pro SMS) erhalten Sie einen Webdienst (plus APIs für .NET, ASP, Java, C++ usw.). Es ist einfach und funktioniert, obwohl es nicht kostenlos ist.

Im Grunde ist es so einfach, eine URL-Anfrage mit der Nummer und dem Nachrichtentext in QueryString zu erstellen, und der Server erledigt den Rest für Sie.

4
Dylan Beattie

Wenn Sie den Träger kennen, sind Sie golden. Die meisten haben E-Mail-Gateways. Andernfalls können Sie die Clickatell-API verwenden, die etwa 0,04 US-Dollar pro Nachricht kostet. Ich schaue in einen Hack, wo Sie ein GSM-Modem und Ihren individuellen Handyplan mit unbegrenzter SMS verwenden würden. Das kann viel Geld sparen, wenn es funktioniert.

4
Tony

Wenn Sie bereit sind, in ein Android-Smartphone zu investieren, können Sie ein eigenes SMS - Gateway einrichten, das am Ende günstiger ist.

Ich benutze SMS GATEWAY ME - Dies ist eine kostenlose Android-App, die Sie wie folgt senden können:

$URL = "http://v2.smsgateway.me/API/Send/Single.php";

$postdata = http_build_query(
    array(
    'Username' => "[email protected]",
    'Password' => "password",
    'Number' => "+447791064782",
    'Message' => "Hello World!",
    )
);

$opts = array('http' => array('method'  => 'POST', 'header'  => 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata));

$context  = stream_context_create($opts);

$result = file_get_contents($URL, false, $context);

Auf ihrer Site gibt es eine Dokumentation, in der Sie erfahren, wie Sie auch eingehende Nachrichten annehmen können.

3
user3144832

mit dk text können Sie nicht nur Massennachrichten an anfragende Kunden senden, sondern werden in Kürze die Google Voice-Integration bereitstellen, um dasselbe System mit Ihrem Google Voice-Konto zu verwenden

2
Michael

Um SMS von einer Webanwendung aus zu senden, müssen Sie Ihre Anwendung mit dem SMS - Gateway verbinden. Die meisten SMS - Gateways bieten eine externe API, die dazu verwendet werden kann. Sie verfügen in der Regel über eine Dokumentation, mit der Sie herausfinden können, wie Sie die Benachrichtigung SMS in Ihren PHP -Code integrieren. Leider gibt es keine zuverlässigen kostenlosen SMS-Dienste, so dass Sie für diesen SMS-Dienst bezahlen müssen. Sie können http://www.phpjabbers.com/web-sms/ überprüfen, was sehr einfach zu funktionieren scheint. Ihr Integrationscode ist ziemlich einfach:

<?php
$SMSLIB["phone"] = '44111222333'; // your phone number
$SMSLIB["key"] = 'abcdefghijklmnopqrs'; // your personal API code
include("smslib.php"); // we will provide you with smslib.php file
sendSMS("test message", $SMSLIB["phone"]); // function which sends the message
?>
2
george

Wenn Sie eine zuverlässige Methode zum Senden vieler SMS benötigen, sollten Sie nach einem SMS - Dienstanbieter suchen, der als Web für das SMS - Gateway fungiert. In diesem Fall gibt es eine http-basierte Schnittstelle, über die Sie SMS senden können, indem Sie eine URL aufrufen und Empfänger und Nachricht als Parameter übergeben.

2
lcvinny

Ich musste vor kurzem die benutzerinitiierte SMS-Funktionalität auf unserer Website implementieren und fand den www.dotgo.com-Dienst hilfreich. Es ist kostenlos ... es sieht so aus, als ob es von einigen Doktoranden als eine Art zustandsloses Messaging-Framework erstellt wurde (denken Sie an das http request-response-Modell).

Damit es funktioniert, richten Sie eine "index.crml" -Datei ein (ähnlich wie index.html, php usw.). Unseres sieht so aus (es tut mir leid, dass alles auf eine Zeile gesetzt wurde ... weil es einige Probleme gab, die dazu führen, dass es sonst angezeigt wird):

<?xml version="1.0" encoding="UTF-8"?><cmrl xmlns:dotgo="http://dotgo.com/cmrl/1.0"><match pattern="*"><engine href="http://www.bulbstorm.com/sms/flashbulb.php"/></match></cmrl>

Auf unserer Site verweist die Indexdatei wiederum auf die Datei /sms/flashbulb.php, die (ausgenommen das Öffnen und Schließen von PHP-Tags) folgendermaßen aussieht:

$wordArray = explode(' ',$_REQUEST['sys_argument']);
$username = strip_tags($wordArray[0]);
$messageBody = str_replace($username.' ', '', $_REQUEST['sys_argument']);
require_once 'Database.php';
$dbh = new Database('bulbstorm');
$args = array($username, $messageBody);
$dbh->execMysqlProc('uspAddFlashbulb', $args);
print "<message><content>Bulb received and saved to your account</content></message>";

Jedenfalls füge ich nur den Code hinzu, um ein Gefühl dafür zu geben, wie das Framework funktioniert und wie wenig Code geschrieben werden muss, um etwas Funktionelles zu erhalten.

Es gibt einige Einschränkungen. Das Wichtigste ist, dass alles vom Benutzer initiiert wird. Wenn Sie also in erster Linie ausgehende Nachrichten senden möchten, bei denen der Benutzer keine Nachricht an Ihre Site sendet, um die Antwortnachricht zu erhalten, ist dies wahrscheinlich nicht das, was Sie möchten. Wir haben für das gearbeitet, was wir gemacht haben. Einer der Gründer antwortete sogar persönlich auf eine E-Mail-Frage und war sehr hilfreich.

Eine der Funktionen, die wir bisher noch nicht genutzt haben, ist jedoch deren Abonnementfunktionalität. Die Benutzer können sie so einrichten, dass das dotgo-System regelmäßig eine Seite auf Ihrer Site abfragt und eine SMS-Nachricht per SMS an das Telefon sendet Zeitplan, den der Benutzer angibt. Wieder habe ich es nicht so weit gebracht, fand es aber interessant.

1
codemonkey

Mobile Text Alerts hat eine PHP - API zum Versenden von SMS - Nachrichten.

0
Jimmy Pelton

Grundsätzlich verfügt jeder Carrier über ein E-Mail-Gateway, an das Sie eine E-Mail senden müssen. Sie müssen den Spediteur im Voraus wissen, damit Sie wissen, an welche E-Mail-Adresse die SMS -Nachricht gesendet werden soll.

0
Ariel

Ich denke, es ist die älteste Frage zu diesem Thema ... Meistens Antworten - Werbung für bezahlte Gateways ... Aber es gibt einen weiteren Weg - SMS von einem Android-Gerät (SIM-Karte), Android-Gateway ... Ich habe erstellt Eine kostenlose Open Source-Anwendung mit einfacher API: https://github.com/pavelakafoks/SmsTransmitter Google play: https://play.google.com/store/apps/details?id= info.ininfo.smstransmitter Sie können meine Anwendung für Ihre Website verwenden oder eine eigene Android-Anwendung erstellen, die auf meinen Quellen basiert . Sie ist günstiger als Internet-SMS-Gateways . Ich hoffe, es wird nützlich sein für jemanden.

0

Es gibt mehrere SMPP-Bibliotheken für PHP. Eine davon ist die folgende. Dies ist das Protokoll, das zur Kommunikation mit einem SMS -Server verwendet wird.

http://pear.php.net/reference/Net_SMPP-0.4.3/Net_SMPP/_SMPP_Net_SMPP-0.4.3_SMPP_php.html

0
ng.

Sie können unser API und dieses Tutorial verwenden, das das Thema behandelt.

Im Grunde ist das Senden einzelner SMS jedoch so einfach wie das Senden von HTTP POST Anfrage:

curl -X "POST" https://api.wavecell.com/sms/v1/amazing_hq/single \
    -u amazing:1234512345 \
    -H "Content-Type: application/json" \
    -d $'{ "source": "AmazingDev", "destination": "+6512345678", "text": "Hello, World!" }'

Wo amazing Ihr Konto ist, 1234512345 - das Kennwort (stärkere Kennwörter verwenden!) Und amazing_hq Ihr Unterkonto.

Was in ... resultiert:  SMS

Details zum Senden von HTTP-Anforderungen in PHP werden in den folgenden Fragen behandelt:

0
astef

Es ist eine gute Idee, eine Multigateway-Lösung zu verwenden. Ich habe eine für meine Zwecke erstellt, aber ich denke, es könnte für alle nützlich sein, die eine einfache Einrichtung wünschen: https://packagist.org/packages/orajo/sms-zilla

$smsSender = new SmsZilla\SmsSender(new SmsZilla\Adapter\MockAdapter());

$smsSender->setRecipient('605123456');
// adding more recipients (with and without country code)
$smsSender->setRecipient(['511654321', '48511654987', '+41751654987']);

$smsSender->setText("Message text");
$result = $smsSender->send();

Im Moment unterstützt diese Bibliothek 5 Anbieter, der sechste ist in dev und andere sind geplant.

Ich habe die folgende SMS API-URL in PHP mit der jQuery-Methode "ajax" verwendet. Außerdem können Sie alle einzelnen SMS-Details in der MySQL-Datenbank speichern, um sie zu verfolgen.

demo SMS Gateway-API mit PHP und Ajax

0
kva
function sendSMS($number,$message) {
    $request = message api link;

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $request);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $response = curl_exec($ch);
    curl_close($ch);
    return split(',',$response);
}
0
shiyani suresh