웹 애플리케이션의 SMS
PHP로 웹 애플리케이션에서 SMS를 보내고 싶습니다. 누구든지이 작업을 수행하는 방법을 말해 줄 수 있습니까? 이를 위해 내가해야 할 일은 무엇입니까?
이것이 당신에게 적용되는지는 모르겠지만, 돈을 절약하기 위해 여러 번했던 것은 사용자 프로필에서 사용자에게 자신의 캐리어가 무엇인지 물어 본 다음 this list
. 기본적으로 많은 / 대부분의 이동 통신사에는 전화 번호에 연결된 이메일 주소가있어 쉽게 문자를 보낼 수 있습니다. 예를 들어, ATT가 있고 전화 번호가 786-262-8344 인 경우 7682628344@txt.att.net으로 이메일을 보내면 이메일 제목 / 본문이 포함 된 문자 메시지가 무료로 전송됩니다. 이 기술은 거의 모든 미국 사용자를 무료로 다룰 것입니다. 당연히 애플리케이션의 필요에 따라 이것이 가능하지 않거나 적절하지 않거나 바람직하지 않을 수 있지만 알아 두어야 할 옵션입니다.
SMS 메시지를 보내는 기본 옵션은 기존 SMS 제공 업체를 사용하는 것입니다. 내 경험상 (SMS 메시징 웹 응용 프로그램에 광범위 함) 다른 공급자와 협상하는 것이 응용 프로그램에 대한 최상의 거래를 얻는 가장 좋은 방법이라는 것을 종종 알게 될 것입니다.
다른 공급자는 종종 다른 서비스와 다른 기능을 제공합니다. 제가 가장 좋아하는 공급자이자 실제로 과거에 낮은 요금을 위해 저와 기꺼이 협상 한 공급자는 TM4B ( http://www.tm4b.com )입니다. 이 사람들은 우수한 요금을 가지고 있으며 전 세계의 엄청난 비율을 차지하며 우수한 고객 서비스를 제공합니다.
다음은 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.";
}
내가 과거에 사용 해본 많은 다른 제공 업체는 매우 유사한 인터페이스를 가지고 있으며 가격에 관해서는 모두 경쟁이 치열합니다. 당신은 당신의 필요에 맞는 제공자를 찾기 만하면됩니다.
비용과 관련하여 대부분의 서구 국가에서 몇 펜스 / 센트에 이르는 가격을보고 있습니다 (대부분의 제 3 세계 국가에서는 가격이 약간 더 높으므로주의하십시오). 대부분의 공급자는 적절한 요금을 원하면 대량으로 지불해야하지만 '보통보다 작은'배치를 위해 종종 협상을합니다. 대부분의 제공 업체는 후불 옵션을 제공하지만, 몇 번의 거래를 성공적으로 완료 한 경우에만 제공됩니다. 다른 제공 업체는 처음부터 제공하지만 가격은 강탈 적입니다.
보내기 만하지만 저렴하고 쉽습니다.
가장 간단한 방법은 @ Paolo Bergantino가 위에서 언급 한 이메일 해킹을 사용하는 것 입니다. 사용자에게 전화 번호를 입력하고 목록에서 이동 통신사를 선택하도록 쉽게 요청할 수 있습니다. 또한 절대적으로 모든 개발 플랫폼에서 사용자 정보가 있으면 이메일을 보내는 것도 쉽습니다.
그러나 그 접근 방식에서 발견 한 두 가지 매우 중요한 제한 사항이 있습니다.
- 첫 번째는 이동 통신 사업자가 모두 이메일 게이트웨이를 통해 전송되는 SMS 메시지의 우선 순위를 다른 SMS 트래픽보다 낮게 지정한다는 것입니다. 아마도 보낸 사람이 이것에 대해 지불하지 않기 때문일 것입니다. 지연 시간 최소화가 중요한 경우이 방법을 사용하지 마십시오.
- 두 번째는 특히 휴대 전화 번호의 현대 시대에 사용자는 때때로 통신사를 전환하고 거의 확실히 당신에게 말하는 것을 잊을 것입니다. 지금부터 1 ~ 2 년 후에 같은 사람에게 SMS 메시지를 안정적으로 전달할 수 있어야한다면이 방법은 실패하기 시작할 것입니다.
싸게 보내고 받기
예산에 따라 SMS 메시지 를 보내고 받도록 사이트를 설정하려는 경우 TextMarks 와 같은 서비스를 사용할 수 있습니다 . TextMarks를 사용하면 사용자가 TextMarks의 공유 단축 코드 인 41411을 통해 메시지를 라우팅 할 수있는 서비스 키워드를 선택할 수 있습니다. 여기서 중요한 점은 서비스 비용을 지불하기 위해 짧은 광고용으로 각 메시지에 20자를 예약한다는 것입니다.
전문적인 품질
짧은 지연 시간, 높은 안정성 및 광고가 필요하지 않은 경우 각 이동 통신사와 개별적으로 협상 할만큼 충분히 크지 않는 한 SMS 집계기를 거쳐야 할 것입니다.
내가 SMS 애그리 게이터에 대해주의를 기울이는 가장 큰 점은 그들 중 다수가 실제로 애플리케이션 호스트가 아닌 마케팅 회사로 설정되어 있다는 것입니다. 그들은 사용자가 상호 작용할 수있는 채널로 SMS를 사용하는 것을 실제로 이해하지 못합니다. 서비스 제공자. 나는 "귀하의 애플리케이션"이 아닌 "귀하의 캠페인"이라는 문구를 사용하는 애그리 게이터가 최악의 범죄자라는 것을 발견했습니다. 그들로부터 떨어져서 애플리케이션 개발자로서 당신의 요구를 이해하는 애그리 게이터를 찾으십시오.
Twilio는 최근 SMS 메시지 를 보내는 API를 출시했습니다 . API는 SMS를 보내기위한 다소 간단한 기본 REST 인터페이스 이며 응답 할 문서를 반환 하는 게시물 입니다.
안녕하세요, 제 이름은 Jarod이고 Twilio.com에서 일하므로 약간 편견이 있습니다. 하지만 Twilio REST API를 사용하여 PHP 웹 애플리케이션에서 SMS를 보내는 것은 매우 쉽습니다 . 다음은 간단한 예입니다.
<?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.");
이를 위해 TextAnywhere 라는 상용 솔루션을 사용합니다 .
적은 비용 (SMS 당 몇 펜스)으로 웹 서비스 (.NET, ASP, Java, C ++ 등을위한 API 포함)를 제공합니다. 무료는 아니지만 쉽고 작동합니다.
가장 기본적인 것은 QueryString의 번호와 메시지 텍스트를 사용하여 URL 요청을 만드는 것만 큼 간단하며 서버가 나머지 작업을 수행합니다.
캐리어를 안다면 당신은 황금입니다. 대부분의 이메일 게이트웨이가 있습니다. 그렇지 않은 경우 메시지 당 약 $ 0.04의 비용이 드는 Clickatell API를 사용할 수 있습니다. 이제 GSM 모뎀과 무제한 SMS로 개별 휴대폰 요금제를 사용하는 해킹을 조사하고 있습니다. 작동한다면 많은 돈을 절약 할 수 있습니다.
안드로이드 스마트 폰에 투자 할 의향이 있다면 결국 저렴하게 나오는 자신 만의 SMS 게이트웨이를 설정할 수 있습니다.
다음 과 같은 메시지를 보낼 수있는 무료 안드로이드 앱인 SMS GATEWAY ME 를 사용 합니다.
$URL = "http://v2.smsgateway.me/API/Send/Single.php";
$postdata = http_build_query(
array(
'Username' => "foo@bar.co.uk",
'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);
수신 메시지를 수락하는 방법을 알려주는 문서가 사이트에 있습니다.
많은 SMS를 보낼 수있는 안정적인 방법이 필요한 경우 웹에서 SMS 게이트웨이로의 역할을하는 SMS 서비스 공급자를 찾아야합니다. 이 경우 http 기반 인터페이스가있어 URL을 호출하고 수신자와 메시지를 매개 변수로 전달하여 SMS를 보낼 수 있습니다.
dktext를 사용하면 요청하는 고객에게 대량 문자 메시지를 보낼 수있을뿐만 아니라 곧 Google 보이스 계정과 동일한 시스템을 사용하기 위해 Google 보이스 통합을 제공 할 예정입니다.
웹 애플리케이션에서 SMS를 보내려면 애플리케이션을 SMS 게이트웨이에 연결해야합니다. 대부분의 SMS 게이트웨이는이를 수행하는 데 사용할 수있는 외부 API를 제공합니다. 일반적으로 SMS 알림을 PHP 코드에 통합하는 방법을 찾는 데 사용할 수있는 문서가 있습니다. 불행히도 신뢰할 수있는 무료 SMS 서비스가 제공되지 않으므로이 SMS 서비스에 대한 비용을 지불해야합니다. http://www.phpjabbers.com/web-sms/ 를 확인할 수 있습니다 . 통합 코드는 매우 간단합니다.
<?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
?>
최근 웹 사이트에서 사용자가 시작한 SMS 기능을 구현해야했고 www.dotgo.com 서비스가 유용하다는 것을 알았습니다. 그것은 무료입니다 ... 일종의 상태 비 저장 메시징 프레임 워크 (http 요청-응답 모델을 생각해보십시오)로 두 명의 박사 과정에 의해 만들어진 것처럼 보입니다.
작동하게하려면 "index.crml"파일 (index.html, php 등과 유사)을 설정합니다. 우리는 다음과 같이 보입니다 (모두 한 줄에 모두 넣어서 죄송합니다 ... 그렇지 않으면 표시하는 데 문제가 있습니다) :
<?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>
우리 사이트에서 색인 파일은 차례로 /sms/flashbulb.php 파일을 참조합니다.이 파일 (php 태그 열기 및 닫기 제외)은 다음과 같습니다.
$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>";
어쨌든, 나는 프레임 워크가 어떻게 작동하는지, 그리고 어떤 기능을 얻기 위해 작성해야 할 코드가 얼마나 적은지에 대한 이해를 돕기 위해 코드 만 포함 시켰습니다.
몇 가지 제한 사항이 있습니다. 가장 중요한 것은 모든 것이 사용자에 의해 시작된다는 것입니다. 따라서 사용자가 응답 메시지를 "수신"하기 위해 사이트에 메시지를 보내는 것보다 먼저 나가는 메시지를 보내려는 경우에는 아마도 원하는 것이 아닐 것입니다. 우리가하고있는 일을 위해 일했습니다. 창립자 중 한 명이 이메일로받은 질문에 개인적으로 응답했고 매우 도움이되었습니다.
아직 사용하지 않았지만 고려한 기능 중 하나는 구독 기능입니다. dotgo 시스템이 사이트의 페이지를 주기적으로 폴링하여 해당 전화에 SMS 메시지를 보내도록 사용자가 설정할 수 있습니다. 사용자가 지정하는 일정. 다시 말하지만 나는 그렇게 멀리하지 않았지만 흥미 롭다고 생각했습니다.
기본적으로 각 이동 통신사에는 이메일을 보내야하는 이메일 게이트웨이가 있습니다. SMS 메시지를 보낼 이메일 주소를 알 수 있도록 사전에 이동 통신사를 알아야합니다.
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);
}
다중 게이트웨이 솔루션을 사용하는 것이 좋습니다. 내 목적을 위해 만들었지 만 쉽게 설정하려는 모든 사람에게 유용 할 것이라고 생각합니다 : 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();
현재이 라이브러리는 5 개의 공급자를 지원하며 6 번째는 개발 중이며 다른 라이브러리는 계획되어 있습니다.
API 와 주제를 다루는 이 튜토리얼 을 사용할 수 있습니다 .
그러나 기본적으로 단일 SMS를 보내는 것은 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!" }'
amazing
귀하의 계정은 어디에 있습니까? 1234512345
-암호 (강력한 암호 사용!) 및 amazing_hq
귀하의 하위 계정입니다.
Details about sending HTTP request in PHP are covered in the following questions:
I think, it is the oldest question by this theme. Mainly answers - advertizing of paid gateways. But there is one more way - sms from android device (sim card), android gateway. I created a free open source application with simple API: https://github.com/pavelakafoks/SmsTransmitter Google play: https://play.google.com/store/apps/details?id=info.ininfo.smstransmitter You can use my application for your site or build your own android application based on my sources. It is more cheaper than internet sms gateways. I hope it will be useful for somebody.
참고 URL : https://stackoverflow.com/questions/432944/sms-from-web-application
'Development Tip' 카테고리의 다른 글
빌드 작업 'EmbeddedResource'는 하나 이상의 프로젝트 대상에서 지원되지 않습니다. (0) | 2020.11.30 |
---|---|
Visual Studio Code — 파일 끝에 새 줄 삽입 (0) | 2020.11.30 |
Firebug를 사용하여 웹 페이지에 어떻게 게시합니까? (0) | 2020.11.30 |
NSArray와 NSMutableArray의 차이점 (0) | 2020.11.30 |
크롬의 선택 옵션 요소에 대한 클릭 이벤트 (0) | 2020.11.30 |