web-dev-qa-db-ja.com

SMS Webアプリケーションから

PHPのWebアプリケーションからSMSを送信します。これを行う方法を教えてもらえますか?このために必要なことは何ですか?

61
Shyju

これがあなたに当てはまるかどうかはわかりませんが、お金を節約するために何度もやったことは、プロファイルでユーザーにキャリアが何であるかを尋ね、それを this list 。基本的に、多くの/ほとんどの携帯電話会社は電話番号に接続されたメールアドレスを持っているので、その番号にテキストを簡単に送信できます。たとえば、ATTがあり、電話番号が786-262-8344である場合、7682628344 @ txt.att.netへの電子メールは、電子メールの件名/本文を含むテキストメッセージを無料で送信します。この手法は、すべての米国ユーザーをほぼ無料でカバーします。明らかに、アプリケーションのニーズによっては、これは不可能/適切/望ましくない場合がありますが、注意すべきオプションです。

49

SMSメッセージを送信するための主なオプションは、既存のSMSプロバイダーを使用することです。私の経験では(SMSメッセージングWebアプリケーション)、多くの場合、さまざまなプロバイダーとの交渉がアプリケーションに最適な取引を得るための最良の方法であることがわかります。

多くの場合、異なるプロバイダーは異なるサービスと異なる機能を提供します。私のお気に入りのプロバイダー、そして実際、過去に低料金で喜んで交渉してきたプロバイダーはTM4B( http://www.tm4b.com )です。これらの人は、優れた料金を持ち、世界の大部分をカバーし、優れた顧客サービスを提供しています。

以下は、ライブWebアプリケーションの1つから抽出された(および一部が難読化された)コードで、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.";
}

私が過去に使用した他の多くのプロバイダーは、非常に類似したインターフェースを備えており、価格設定に関してはすべて非常に競争力があります。単にあなたのニーズに合ったプロバイダーを探す必要があります。

コストに関しては、ほとんどの西欧諸国で数ペンス/セントの価格を探しています(ただし、ほとんどの第三世界の国では価格が少し高くなっていますが、注意してください)。適切な料金が必要な場合、ほとんどのプロバイダーは一括で支払う必要がありますが、「通常よりも少ない」バッチについて多くのプロバイダーと交渉します。ほとんどのプロバイダーは後払いオプションを提供していますが、それらとのいくつかのトランザクションを正常に完了した場合にのみ...他のプロバイダーは最初から提供しますが、価格は恐ろしいです。

26
James B

送信のみですが、安くて簡単です

最も簡単な方法は、上記の@ Paolo Bergantino というメールハックを使用することです。ユーザーに電話番号を入力して、リストからキャリアを選択するように依頼するのは簡単です。ユーザーの情報が得られたら、絶対にあらゆる開発プラットフォームでメールを送信することも簡単です。

ただし、このアプローチで発見した2つの非常に重要な制限があります。

  1. 1つ目は、携帯電話会社はすべて、SMS他のメールゲートウェイを介して送信されるメッセージを他のSMSトラフィック。送信者から支払いを受けていない可能性が高いレイテンシを最小限に抑えることが重要な場合は、この方法を使用しないでください。
  2. 2つ目は、特にこの現代の携帯電話番号の時代では、ユーザーは時々キャリアを切り替え、ほとんど間違いなくあなたに伝えることを忘れるということです。 SMSメッセージを1年または2年後に同じ人に確実に配信できるようにする必要がある場合、この方法は失敗し始めます。

格安で送受信する

予算内でメッセージを送信および受信SMS)するようにサイトを設定しようとしている場合は、- TextMarks 。TextMarksを使用すると、ユーザーがTextMarksの共有ショートコード41411を使用してメッセージをルーティングできるようにするサービスのキーワードを選択できます。彼らのサービスのために。

プロ品質

低遅延、高信頼性、広告なしが必要な場合は、各キャリアと個別に交渉するのに十分な大きさでない限り、SMSアグリゲーターを通過する必要があります。

SMSアグリゲーターで気を付けた最大のことは、それらの多くはアプリケーションホストではなくマーケティング会社に設定されているということです。 SMSユーザーがサービスプロバイダーとやり取りできるチャネルとして。「アプリケーション」ではなく「キャンペーン」というフレーズを使用するアグリゲーターが最悪の犯罪者であることがわかりました。アプリケーション開発者としてのニーズを理解するアグリゲーターを見つけてください。

12
sblom

Twilio 最近送信するAPIをリリースしました SMSメッセージ 。 APIはかなりシンプルで基本的な SMSを送信するためのRESTインターフェイス 、および 応答するドキュメントを返す です。

11
Tim Lytle

こんにちは、Jarodです。Twilio.comで働いているので、少し偏見があります。とはいえ、SMSからPHP Webアプリケーションを使用して Twilio REST API 。簡単な例を次に示します。

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

このために TextAnywhere と呼ばれる商用ソリューションを使用します。

