web-dev-qa-db-fra.com

SMS depuis une application web

Je souhaite simplement envoyer SMS à partir de mon application Web en PHP . Quelqu'un peut-il me dire comment faire cela?

59
Shyju

Je ne sais pas si cela s'applique à vous, mais ce que j'ai souvent fait pour économiser de l'argent, c'est demander à l'utilisateur de son profil ce qu'est son opérateur, puis j'ai essayé de le faire correspondre à this list . Pour l’essentiel, la plupart des opérateurs disposent d’une adresse électronique reliée à un numéro de téléphone qui vous permettra d’envoyer facilement des SMS. Par exemple, si vous avez ATT et que votre numéro de téléphone est le 786-262-8344, un courrier électronique à l'adresse [email protected] vous enverra gratuitement un message texte avec le sujet/le corps du courrier électronique. Cette technique couvrira à peu près tous vos utilisateurs américains gratuitement. Évidemment, selon les besoins de votre application, cela peut ne pas être possible/adéquat/souhaité, mais c'est une option à connaître.

48
Paolo Bergantino

Votre principale option pour envoyer des messages SMS consiste à utiliser un fournisseur SMS existant. D'après mon expérience (qui concerne de nombreuses applications Web de messagerieSMS, vous constaterez souvent que négocier avec différents fournisseurs est le meilleur moyen d'obtenir la meilleure offre possible pour votre application.

Différents fournisseurs offrent souvent des services et des fonctionnalités différentes. Mon fournisseur préféré, et même celui qui a négocié avec moi des taux plus bas par le passé, est TM4B ( http://www.tm4b.com ). Ces gars-là ont d'excellents tarifs, couvrent une très grande partie du globe et bénéficient d'un excellent service client.

Ci-dessous, quelques codes extraits (et certaines parties obscurcies) de l'une de mes applications Web en direct, pour l'envoi d'un message simple via leur 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.";
}

De nombreux autres fournisseurs que j'ai utilisés par le passé ont des interfaces très similaires et sont tous très compétitifs en termes de tarification. Vous devez simplement rechercher un fournisseur qui répond à vos besoins.

En ce qui concerne les coûts, les prix varient de quelques centimes pour la plupart des pays occidentaux (les prix sont un peu plus élevés pour la plupart des pays du tiers monde, alors méfiez-vous). La plupart des fournisseurs doivent payer en gros, si vous souhaitez obtenir des tarifs raisonnables, mais ils négocient souvent avec vous pour des lots "plus petits que d'habitude". La plupart des fournisseurs offrent une option de post-paiement, mais seulement lorsque vous avez effectué avec succès quelques transactions avec eux ... d’autres l’offrent dès le début, mais les prix sont exorbitants.

26
James B

Envoyer seulement, mais pas cher et facile

Le moyen le plus simple est certainement d'utiliser l'adresse électronique que @ Paolo Bergantino mentionnée ci-dessus. Il est facile de demander à vos utilisateurs de saisir leur numéro de téléphone et de sélectionner leur opérateur dans une liste. Il est également facile, sur n'importe quelle plate-forme de développement, d'envoyer un courrier électronique dès que vous avez les informations de l'utilisateur.

J'ai toutefois découvert deux limitations très importantes avec cette approche:

  1. La première est que les opérateurs cellulaires attribuent tous la priorité aux messages SMS envoyés via leurs passerelles de messagerie en dessous du trafic SMS. Probablement parce qu'ils ne sont pas payés par l'expéditeur pour ceux-ci. N'utilisez pas cette méthode si la réduction du temps de latence est importante pour vous.
  2. La seconde est que, particulièrement en cette ère moderne de numéros de téléphone portables, les utilisateurs changent d'opérateur de temps en temps et oublient presque certainement de vous le dire. Si vous devez pouvoir envoyer des messages SMS de manière fiable aux mêmes personnes dans un an ou deux, cette méthode commencera à échouer.

Envoyer et recevoir pour pas cher

