シェル上のシンプルなSMSボット

ボットです
こんにちは、カブロビテス!
先日、SMS通信用の簡単なボットを作成しました。 彼は、着信メッセージを受信し、それらを処理し、(メッセージの単語が彼の「記憶」にある場合)論理的な答えを送り返すことができます。

必要なもの:

-ホームコンピューター上のUbuntu 12.04
-gnokiiをインストールしました(インストール方法はこちらをご覧ください
-シェルスクリプト
-このスクリプトを定期的に実行するcron
-アカウントにお金がある携帯電話(ほぼすべてのBluetoothを搭載した古いNokia、およびSonyEricsson kシリーズでも可能)
-Bluetoothアダプター
-数時間の自由時間。
+プラスは、インターネット接続の必要性の欠如でした。

興味があれば-猫の下でお願いします。

そのため、アプリケーションの一般的なロジックを説明することから始めます。これにより、何が何でなぜなのかがすぐにわかります。

サードパーティのサブスクライバーAがいます。
電話があります-加入者B

私たちの行動。


1)電話の標準的な手段を使用して、Bluetooth経由でサブスクライバーBをコンピューターに接続します。これにより、サブスクライバーBが自動的に承認できるようになります。

2)gnokiiをインストールします。

3)sms_bot.shスクリプトを作成して実行する権限を作成します。
#!/bin/bash inp=$(gnokii --getsms IN 1 end) #     echo $inp>/home/light204/Desktop/inp.txt #     counter_love=$(grep -c  /home/light204/Desktop/inp.txt) #     counter_luba=$(grep -c  /home/light204/Desktop/inp.txt) #     counter_hello=$(grep -c  /home/light204/Desktop/inp.txt) #     counter_good=$(grep -c  /home/light204/Desktop/inp.txt) #     counter_name=$(grep -c  /home/light204/Desktop/inp.txt) #     killall gnokii # gnokii,        #    ,     ,     . if [ "$counter_love" == "1" ]; then echo "  ,    !!! ( )" | gnokii --sendsms '+7904xxxxxx' elif [ "$counter_luba" == "1" ]; then echo ", ,    :)" | gnokii --sendsms '+7904xxxxxx' elif [ "$counter_hello" == "1" ]; then echo "  !   ?" | gnokii --sendsms '+7904xxxxxx' elif [ "$counter_good" == "1" ]; then echo " ,     !  , ,     :(" | gnokii --sendsms '+7904xxxxxx' elif [ "$counter_name" == "1" ]; then echo " Light204_comp .   ,  ;)" | gnokii --sendsms '+7904xxxxxx' fi sleep 3 killall gnokii # gnokii,        gnokii --deletesms IN 1 end #   #.       


4)たとえば、cronを設定してsms_bot.shスクリプトを毎分実行します。

5)システムは動作するはずです。 サブスクライバAはサブスクライバBにSMSを送信します。サブスクライバBの電話は着信SMSを受信し、スクリプトを読み取り、分析し、サブスクライバAに応答を送信し、サブスクライバAからSMSを削除します。

PS私のスクリプトは完璧とはほど遠いですが、動作するテストオプションです。 さらに、ここで説明する複合体は「現状のまま」誰かが必要とすることはほとんどないと思いますが、あなたはそれを作り直し、そして/またはあなたのニーズに適応させることができるかもしれません。

Source: https://habr.com/ru/post/J151698/


All Articles