何度か、kannelのような素晴らしいソフトウェアへの言及がありましたが、何らかの理由で、その統合の例の具体的な説明はありません。
以下は、モバイルオペレーター(opsos)との合意によって実装できるサービスの例ですが、これを行う方法はまだ明確ではありません。 この状況を修正しようとします。
オフトピック。 なぜこれが必要なのですか?
私は長い間
プロジェクトに取り組んできました
が 、その本質はメガホンの旗の下で実際の都市ゲームを行うことです。 最初は、Zend Frameworkで簡単なオンラインサービスが作成されたゲームで、登録、チームの編成、ゲームへの参加、タスクの受信、回答の入力が可能でした。 しかし、主催者と私は、このプロセスを大衆がよりアクセスしやすく、よりモバイルにする方法を考えました。 SMSを使用するためにこのプラットフォームを作り直すことにしました。 それは言われています-完了、私はメガフォンの技術者に連絡し、SMSを送受信する方法を見つけました(もちろん、httpを使用する方がはるかに望ましいです、メガホンでは裸のSMPPのみを与えました。 何もする必要はありませんでした。
長い間、ゲートウェイに適したオプションを探していましたが、このオプションはKannel-オープンソースSMS、WAPゲートウェイでした。 WAPコンポーネントは私には興味がありませんでしたが、SMPP-HTTPゲートウェイの非常に高品質のソリューションであることがわかりました(SMPPをサーバーとして使用してSMSを送受信し、DB文字列としてメッセージを送受信するMySQLを使用することもできます)。
練習に移りましょう。
多くの点で、構成
はMultifonとの統合についての私の
記事で引用したものを複製しますが、ここではモバイルオペレーターのSMPPで作業する例です。
インストールと初期設定の一部をスキップします。前述の記事でそれらをよく理解できます。
ちょっとした理論。 このシステムは少し非標準です。 いくつかの独立した悪魔で構成されています。 残りを監視するデーモンがあり、プロセスが突然停止した場合、再び開始します。 このデーモンは、rc.dまたはinit.dから起動するときに登録されます。起動スクリプトのパラメーターに慣れることができます。
bearerboxは、SMPP通信をクライアントとして保持し、3Gドングルで動作し、他のデーモンを接続するためにポートでリッスンするメインデーモンです。
smsbox -Webサービスからメッセージを受信し、送信のためにbearerboxに送信するデーモン
opensmppboxは、他のクライアントを接続するためのSMPPサーバーとして機能するデーモンです。 また、bearerboxに接続し、それを介して機能します。
wapboxはwapゲートのように動作するデーモンです。 正直なところ、私は本当に彼を理解していませんでした。
sqlboxは、特定の構造のMySQLデータベースに着信メッセージを記録したり、MySQLデータベースに追加されたSMSメッセージを送信したりできる非常に興味深いデーモンです。 これにより、MVCを介してsmsをモデルに直接統合できます。 つまり、送信とは、MVCアプリケーション内にsmsオブジェクトを作成して保存することです。 また、受信も同様ですが、この場合、SMSを受信したコールバックを受信しません。クラウンでスクリプトを実行する必要があり、リアルタイムではなくなります。
これらの各デーモンには、独自の
run_kannel_boxが接続されている必要があります。 これはデーモン監視であり、設定で複数のbearerbox / smsbox / wapboxを実行したり、他のデーモンを接続したりする場合は、スタートアップスクリプトに追加で登録する必要があります。 または、
zerkmsのコメントで提案されているように、コマンドラインパラメーター--parachute(-P)を使用して独自のスクリプトを記述します。
コメント付きの設定
group = core admin-port = 13000
そのため、この場合、2つのMegafon smsセンターへの接続を、smscパラメーターに応じて個別に送信して調べました。そこで、SMSを送信します(エンコードの問題に関する
以前の投稿を参照)
http://example.com:13003/cgi-bin/sendsms?smsc=$smsc&username=user1&password=pass&coding=2&to=79277777777&text=some_text
そして、スクリプト(たとえば、PHP)でSMSテキストを取得します。この場合
、 POST要求の
本文で送信さ
れます。
$msg = file_get_contents('php://input');
繰り返しますが、ファイアウォールがある場合、外部からアクセスするとき、または内部から作業するときは、対応するポートを開いてループバックを開く必要があります。
リンクから、
ユーザーガイドを再度お届けし
ます。 彼は非常に包括的です。 接続に関する問題が発生している場合-コメントや
開発メーリングリストへの書き込み、彼らはそこに役立ちます。