Si vous essayez de configurer votre site pour envoyer et recevoir SMS messages sur un budget, vous pouvez utiliser un service tel que TextMarks . TextMarks vous permet de choisir un mot-clé pour votre service qui permet aux utilisateurs de vous acheminer des messages via le code abrégé partagé de TextMarks, 41411. Le problème ici est qu'ils réservent 20 caractères dans chaque message pour des annonces courtes afin de payer leurs services.

Qualité professionnelle

Si vous avez besoin d'une faible latence, d'une fiabilité élevée et de l'absence de publicité, vous devrez passer par un agrégateur SMS, sauf si vous êtes assez gros pour négocier individuellement avec chaque opérateur.

La chose la plus importante que j'ai constatée avec les agrégateurs SMS est que beaucoup d'entre eux sont réellement configurés pour être des sociétés de marketing, pas des hôtes d'applications - ils ne comprennent pas vraiment l'utilisation de SMS un canal par lequel les utilisateurs peuvent interagir avec des fournisseurs de services. J'ai constaté que les agrégateurs qui utilisent l'expression "votre campagne" plutôt que "votre application" sont les pires contrevenants. Éloignez-vous d'eux et trouvez un agrégateur qui comprend vos besoins en tant que développeur d'applications.

12
sblom

Twilio a récemment publié une API pour envoyer des messages SMS . L'API est plutôt simple, l'interface de base REST pour envoyer SMS , et un retour du document renvoyé pour répondre .

11
Tim Lytle

Bonjour, je m'appelle Jarod et je travaille pour Twilio.com, donc je suis un peu partial. Cela dit, il est extrêmement facile d’envoyer un SMS à partir de votre application Web PHP à l’aide de l’API Twilio REST . Voici un exemple simple:

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

Nous utilisons une solution commerciale appelée TextAnywhere pour cela.

Pour un prix modique (quelques sous par SMS), ils vous fournissent un service Web (plus des API pour .NET, ASP, Java, C++, etc.). C'est facile et ça marche, même si ce n'est pas gratuit.

En gros, il suffit de faire une demande d’URL avec le numéro et le texte du message dans QueryString, et leur serveur fait le reste pour vous.

4
Dylan Beattie

Si vous connaissez le transporteur, vous êtes en or. La plupart ont des passerelles de messagerie. Sinon, vous pouvez utiliser l’API Clickatell qui coûte environ 0,04 USD par message. Je suis en train de chercher un endroit où vous utiliseriez un modem GSM et votre forfait téléphonique individuel avec SMS illimités. Cela pourrait économiser beaucoup d'argent si cela fonctionne.

4
Tony

Si vous êtes prêt à investir dans un téléphone intelligent Android, vous pouvez configurer votre propre passerelle SMS qui est finalement moins chère.

J'utilise SMS GATEWAY ME qui est une application gratuite pour Android, vous pouvez envoyer un message comme celui-ci:

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

Une documentation sur leur site vous indique également comment accepter les messages entrants.

3
user3144832

dk text vous permet non seulement d'envoyer des messages texte en vrac à des clients demandeurs, mais fournira bientôt l'intégration de Google Voice à l'utilisation du même système avec votre compte Google Voice

2
Michael

Pour envoyer SMS depuis une application Web, vous devez connecter votre application à la passerelle SMS. La plupart des passerelles SMS fournissent des API externes qui peuvent être utilisées à cette fin. Ils disposent généralement d'une documentation que vous pouvez utiliser pour savoir comment intégrer la notification SMS dans votre code PHP. Malheureusement, il n’existe aucun service SMS gratuit et fiable, vous devez donc payer pour ce service SMS. Vous pouvez vérifier http://www.phpjabbers.com/web-sms/ qui semble fonctionner facilement. Leur code d'intégration est assez simple:

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

Si vous avez besoin d’un moyen fiable d’envoyer de nombreux SMS, vous devez rechercher un fournisseur de services SMS agissant en tant que passerelle Web vers la passerelle SMS. Dans ce cas, il y aura une interface basée sur http, vous permettant d’envoyer SMS en appelant une URL et en transmettant le destinataire et le message en tant que paramètres.

2
lcvinny

