ホームページ  >  記事  >  バックエンド開発  >  Kuole Communication を使用して、PHP Web ページ上でテキスト メッセージの送受信を実現します。

Kuole Communication を使用して、PHP Web ページ上でテキスト メッセージの送受信を実現します。

WBOY
WBOYオリジナル
2016-06-13 12:35:131086ブラウズ

Kuanle Communication を使用して、PHP Web ページでテキスト メッセージの送受信を実現します

私は、Web サイトにテキスト メッセージの送受信機能を提供したいと常々思っていました。

最近、Kuanle Communication について知りました。これは、China Telecom が提供し、Huawei が開発したサービスで、WebService の形式でテキスト メッセージを送受信するための開発インターフェイスを提供します。このインターフェイスを呼び出して送信できます。テキストメッセージを受信します。

Kuanle Communication を使用する前に、まずアカウントとパスワードを開設する必要があります (電気通信会社で開設します。アカウント番号は電話番号です。開設時に WebService メソッドであると宣言する必要があります。そうしないと使用できません)。

テキスト メッセージの送信には 1 メッセージあたり 8 ポイントの料金がかかり、受信は無料です。


Kuanle Communication には二次開発用のインターフェース ドキュメントがあります。 Baidu で「Kuanle Communication Interface」を検索して

を見つけます。


Kuanle Communication は 2 つのインターフェースを提供します:


1 つは SDK メソッドで、Windows COM コンポーネントとして提供され、Windows クライアント プログラムの作成に使用されます

もう 1 つは WebService メソッドで、Web サイトの開発に使用できます。

いわゆる Web サービスは、別の Web サイトが提供する機能であり、具体的には、ある Web サイトの機能を呼び出すための標準的なインターフェイスです。他のWebサイトの機能は、リクエスト内容に含まれる関数名とパラメータ(XML形式)を指定したURLにPOSTリクエストを送信し、その応答結果が関数の戻り値となります。 WebService のデータ形式の詳細については、関連ドキュメントを参照してください。


PHP5 は、WebService を簡単に呼び出すことができる、SoapClient (クライアント、WebService を使用) と SoapServer (サーバー、WebService を提供) の 2 つのクラスを提供します。


Kuanle 通信インターフェースのドキュメントは非常に長いので、テキスト メッセージの送受信の原理について簡単に説明します。

Kuanle Communication は、SMS に関連する一連のインターフェイスを提供します: Register と SendSMS


テキストメッセージを送信するプロセス:

1. まず、WebService を通じて Register インターフェイスの関数 getRandom() を呼び出し、Kuanle Communication Platform によって発行された乱数 rand

を取得します。

2、次に Register インターフェイスで setCallBackAddr() 関数を呼び出してログイン

を実装します。

関数プロトタイプ: String setCallBackAddr(String uc, String pw, String rand, String url);

パラメータ: uc はアカウント番号です

pw は、getRandom rand + UC パスワード + UC パスワードと MD5 暗号化文字列で取得した乱数です (つまり、rand とパスワード文字列を 2 回連結した後、MD5 暗号化が実行されます)

RAND は Getraandom によって取得された乱数です。

URL はコールバック関数の URL です (このコールバック関数は SMS の受信時に使用されます。この URL では、最初に Web サービスを実現する必要があります。Kuanle Communication Platform が WebService を呼び出します)

戻り値は接続 ID (connID) であり、後続のテキスト メッセージに使用されます


3. 次に、SendSMS インターフェイス

の sendSMS() 関数を呼び出してテキスト メッセージを送信できます。

関数プロトタイプ: String sendSMS(String uc, String pw, String rand, String callee[], String isreturn, String cont, int msgid, String connID);

パラメータ: uc はアカウント番号です

PW は、MD5 暗号化後の

Getrandom+UC パスワード+UC パスワード (つまり、RAND とパスワード文字列を 2 回接続し、MD5 暗号化) によって取得されたランダムな Rand+UC パスワードです。

