SMS van webapplicatie

Ik wil alleen sms’en vanuit mijn webtoepassing in PHP.
Kan iemand mij vertellen hoe dit te doen?
Wat moet ik hiervoor allemaal doen?


Antwoord 1, autoriteit 100%

Ik weet niet of dit op jou van toepassing is, maar wat ik vaak heb gedaan om mezelf geld te besparen, is de gebruiker in zijn profiel vragen wat zijn provider is, en het vervolgens proberen te matchen met this list. In wezen hebben veel/de meeste providers een e-mailadres dat is gekoppeld aan een telefoonnummer waarmee u gemakkelijk sms’jes naar het nummer kunt sturen. Als u bijvoorbeeld ATT heeft en uw telefoonnummer 786-262-8344 is, stuurt een e-mail naar [email protected] u gratis een sms met het onderwerp/de hoofdtekst van de e-mail. Deze techniek dekt vrijwel al uw Amerikaanse gebruikers gratis. Het is duidelijk dat dit, afhankelijk van de behoeften van uw toepassing, niet mogelijk/voldoende/gewenst is, maar het is een optie om rekening mee te houden.


Antwoord 2, autoriteit 51%

Uw belangrijkste optie voor het verzenden van sms-berichten is het gebruik van een bestaande sms-provider. In mijn ervaring (die uitgebreid is met webapplicaties voor sms-berichten), zul je vaak merken dat onderhandelen met verschillende providers de beste manier is om de beste deal voor je applicatie te krijgen.

Verschillende providers bieden vaak verschillende services en verschillende functies. Mijn favoriete provider, en inderdaad degene die in het verleden graag met mij heeft onderhandeld over lagere tarieven, is TM4B (http:// www.tm4b.com). Deze jongens hebben uitstekende tarieven, bestrijken een groot deel van de wereld en hebben een uitstekende klantenservice.

Hieronder is wat code geëxtraheerd (en sommige delen verduisterd) van een van mijn live webapplicaties, voor het verzenden van een eenvoudig bericht via hun API:

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.";
}

Veel andere providers die ik in het verleden heb gebruikt, hebben zeer vergelijkbare interfaces en ze zijn allemaal erg concurrerend als het gaat om prijzen. Je hoeft alleen maar rond te kijken naar een provider die bij je past.

Wat de kosten betreft, kijk je naar prijzen die variëren van een paar pence/centen voor de meeste westerse landen (de prijzen zijn echter iets hoger voor de meeste derdewereldlanden, dus pas op). De meeste providers zul je in bulk moeten betalen als je fatsoenlijke tarieven van hen wilt, maar ze zullen vaak met je onderhandelen voor ‘kleinere’ batches. De meeste providers bieden wel een optie voor achteraf betalen, maar alleen als je een paar transacties met hen hebt voltooid… anderen bieden het vanaf het begin aan, maar de prijzen zijn woekerprijzen.


Antwoord 3, autoriteit 25%

Alleen verzenden, maar goedkoop en gemakkelijk

De eenvoudigste manier is beslist de e-mailhack te gebruiken die @Paolo Bergantinohierboven vermeld. U kunt uw gebruikers eenvoudig vragen hun telefoonnummer in te voeren en hun provider uit een lijst te selecteren. Het is ook gemakkelijk, op elk ontwikkelplatform, om een ​​e-mail te sturen zodra je de gebruikersgegevens hebt.

Er zijn echter twee zeer belangrijke beperkingen die ik heb ontdekt met die aanpak:

  1. De eerste is dat alle mobiele providers prioriteit geven aan sms-berichten die via hun e-mailgateways worden verzonden, onder ander sms-verkeer. Waarschijnlijk omdat ze hiervoor niet betaald worden door de afzender. Gebruik deze methode niet als het minimaliseren van latentie belangrijk voor u is.
  2. De tweede is dat, vooral in dit moderne tijdperk van draagbare telefoonnummers, gebruikers van tijd tot tijd van provider wisselen en vrijwel zeker vergeten het je te vertellen. Als u over een jaar of twee op betrouwbare wijze sms-berichten aan dezelfde mensen moet kunnen bezorgen, begint deze methode te mislukken.

Verzend en ontvang goedkoop

