웹 응용 프로그램의 SMS
저는 단지 제 웹 애플리케이션에서 PHP로 SMS를 보내고 싶습니다.누가 이걸 어떻게 하는지 알려줄 수 있나요?이를 위해 필요한 모든 것은 무엇입니까?
이것이 당신에게 해당되는지는 모르겠지만, 제가 돈을 절약하기 위해 여러 번 한 것은 사용자에게 그의 프로필에 있는 통신사가 무엇인지 물어보고 그것과 일치하도록 해보는 것입니다. 기본적으로, 많은/대부분의 통신사들은 당신이 그 번호로 문자를 쉽게 보낼 수 있는 전화번호에 연결된 이메일 주소를 가지고 있습니다.예를 들어 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의 공유 단축 코드 41411을 통해 사용자에게 메시지를 라우트할 수 있는 서비스 키워드를 선택할 수 있습니다.여기서 문제점은 그들이 그들의 서비스에 대한 비용을 지불하기 위해 각 메시지에 20자씩의 짧은 광고를 예약한다는 것입니다.
전문가의 질
짧은 대기 시간, 높은 신뢰성 및 광고가 필요한 경우 각 통신사와 개별적으로 협상할 만큼 충분히 크지 않은 경우 SMS 애그리게이터를 거쳐야 합니다.
SMS 애그리게이터를 사용할 때 주의해야 할 가장 큰 점은 애플리케이션 호스트가 아닌 마케팅 회사로 설정된 경우가 많다는 것입니다. 이들은 SMS를 사용자가 서비스 공급업체와 상호 작용할 수 있는 채널로 사용하는 것을 제대로 이해하지 못합니다.저는 "당신의 지원서"가 아닌 "당신의 캠페인"이라는 문구를 사용하는 집계자들이 최악의 범죄자라는 것을 발견했습니다.이들로부터 멀리 떨어져 애플리케이션 개발자로서의 요구를 이해하는 통합업체를 찾으십시오.
트윌리오는 최근 SMS 메시지를 보낼 수 있는 API를 출시했습니다.api는 SMS를 보낼 수 있는 간단한 기본 REST 인터페이스와 응답할 수 있는 포스트 리턴 문서입니다.
안녕하세요 저는 Twilio.com 에서 일하는 Jarod라고 합니다. 그래서 저는 조금 편견이 있습니다.하지만 그렇게 말하면 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당 몇 펜스)으로 웹 서비스(및 에 대한 API)를 제공합니다.NET, ASP, Java, C++ 등).이것은 쉽고 효과가 있습니다. 비록 무료는 아니지만요.
가장 기본적으로 QueryString에 있는 번호와 메시지 텍스트로 URL을 요청하는 것만큼 간단하며 나머지는 서버에서 처리합니다.
만약 당신이 통신사를 안다면, 당신은 황금입니다.대부분 전자 메일 게이트웨이가 있습니다.만약 그렇지 않다면, 당신은 Clickatell API를 사용할 수 있습니다. 이 API는 한 메시지당 약 0.04달러입니다.저는 지금 당신이 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 서비스 공급자를 찾아야 합니다.이 경우 URL을 호출하고 수신자와 메시지를 매개 변수로 전달하여 SMS를 보낼 수 있는 http 기반 인터페이스가 있습니다.
dktext는 당신이 요청하는 고객들에게 bult text 메시지를 보낼 수 있게 해줄 뿐만 아니라 곧 구글 음성 계정과 동일한 시스템을 사용하기 위해 구글 음성 통합을 제공할 것입니다.
웹 응용 프로그램에서 SMS를 보내려면 응용 프로그램을 SMS 게이트웨이에 연결해야 합니다.대부분의 SMS 게이트웨이는 이를 위해 사용할 수 있는 외부 API를 제공합니다.일반적으로 PHP 코드에서 SMS 알림을 통합하는 방법을 찾을 수 있는 문서가 있습니다.안타깝게도 신뢰할 수 있는 무료 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 request-response model)로 몇 명의 박사가 만든 것으로 보입니다.
작동하기 위해 "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>";
어쨌든, 저는 프레임워크가 어떻게 작동하는지, 그리고 기능적인 것을 얻기 위해 작성해야 할 코드가 얼마나 적은지에 대한 약간의 감각을 주기 위해 코드를 포함할 뿐입니다.
몇 가지 제한 사항이 있습니다.가장 중요한 것은 모든 것이 사용자에 의해 시작된다는 것입니다.따라서 사용자가 응답 메시지를 "받기" 위해 사이트로 메시지를 보내는 것보다 먼저 발송되는 발송 메시지를 주로 보내고자 하는 경우에는 원하는 메시지가 아닐 수 있습니다.하지만 우리가 하고 있던 일을 위해 일했습니다.설립자 중 한 명이 이메일로 보낸 질문에 직접 답변까지 해 매우 도움이 되었습니다.
아직 사용하지 않았지만 고려해 본 기능 중 하나는 구독 기능입니다.여기서 사용자는 닷고 시스템이 사이트의 페이지를 주기적으로 폴링하고 사용자가 지정한 일정에 따라 휴대폰으로 SMS 메시지를 보내도록 설정할 수 있습니다.다시 말하지만, 저는 그렇게까지 생각하지는 않았지만, 흥미롭다고 생각했습니다.
이 주제에 의한 가장 오래된 질문이라고 생각합니다.주로 답변 - 유료 게이트웨이 광고하지만 한 가지 방법이 더 있습니다. 안드로이드 기기(심카드)의 sms, 안드로이드 게이트웨이입니다.저는 간단한 API로 무료 오픈 소스 애플리케이션을 만들었습니다: https://github.com/pavelakafoks/SmsTransmitter 구글 플레이: https://play.google.com/store/apps/details?id=info.ininfo.smstransmitter 당신은 당신의 사이트에 내 애플리케이션을 사용하거나 내 소스를 기반으로 당신만의 안드로이드 애플리케이션을 만들 수 있습니다.그것은 인터넷 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
사용자의 하위 계정입니다.
그 결과:
PHP로 HTTP 요청을 보내는 방법에 대한 자세한 내용은 다음 질문에서 다룹니다.
언급URL : https://stackoverflow.com/questions/432944/sms-from-web-application
'programing' 카테고리의 다른 글
사용자가 인증되지 않은 경우 Ajax 요청을 어떻게 처리합니까? (0) | 2023.07.30 |
---|---|
Spring Boot : 속성이 .properties 파일에 있음에도 불구하고 Spring은 항상 속성에 기본값을 할당합니다. (0) | 2023.07.30 |
mariadb 덤프를 가져올 수 없습니다. (0) | 2023.07.30 |
PowerShell 코드 포맷기/예쁜 프린터가 있습니까? (0) | 2023.07.30 |
예제별 JPA 사양 (0) | 2023.07.30 |