Rand は

getrandom で得られる乱数

返礼には SMS が必要ですか? これは強力な Kuanle Communication の機能です。受信者が SMS を受信すると、Kuanle Communication Platform は SMS に返信実行を送信します。送信者

CONT は SMS のコンテンツです。中国語は GBK エンコード、base64 エンコードである必要があります

connID は、によって返される接続 ID です。 setCallBackAddr() 関数


テキストメッセージを受信するプロセス:

setCallBackAddr() 関数を呼び出すときは、コールバック関数の URL を指定し、この URL を Web サイトに指定する必要があります。

この URL では、まず WebService を実装し、次の情報を提供する必要があります。 3 つの関数: echoOfSendSMS()、recvSMS()、NotifyStatus().

テキスト メッセージを受信すると、Kuanle Communication Platform は指定した URL の

recvSMS() 関数を呼び出します

SMS 受信を受信すると、

Kuanle Communication Platform は、指定した URL echoOfSendSMS() 関数 を呼び出します。 >

ステータスが変化すると、Kuanle Communication Platform は指定した URL で NotifyStatus() 関数
これら 3 つの Web サービス関数を Web サイトに記述することで、テキスト メッセージを受信できます。

関数プロトタイプ: String recvSMS(String caller, String time, String cont, String ucNum);

パラメータ: caller はテキスト メッセージを送信する番号、cont はテキスト メッセージの内容 (base64 デコードが必要)、ucNum は

SMS 受信者の番号

関数プロトタイプ: void echoOfSendSMS(String ucNum, String cee, int msgid, int res, String recvt);

関数プロトタイプ: void NotifyStatus(int eventID, String sessionID, int res, String para1);


原理を説明した後、PHP コードの実装を見てみましょう:


開発言語: PHP 5.X


SMS を送信するためのコードは次のとおりです:



$uc="02087XXXX1";    //宽乐通信帐号
$pass="uu1XXXX56";   //宽乐通信密码
$callBackURL='http://www.some.com/receive_sms.php'; //回调URL,如果不想接收短信,则这个URL可以随便写

$urlRegister="http://202.105.212.146:8080/jboss-net/services/Register?wsdl"; //Register接口URL
$client = new SoapClient($urlRegister); //生成一个SoapClient对象, 使用Register接口
$rand = $client->__call("getRandom", array()); //调用getRandom()函数,取得随机数
$pw = md5($rand.$pass.$pass); //计算PW值,
$connID = $client->__call("setCallBackAddr", array($uc,$pw,$rand,$callBackURL));//调用setCallBackAddr()函数,取得连接ID
if ($connID<0) {     //如果connID<0, 则表示登录失败, connID是错误码
  print "error login";
  exit;
}

$urlSendSms="http://202.105.212.146:8080/jboss-net/services/SendSMS?wsdl";//SendSMS接口URL
$client1 = new SoapClient($urlSendSms);//生成一个SoapClient对象, 使用SendSMS接口
$callee = array("13912345678"); //接收短信的号码,做为一个数组
$content = "hello,sms from php"; //短信内容
$content = base64_encode($content); //将短信内容进行base64编码
$msgId = 1; //短信编号,可以随便编号
$needReceipt = '0'; //是否需要回执, 字符串型,'0'表示不要回执,'1'表示要回执
//调用SendSMS接口中的 sendSMS函数,发送短信
$result = $client1->__call("sendSMS", array($uc,$pw,$rand,$callee,$needReceipt,$content,$msgId,$connID));
if ($result==0) {  //如果返回值为0,则发送成功
  print "send OK";
} else {
  print "send error, error code=".$result; //否则,返回值即是错误码
}


プログラムのコメントは非常に明確です。追加の説明: 上記のプログラムのアカウント番号とパスワードは実際のアカウントのパスワードに変更する必要があります。



以下はテキスト メッセージを受信するための PHP コードです (ファイル:receive_sms.php
)