少額の料金(SMSごとに数ペンス)で、Webサービス(および.NET、ASP、Java、C++などのAPI)を提供します。無料ではありませんが、簡単で機能します。

最も基本的なのは、QueryString内の番号とメッセージテキストを使用してURLリクエストを作成するのと同じくらい簡単で、残りの処理はサーバーが行います。

4
Dylan Beattie

キャリアを知っていれば、あなたは黄金です。ほとんどにはメールゲートウェイがあります。そうでない場合は、メッセージあたり約0.04ドルのClickatell APIを使用できます。 GSMモデムと無制限のSMSを使用した個々の携帯電話プランを使用するハックを検討しています。うまくいけば、これは多くのお金を節約できます。

4
Tony

Androidスマートフォンに投資する意思がある場合は、独自に設定することができますSMS最終的に安くなるゲートウェイ。

私は SMS GATEWAY ME を使用します。これは無料ですAndroidこのようなメッセージを送信できるアプリ:

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

彼らのサイトには、着信メッセージを受け入れる方法を説明したドキュメントがあります。

3
user3144832

dkテキストを使用すると、リクエストしている顧客に一括テキストメッセージを送信できるだけでなく、Google Voiceアカウントで同じシステムを使用するためのGoogle Voice統合が間もなく提供されます

2
Michael

Webアプリケーションから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
?>
2
george

多数のSMSを送信する信頼できる方法が必要な場合は、SMSゲートウェイへのWebとして機能するSMSサービスプロバイダーを探してください。その場合、 HTTPベースのインターフェースになり、URLを呼び出して受信者とメッセージをパラメーターとして渡すことでSMSを送信できます。

2
lcvinny

最近、ユーザーが開始したsms機能を当社のWebサイトに実装する必要があり、www.dotgo.comサービスが役に立ちました。無料です...いくつかのPhDによって一種のステートレスメッセージングフレームワークとして作成されたようです(httpリクエスト/レスポンスモデルを考えてください)。

動作させるには、「index.crml」ファイルを設定します(index.html、phpなどに類似)。これは次のようになります(すべてを1行ですべて入力してください...それ以外の場合は、表示に問題があります):

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

とにかく、フレームワークがどのように機能するか、何か機能的にするために書くコードがどれだけ少ないかについての感覚を与えるために、コードを含めるだけです。

いくつかの制限があります。何よりもまず、すべてがユーザーによって開始されます。そのため、ユーザーがサイトにメッセージを送信して応答メッセージを「取得」する前に送信メッセージを送信することを主に探している場合は、おそらく望みのものではありません。私たちがやっていることのために働いた。創設者の1人は、メールで送信された質問に個人的にも返信し、非常に役に立ちました。

まだ使用していないが検討している機能の1つは、サブスクリプション機能です。ユーザーは、dotgoシステムがサイトのページを定期的にポーリングして、携帯電話にSMSメッセージを送信するように設定できます。ユーザーが指定するスケジュール。繰り返しますが、私はそこまでそれを取りませんでしたが、それは面白いと思いました。

1
codemonkey

モバイルテキストアラート にはPHP送信用API SMSメッセージがあります。

0
Jimmy Pelton

基本的に、各キャリアにはメールゲートウェイがあり、そこにメールを送信する必要があります。 SMSメッセージを送信するメールアドレスを知るには、事前に通信事業者を知る必要があります。

0
Ariel

これは、このテーマで最も古い質問だと思います。主に回答-有料ゲートウェイの広告。しかし、もう1つの方法があります-Androidデバイス(simカード)、Androidゲートウェイ。シンプルなAPIで無料のオープンソースアプリケーションを作成しました。- https://github.com/pavelakafoks/SmsTransmitter Google Play: https://play.google.com/store/apps/details?id=info.ininfo.smstransmitter あなたあなたのサイトに私のアプリケーションを使用したり、私のソースに基づいて独自のAndroidアプリケーションを構築できます。インターネットSMSゲートウェイよりも安価です。誰かに役立つことを願っています。

0

PHPにはいくつかのSMPPライブラリがありますが、1つは次のとおりです。これは、SMSサーバーとの通信に使用されるプロトコルです。

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

0
ng.

[〜#〜] api [〜#〜] および このチュートリアル を使用して、トピックをカバーできます。

しかし、基本的に、単一のsmsを送信することは、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はアカウント、1234512345-パスワード(より強力なパスワードを使用してください!)およびamazing_hqはサブアカウントです。

結果は: SMS

PHPでのHTTPリクエストの送信に関する詳細は、次の質問で説明されています。

0
astef

マルチゲートウェイソリューションを使用することをお勧めします。私は自分の目的のために作成しましたが、簡単にセットアップしたい人には役立つと思います: 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つのプロバイダーをサポートしています。

以下を使用しましたSMS API url in PHP jQuery ajaxメソッドを使用し、追跡するためにmysqlデータベースにすべてのsms詳細を保存することもできます。

demo PHP and Ajax を使用したSMSゲートウェイAPI

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