texto - sms php api
SMS desde la aplicaciĆ³n web (21)
Solo quiero enviar SMS desde mi aplicación web en PHP. ¿Puede alguien decirme cómo hacer esto? ¿Qué todas las cosas que necesito hacer para esto?
Básicamente, cada proveedor tiene una puerta de enlace de correo electrónico a la que deberá enviar un correo electrónico. Deberá conocer al transportista por adelantado para que sepa qué dirección de correo electrónico envía.
Creo que es la pregunta más antigua por este tema. Principalmente responde - publicidad de pasarelas pagas. Pero hay una forma más: sms desde un dispositivo Android (tarjeta SIM), gateway android. Creé una aplicación de código abierto con API simple: https://github.com/pavelakafoks/SmsTransmitter Google play: https://play.google.com/store/apps/details?id=info.ininfo.smstransmitter Puedes use mi aplicación para su sitio o cree su propia aplicación para Android basada en mis fuentes. Es más barato que las pasarelas de Internet sms. Espero que sea útil para alguien.
Es una buena idea usar una solución de múltiples vías. He creado uno para mis propósitos, pero creo que podría ser útil para cualquiera que quiera una configuración sencilla: 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();
En este momento, esta biblioteca admite 5 proveedores, la 6ª está en desarrollo y otras están planificadas.
Hay varias bibliotecas SMPP disponibles para PHP, una es la siguiente. Este es el protocolo utilizado para comunicarse con un servidor de SMS.
http://pear.php.net/reference/Net_SMPP-0.4.3/Net_SMPP/_SMPP_Net_SMPP-0.4.3_SMPP_php.html
He utilizado la URL de SMS API a continuación en PHP con el método jQuery ajax y también puede almacenar todos y cada uno de los detalles de sms en la base de datos mysql para realizar un seguimiento.
Hola, mi nombre es Jarod y trabajo para Twilio.com, así que soy un poco parcial. Pero dicho esto, es increíblemente fácil enviar un SMS desde su aplicación web PHP utilizando la API Twilio REST . Aquí hay un ejemplo 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.");
PHP necesita llamar al proveedor de servicios de mensajería externo RestAPIs para enviar SMS. Puede llamar de 2 maneras sencillas:
API de llamada usando Curl: necesita instalar curl en el servidor y usar como
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $sms_gateway_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
Otro uso PHP file_get_contents()
Aquí está la clase PHP y el código de prueba para enviar sms mediante el servicio Bulk sms gateway, que puedes probar con tu aplicación web.
Para enviar SMS desde una aplicación web, debe conectar su aplicación a SMS Gateway. La mayoría de las pasarelas SMS proporcionan API externa que se puede usar para hacer eso. Por lo general, tienen documentación que puede usar para averiguar cómo integrar la notificación de SMS en su código PHP. Lamentablemente, no hay ningún servicio de sms gratuito confiable, por lo que tiene que pagar por este servicio de sms. Puede consultar http://www.phpjabbers.com/web-sms/ que parece funcionar mucho más fácilmente. Su código de integración es bastante 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
?>
Puedes usar nuestra API y este tutorial que cubre el tema.
Pero, básicamente, enviar un solo sms es tan simple como enviar una solicitud HTTP POST:
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!" }''
Donde su cuenta es amazing
, 1234512345
- la contraseña (¡use contraseñas más fuertes!) Y amazing_hq
es su subcuenta.
Los detalles sobre el envío de solicitudes HTTP en PHP están cubiertos en las siguientes preguntas:
Si conoces a la compañía, eres oro. La mayoría tiene pasarelas de correo electrónico. Si no, puede usar la API Clickatell que cuesta alrededor de $ 0.04 por mensaje. Estoy buscando un hack ahora donde usarías un módem GSM y tu plan de teléfono celular individual con SMS ilimitados. Esto podría ahorrar mucho dinero si funciona.
Si está dispuesto a invertir en un teléfono inteligente Android, puede configurar su propia puerta de enlace SMS que resultará más barata al final.
Uso SMS GATEWAY ME, que es una aplicación gratuita de Android, puede enviar un mensaje como este:
$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);
Hay una documentación en su sitio que también le dice cómo aceptar los mensajes entrantes.
Si necesita una forma confiable de enviar muchos SMS, debe buscar un proveedor de servicios de SMS que actúe como un gateway de web a SMS. En ese caso, habrá una interfaz basada en http, que le permitirá enviar SMS llamando a una URL y pasando el destinatario y el mensaje como parámetros.
Su principal opción para enviar mensajes SMS es usar un proveedor de SMS existente. En mi experiencia (que es extensa con las aplicaciones web de mensajería SMS), a menudo encontrará que negociar con diferentes proveedores es la mejor manera de obtener la mejor oferta para su aplicación.
Diferentes proveedores a menudo ofrecen diferentes servicios y diferentes características. Mi proveedor favorito, y de hecho, el que felizmente ha negociado conmigo por tarifas más bajas en el pasado, es TM4B ( http://www.tm4b.com ). Estos chicos tienen excelentes tarifas, cubren una gran parte del mundo y tienen un excelente servicio al cliente.
A continuación se muestra un código extraído (y algunas partes ofuscadas) de una de mis aplicaciones web en vivo, para enviar un mensaje simple a través de su 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.";
}
Muchos otros proveedores que he usado en el pasado, tienen interfaces muy similares, y todos son realmente competitivos cuando se trata de precios. Simplemente tiene que buscar un proveedor que se adapte a sus necesidades.
En cuanto al costo, está buscando precios que van desde unos pocos peniques / centavos para la mayoría de los países occidentales (sin embargo, los precios son un poco más altos para la mayoría de los países del tercer mundo, así que ten cuidado). La mayoría de los proveedores tendrá que pagar en grandes cantidades, si desea tarifas decentes, pero a menudo negociarán con usted por lotes ''más pequeños de lo normal''. La mayoría de los proveedores ofrecen una opción de pago posterior, pero solo cuando ha completado con éxito algunas transacciones con ellos ... otros lo ofrecen desde el principio, pero los precios son exorbitantes.
Tuve que implementar la funcionalidad de sms activada por el usuario en nuestro sitio web recientemente y encontré útil el servicio de www.dotgo.com. Es gratis ... parece que fue creado por un par de doctorados como una especie de marco de mensajería sin estado (piense en el modelo de solicitud-respuesta http).
Para que funcione, configura un archivo "index.crml" (similar a index.html, php, etc.). El nuestro se ve así (lo siento todo poniendo todo en una sola línea ... teniendo algunos problemas para que se muestre lo contrario):
<?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>
En nuestro sitio, el archivo de índice a su vez hace referencia al archivo /sms/flashbulb.php, que (excluyendo las etiquetas de apertura y cierre de php) se ve así:
$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>";
De todos modos, solo incluyo el código para dar una idea de cómo funciona el marco y qué tan poco código hay para escribir para obtener algo funcional.
Hay algunas limitaciones Lo más importante es que todo está inutilizado por el usuario. Por lo tanto, si principalmente desea enviar mensajes salientes que no estén precedidos por un usuario que envíe un mensaje a su sitio para "obtener" el mensaje de respuesta, probablemente no sea lo que usted desea. Trabajó para lo que estábamos haciendo sin embargo. Uno de los fundadores respondió personalmente a una pregunta por correo electrónico y fue muy útil.
Una de las características que aún no hemos utilizado, pero que hemos considerado es su funcionalidad de suscripción ... donde los usuarios pueden configurarlo para que el sistema dotgo sondee periódicamente una página en su sitio, enviando un mensaje SMS a su teléfono por programar el usuario especifica. Nuevamente, no llegué tan lejos, pero pensé que era interesante.
Utilizamos una solución comercial llamada TextAnywhere para esto.
Por una pequeña tarifa (unos peniques por SMS), le ofrecen un servicio web (más API para .NET, ASP, Java, C ++, etc.). Es fácil y funciona, aunque no es gratis.
En su forma más básica, es tan simple como hacer una solicitud de URL con el número y el texto del mensaje en QueryString, y su servidor hace el resto por usted.
dktext no solo le permite enviar mensajes de texto bult a clientes que lo soliciten, sino que pronto proporcionará la integración de voz de Google para usar el mismo sistema con su cuenta de voz de Google.
Twilio lanzó recientemente una API para enviar mensajes SMS . La API es bastante simple, la interfaz REST básica para enviar SMS y un documento de devolución de correo para responder .
Mobile Text Alerts tiene una API PHP para enviar mensajes SMS.
Enviar solo, pero barato y fácil
La forma más simple es definitivamente usar el correo electrónico que @ Paolo Bergantino mencionó anteriormente. Es fácil pedirles a los usuarios que escriban su número de teléfono y seleccionen su proveedor de una lista. También es fácil, en cualquier plataforma de desarrollo, enviar un correo electrónico una vez que tenga la información del usuario.
Sin embargo, hay dos limitaciones muy importantes que he descubierto con ese enfoque:
- El primero es que todos los operadores de telefonía celular priorizan los mensajes SMS enviados a través de sus pasarelas de correo electrónico por debajo del tráfico de otros SMS. Probablemente porque el remitente no les paga por esto. No use este método si minimizar la latencia es importante para usted.
- El segundo es que, especialmente en esta era moderna de números de teléfono portátiles, los usuarios cambiarán de proveedor de vez en cuando, y casi seguro se olvidarán de decírselo. Si necesita poder enviar de manera confiable mensajes SMS a las mismas personas dentro de un año o dos, este método comenzará a fallar.
Enviar y recibir por barato
Si intenta configurar su sitio para enviar y recibir mensajes SMS con un presupuesto, puede usar un servicio como TextMarks . TextMarks le permite elegir una palabra clave para su servicio que le permita a los usuarios enrutar los mensajes a través del código corto compartido 41411 de TextMarks. El problema aquí es que reservan 20 caracteres en cada mensaje para que los anuncios cortos paguen por sus servicios.
Calidad profesional
Si necesita baja latencia, alta confiabilidad y no anuncia, tendrá que recurrir a un agregador de SMS a menos que sea lo suficientemente grande como para negociar individualmente con cada operador.
Lo más importante que he observado para tener en cuenta los agregadores de SMS es que muchos de ellos están realmente configurados para ser empresas de marketing, no hosts de aplicaciones; realmente no entienden el uso de SMS como un canal a través del cual los usuarios pueden interactuar con proveedores de servicio. Descubrí que los agregadores que usan la frase "su campaña" en lugar de "su solicitud" son los peores infractores. Aléjese de ellos y encuentre un agregador que comprenda sus necesidades como desarrollador de aplicaciones.
No sé si esto se aplica a usted, pero lo que he hecho muchas veces para ahorrarme dinero es preguntarle al usuario en su perfil cuál es su proveedor, luego intenté que coincida con this list
. Básicamente, muchos / la mayoría de los operadores tienen una dirección de correo electrónico conectada a un número de teléfono que le permitirá enviar fácilmente textos al número. Por ejemplo, si tiene ATT y su número de teléfono es 786-262-8344, un correo electrónico a [email protected] le enviará un mensaje de texto con el asunto / cuerpo del correo electrónico, sin cargo. Esta técnica cubrirá prácticamente todos sus usuarios de EE. UU. De forma gratuita. Obviamente, dependiendo de las necesidades de su aplicación, esto puede no ser posible / adecuado / deseado, pero es una opción a tener en cuenta.
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);
}