/**
 * 接收短信回执
 * 函数原型:void echoOfSendSMS(String ucNum, String cee, int msgid, int res, String recvt);
 * @param string $ucNum 发送方号码
 * @param string $cee 接收方号码
 * @param int $msgid 短消息编号,用于客户端匹配请求消息
 * @param int $res 回执的结果(=1表示接收方成功接收短信, -1为系统异常;-12:系统超时;-92:短信无法送达对方)
 * @param string $recvt 短消息时间
 * @return 无返回值
 */
function echoOfSendSMS($ucNum,$cee,$msgid,$res,$recvt){
    $filename = "echo.txt";
    $data = "ucNum=".$ucNum." cee=".$cee." msgid=".$msgid." res=".$res." recvt=".$recvt."\r\n";
    file_put_contents($filename, $data, FILE_APPEND);
}

/**
 * 接收短信
 * 函数原型:String recvSMS(String caller, String time, String cont, String ucNum);
 * @param string $caller 短信的发送者号码
 * @param string $time 短信发送时间
 * @param string $cont 短信内容(需要对短信内容进行BASE64解码)
 * @param string $ucNum 短信接受者号码(接收短信的UC号码)
 * @return string =0:成功返回,  <0:失败码
 */
function recvSMS($caller, $time, $cont, $ucNum) {
  $filename = "sms.txt";
  $data = "caller:".$caller." time=".$time." ucNum=".$ucNum." content=".base64_decode($cont)."\r\n";
  file_put_contents($filename, $data, FILE_APPEND);
  return "0";
}


/**
 * 通用回调函数: 通知状态变化
 * 函数原型:void NotifyStatus(int eventID, String sessionID,int res,String para1);
 * @param integer $eventId 接口事件ID
 * @param string $sessionId 呼叫标识/会议标识/短信标识/传真标识:
 * @param int $res 失败码/状态码
 * @param string $para1 参数1
 * @return 无返回&#20540;
 */
function NotifyStatus($eventId, $sessionId, $res, $para1) {
  $filename = "notify.txt";
  $data = "eventId:".$eventId." sessionId=".$sessionId." res=".$res." para1=".$para1."\r\n";
  file_put_contents($filename, $data, FILE_APPEND);
}


//主程序开始

//初始化WebService服务
$server = new SoapServer(null,array('uri'=>"http://www.some.com/receive_sms.php"));//这个uri要写本php文件所在的uri  

//注册三个函数
$server->addFunction(array("echoOfSendSMS","recvSMS","NotifyStatus"));

//启动soap server
$server->handle();



プログラムのコメントは非常に明確で、3 つの関数を定義し、

WebService サービス
を生成するというものです。

プログラムでテキストメッセージを受信したら、それを保存するだけです。

recvSMS() 関数を変更して、データベースへの書き込み、テキスト メッセージへの返信など、必要な機能を追加できます。


テキスト メッセージの送信プロセスを簡略化するために、ユーザーは Kuanle Communication
を持っている限り、Kuanle 通信インターフェイスを知る必要はありません。アカウントとパスワードがあれば、テキスト メッセージを送信するために必要なのは、たとえば次の 3 つの文だけです:


$sms = new Sms(); //产生一个Sms类的对象
if ($sms->login($account, $password))   //登录
    $sms->send("139876XXXXX", "hello,sms"); //发短信


それはとても簡単です。


Sms クラス
class.Sms.php

およびテキスト メッセージ受信用のソース コード accept_sms.php は、私のリソースにダウンロードして、全員と共有できます


Web サイトでテキスト メッセージを送受信できるようになると、検証コードの送信、誰かが Web サイトにログインしたときに携帯電話に通知するテキスト メッセージの送信、テキスト メッセージの送信による Web サイトの実行トリガーなど、多くの機能を実装できます。

その結果、Web サイトが生き生きとします。 ! !








声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。