Récemment, j'ai dû implémenter une fonctionnalité de sms initiée par l'utilisateur sur notre site Web et le service www.dotgo.com m'a été utile. C'est gratuit ... on dirait qu'il a été créé par un couple de docteurs en tant que sorte d'infrastructure de messagerie sans état (comme le modèle de requête http-réponse).

Pour que cela fonctionne, vous configurez un fichier "index.crml" (similaire à index.html, php, etc.). Le nôtre ressemble à ceci (désolez de tout mettre sur une seule ligne ... avoir quelques problèmes à le faire afficher autrement):

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

Sur notre site, le fichier index référence à son tour le fichier /sms/flashbulb.php, qui (à l’exclusion des balises php d’ouverture et de fermeture) ressemble à ceci:

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

Quoi qu'il en soit, je n'inclus que le code pour donner une idée de la façon dont le framework fonctionne et du peu de code à écrire pour obtenir quelque chose de fonctionnel.

Il y a quelques limitations. Le plus important étant que tout est initié par l'utilisateur. Donc, si vous souhaitez principalement envoyer des messages sortants qui ne sont pas précédés par l'envoi d'un message par votre utilisateur sur votre site pour obtenir le message de réponse, ce n'est probablement pas ce que vous voulez. Travaillé pour ce que nous faisions bien. L'un des fondateurs a même personnellement répondu à une question envoyée par courrier électronique et a été très utile.

Une des fonctionnalités que nous n’avons pas encore utilisées, mais que nous avons envisagées, est leur fonctionnalité d’abonnement ... où les utilisateurs peuvent la configurer de sorte que le système dotgo interroge périodiquement une page de votre site, en envoyant un message SMS à leur planifier l'utilisateur spécifie. Encore une fois, je ne l'ai pas poussée aussi loin, mais j'ai pensé que c'était intéressant.

1
codemonkey

Alertes texte mobiles dispose d'une API PHP pour l'envoi de messages SMS.

0
Jimmy Pelton

Fondamentalement, chaque opérateur dispose d'une passerelle de messagerie à laquelle vous devrez envoyer un courrier électronique. Vous devrez connaître le transporteur à l'avance pour savoir quelle adresse électronique envoyer le message SMS.

0
Ariel

Je pense que c’est la question la plus ancienne de ce thème . Principalement des réponses - publicité pour les passerelles payantes . Mais il existe un moyen supplémentaire - sms à partir d’un appareil Android (carte sim), passerelle Android . J’ai créé une application open source gratuite avec une API simple: https://github.com/pavelakafoks/SmsTransmitter Google play: https://play.google.com/store/apps/details?id= info.ininfo.smstransmitter Vous pouvez utiliser mon application pour votre site ou créer votre propre application Android à partir de mes sources . C’est plus économique que les passerelles Internet par sms . J'espère que cela vous sera utile pour quelqu'un.

0
Pavel Samoylenko

Il existe plusieurs bibliothèques SMPP disponibles pour PHP, l’une des suivantes. C'est le protocole utilisé pour communiquer avec un serveur SMS.

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

0
ng.

Vous pouvez utiliser notre API et ce tutoriel qui couvre le sujet.

Mais, fondamentalement, envoyer un seul SMS est aussi simple qu’envoyer HTTP POST request:

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

amazing est votre compte, 1234512345 - le mot de passe (utilisez des mots de passe plus forts!) Et amazing_hq est votre sous-compte.

Ce qui résulte en:  SMS

Les détails concernant l'envoi d'une requête HTTP dans PHP sont traités dans les questions suivantes:

0
astef

C'est une bonne idée d'utiliser la solution multigateway. J'en ai créé un pour mes besoins, mais je pense que cela pourrait être utile à quiconque souhaite configurer facilement: 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();

Actuellement, cette bibliothèque prend en charge 5 fournisseurs, le 6ème est en développement et d’autres sont prévus.

0

J'ai utilisé l'URL de l'API SMS ci-dessous dans PHP avec la méthode jQuery ajax et vous pouvez également stocker chaque détail de sms dans la base de données mysql à suivre.

demo SMS API de passerelle en utilisant PHP et 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