Als u uw site probeert in te stellen voor het verzenden van en ontvangensms-berichten met een beperkt budget, kunt u een service gebruiken zoals TextMarks. Met TextMarks kunt u een trefwoord voor uw service kiezen waarmee gebruikers berichten naar u kunnen routeren via de gedeelde korte code van TextMarks, 41411. Het probleem hier is dat ze 20 tekens in elk bericht reserveren voor korte advertenties om voor hun services te betalen.

Professionele kwaliteit

Als u een lage latentie, hoge betrouwbaarheid en geen advertenties nodig heeft, moet u vrijwel een sms-aggregator gebruiken, tenzij u groot genoeg bent om met elke provider afzonderlijk te onderhandelen.

Het grootste waar ik op moet letten bij sms-aggregators is dat veel van hen echt zijn opgezet als marketingbedrijven, niet als host van applicaties – ze begrijpen niet echt hoe sms wordt gebruikt als een kanaal waardoor gebruikers kunnen communiceren met dienstverleners. Ik heb ontdekt dat de aggregators die de uitdrukking “uw campagne” gebruiken in plaats van “uw aanvraag” de ergste overtreders zijn. Blijf bij hen uit de buurt en zoek een aggregator die uw behoeften als applicatieontwikkelaar begrijpt.


Antwoord 4, autoriteit 22%

Twilioheeft onlangs een API uitgebracht om SMS-berichten. De api is vrij eenvoudig, eenvoudige REST-interface om sms te verzenden, en een post-retourdocument om te reageren.


Antwoord 5, autoriteit 16%

Hallo, mijn naam is Jarod en ik werk voor Twilio.com, dus ik ben een beetje bevooroordeeld. Maar dat gezegd hebbende, het is ongelooflijk eenvoudig om een ​​sms te verzenden vanuit je PHP-webtoepassing met behulp van de Twilio REST-API. Hier is een eenvoudig voorbeeld:

<?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.");

Antwoord 6, autoriteit 8%

We gebruiken hiervoor een commerciële oplossing genaamd TextAnywhere.

Voor een kleine vergoeding (een paar pence per sms) geven ze je een webservice (plus API’s voor .NET, ASP, Java, C++, enz.). Het is gemakkelijk en het werkt, hoewel het niet gratis is.

In de basis is het zo simpel als het maken van een URL-verzoek met het nummer en de berichttekst in de QueryString, en hun server doet de rest voor u.


Antwoord 7, autoriteit 8%

Als je de koerier kent, ben je goud waard. De meeste hebben e-mailgateways. Als dat niet het geval is, kunt u Clickatell API gebruiken, die ongeveer $ 0,04 per bericht kost. Ik ben nu op zoek naar een hack waarbij je een GSM-modem en je individuele mobiele telefoonabonnement met onbeperkt sms zou gebruiken. Dit kan veel geld besparen als het werkt.


Antwoord 8, autoriteit 6%

Als u bereid bent te investeren in een Android-smartphone, kunt u uw eigen sms-gateway opzetten die uiteindelijk goedkoper uitkomt.

Ik gebruik SMS GATEWAY ME, een gratis Android-app waarmee je een bericht als volgt kunt verzenden:

$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);

Er is documentatie op hun site die u vertelt hoe u ook inkomende berichten kunt accepteren.


Antwoord 9, autoriteit 4%

Als u een betrouwbare manier nodig hebt om veel sms’jes te verzenden, moet u op zoek gaan naar een sms-serviceprovider die fungeert als een web-naar-sms-gateway. In dat geval zal er een op http gebaseerde interface zijn, waarmee u SMS kunt verzenden door een URL te bellen en de ontvanger en het bericht als parameters door te geven.


Antwoord 10, autoriteit 4%

dktext stelt u niet alleen in staat om bulk-sms-berichten te verzenden naar klanten die een verzoek indienen, maar zal binnenkort ook Google Voice-integratie bieden om hetzelfde systeem te gebruiken met uw Google Voice-account


Antwoord 11, autoriteit 4%

Als u SMS wilt verzenden vanaf een webtoepassing, moet u uw toepassing verbinden met SMS Gateway. De meeste SMS-gateways bieden een externe API die daarvoor kan worden gebruikt. Ze hebben meestal documentatie die u kunt gebruiken om erachter te komen hoe u sms-meldingen in uw PHP-code kunt integreren. Helaas zijn er geen betrouwbare gratis sms-services, dus je moet betalen voor deze sms-service. Je kunt http://www.phpjabbers.com/web-sms/controleren, wat lijkt werk heel gemakkelijk. Hun integratiecode is vrij eenvoudig:

<?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
?>

Antwoord 12, autoriteit 2%

Ik moest onlangs een door de gebruiker geïnitieerde sms-functionaliteit op onze website implementeren en vond de service www.dotgo.com nuttig. Het is gratis… het lijkt erop dat het door een paar PhD’s is gemaakt als een soort staatloos berichtenraamwerk (denk aan http-verzoek-antwoordmodel).

Om het werkend te krijgen, stelt u een “index.crml”-bestand in (vergelijkbaar met index.html, php, enz.). Die van ons ziet er zo uit (sorry dat ik het allemaal op één regel zet… heb wat problemen om het anders weer te geven):

<?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>

Op onze site verwijst het indexbestand op zijn beurt naar het bestand /sms/flashbulb.php, dat (exclusief het openen en sluiten van php-tags) er als volgt uitziet:

$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>";

Hoe dan ook, ik voeg de code alleen toe om een ​​idee te geven van hoe het framework werkt en hoe weinig code er hoeft te worden geschreven om iets functioneels te krijgen.

Er zijn enkele beperkingen. Het belangrijkste is dat alles door de gebruiker wordt gestart. Dus als u voornamelijk uitgaande berichten wilt verzenden die niet worden voorafgegaan door uw gebruiker die een bericht naar uw site stuurt om het antwoordbericht te “ontvangen”, dan is dit waarschijnlijk niet wat u wilt. Werkte echter voor wat we deden. Een van de oprichters reageerde zelfs persoonlijk op een vraag per e-mail en was erg behulpzaam.

Een van de functies die we nog niet hebben gebruikt, maar die we hebben overwogen, is hun abonnementsfunctionaliteit… waar gebruikers het zo kunnen instellen dat het dotgo-systeem periodiek een pagina op uw site peilt en een sms-bericht naar hun telefoon volgens het schema dat de gebruiker opgeeft. Nogmaals, ik ging niet zo ver, maar vond het interessant.


Antwoord 13

In principe heeft elke provider een e-mailgateway waarnaar u een e-mail moet sturen. U moet de koerier van tevoren kennen, zodat u weet naar welk e-mailadres u het sms-bericht moet verzenden.


Antwoord 14

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);
}

Antwoord 15

Het is een goed idee om een ​​multigateway-oplossing te gebruiken. Ik heb er een gemaakt voor mijn doeleinden, maar ik denk dat het nuttig kan zijn voor iedereen die het eenvoudig wil instellen: 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();

Op dit moment ondersteunt deze bibliotheek 5 providers, de zesde is in ontwikkeling en er zijn er nog meer gepland.


Antwoord 16

U kunt onze APIen deze tutorialdie het onderwerp behandelt.

Maar in principe is het verzenden van een enkele sms net zo eenvoudig als het verzenden van een HTTP POST-verzoek:

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!" }'

Waar amazinguw account is, 1234512345– het wachtwoord (gebruik sterkere wachtwoorden!) en amazing_hqis uw subaccount.

Wat resulteert in:
SMS

Details over het verzenden van HTTP-verzoeken in PHP worden behandeld in de volgende vragen:


Antwoord 17

Ik denk dat dit de oudste vraag van dit thema is.
Voornamelijk antwoorden – advertenties voor betaalde gateways.
Maar er is nog een manier – sms vanaf Android-apparaat (simkaart), Android-gateway.
Ik heb een gratis open source-applicatie gemaakt met een eenvoudige API: https://github.com/pavelakafoks/SmsTransmitter
Google play: https://play.google.com/store /apps/details?id=info.ininfo.smstransmitter
Je kunt mijn applicatie voor je site gebruiken of je eigen Android-applicatie bouwen op basis van mijn bronnen.
Het is goedkoper dan internet sms gateways.
Ik hoop dat het voor iemand nuttig zal zijn.

Other episodes