नमस्कार प्रिय ख़बरोवीस!
मैं आपको बताना चाहता हूं कि मैंने अपने संकाय के लिए एसएमएस अलर्ट कैसे किया।
मैं
एफएसएफ आईटीएमओ में अपने पहले वर्ष में हूं। हमारे पास संकाय में एक तथाकथित प्रेषण सेवा है, जो छात्रों को अनुसूची में बदलाव के बारे में सूचित करने में लगी हुई है, इंटरनेट पर यह संपर्क पृष्ठ और ट्विटर के माध्यम से किया जाता है।
एक बार इस तथ्य पर एक छोटा सा घोटाला था कि एक आधा समूह इस तथ्य के कारण कक्षाओं के लिए प्रकट नहीं हुआ था कि वे अनुसूची में परिवर्तन को ट्रैक करने का प्रबंधन नहीं करते थे। उस दिन, मुझे उसी Vk पृष्ठ से एक एसएमएस अलर्ट बनाने का विचार था।
हां, मुझे पता है कि इसके लिए विशेष सेवाएं हैं, लेकिन यह बहुत आसान है ...

गीतात्मक विषयांतर
मैं लिनक्स, Phython और Sql के लिए नया हूं, और यह लेख "सीखने के लिए जानें" के सिद्धांत पर लिखा गया है।
इसलिए कुछ गलत होने पर बहुत ज्यादा गुस्सा न करें, बल्कि सिर्फ अपनी टिप्पणी टिप्पणियों में लिखें।
कहाँ से शुरू करें?
थोड़ा विचार के साथ, मुझे एहसास हुआ कि मुझे क्या चाहिए:
- नए पदों के लिए वीके पेज को स्कैन करें
- किसी समूह के संदर्भ में इन समान पदों में खोजें, उदाहरण के लिए 143
- अगर किसी पोस्ट में किसी ग्रुप का नंबर मिलता है, तो इस पोस्ट को इस ग्रुप के मोबाइल फोन पर भेजें
मेरे पास डेबियन पर एक घर "सर्वर" है जिसे मैं गर्व से ग्रिंडेलसेवर कहता हूं, इसके आधार पर मैं यह सब लागू करने जा रहा था।
यह केवल कमांड लाइन से एसएमएस भेजने का तरीका सीखने के द्वारा शुरू करने का निर्णय लिया गया था। ऐसा हुआ कि मेरे पास Huawei E1150 के लगभग 3 जी मॉडेम पड़े थे, उनमें से एक का उपयोग करने का निर्णय लिया गया। Google को इस विषय पर आसानी से सामग्री मिली। संक्षेप में,
मॉडेम को "केवल मॉडेम" मोड पर स्विच किया जाना था (इसलिए उनके पास अभी भी एक नकली सीडी ड्राइव और कार्ड रीडर है), और फिर इसके साथ काम करने के लिए Gnokii या Gammu प्रोग्राम को कॉन्फ़िगर करें।
मैंने गम्मू को चुना ...
Gammu
मैं यह नहीं कह सकता कि यह गम्मू के साथ आसान था, लेकिन अंत में सब कुछ काम कर गया।
डेबियन स्थापना मानक है:
$ sudo apt-get install gammu
मेरे पास संस्करण 1.28.0 स्थापित है
Gammu config: / etc / gammurc
मॉडेम को आमतौर पर / dev / ttyUSB0, ttyUSB1, ttyUSB2 के रूप में परिभाषित किया जाता है। हमें ttyUSB0 की आवश्यकता है
बस विन्यास में जोड़ें
[gammu] port= /dev/ttyUSB0 connection = at
कनेक्टिनन एक प्रकार का कनेक्शन है
वह सब है! उसके बाद आप जांच कर सकते हैं
$ sudo gammu --identify
कुछ इस तरह देना चाहिए
: /dev/ttyUSB0 Manufacturer : huawei : unknown (E1550) Firmware : 11.608.12.00.143 IMEI : 123456789101112 SIM (IMSI) : 123456789098765
यहाँ कोई समस्या नहीं होनी चाहिए, लेकिन अगर वहाँ हैं, तो हमेशा
$ man gammu
और Google है।
कंसोल से पहला एसएमएस
पहले आपको मॉडेम का उपयोग करने के लिए अधिकार निर्धारित करने की आवश्यकता है, उन्हें केवल इस उदाहरण के लिए आवश्यक होगा, इसलिए इस तथ्य के बारे में चिंता न करें कि वे रिबूट के बाद रीसेट हो गए हैं।
$ sudo chmod 777 /dev/ttyUSB0
अब, यदि मॉडेम में एक सिम कार्ड डाला गया है और उस पर पैसा है, तो आप एसएमएस भेज सकते हैं
उदाहरण के लिए:
$ sudo echo " Grindel" | gammu sendsms TEXT +79811111111 -unicode
एसएमएस ऑटोमेशन भेज रहा है
इस मामले में गंबू पैकेज केवल सत्यापन के लिए आवश्यक था, बाद में मैंने गंबू-एसएमडी डेमॉन का उपयोग किया।
वह जानता है कि डेटाबेस से एसएमएस संदेश कैसे भेजे जा सकते हैं (आप इसके बारे में अधिक जानकारी प्राप्त कर सकते हैं
gammu वेबसाइट पर, लेकिन ध्यान दें कि बाद के संस्करण का वर्णन किया गया है।)
हम डालते हैं:
$ sudo apt-get install gammu-smsd
विन्यास / आदि / gammu-smsdrc
[gammu] port = /dev/ttyUSB0 connection = at [smsd]
अब आपको आधार बनाने की आवश्यकता है।
$ man gammu-smsd-tables
यह कहा जाता है कि आवश्यक डेटाबेस का डंप
docs/sql/mysql.sql
पर स्थित है जहां तक मैं समझता हूं कि कार्यक्रम के स्रोतों में देखना आवश्यक है, इसलिए उन्हें
डाउनलोड करने के लिए (संस्करण 1.28.0) आप संग्रह को अनपैक कर सकते हैं और इसमें आवश्यक एक ढूंढ सकते हैं। sql स्क्रिप्ट, और फिर इसे किसी भी सुविधाजनक तरीके से भरें, उदाहरण के लिए, phpMyAdmin के माध्यम से। (यदि कोई अधिक उचित विधि सुझाता है, तो मुझे खुशी होगी!)
इन सभी चरणों के बाद, डेमॉन को पुनरारंभ करें।
$ sudo /etc/init.d/gammu-smsd restart
चेतावनी!
gammu-smsd
चलाने के बाद,
gammu --identify
त्रुटि
gammu --identify
करेगा, यह सामान्य है!
एसएमएस भेजना mysql के माध्यम से
$ man gammu-smsd-tables
से उदाहरण, इस कोड को एक ही phpMyAdmin में निष्पादित किया जा सकता है
INSERT INTO outbox ( DestinationNumber, TextDecoded, CreatorID, Coding ) VALUES ( ' ', 'This is a SQL test message', 'Program', 'Default_No_Compression' );
सिद्धांत इस प्रकार है
- DestinationNumber वह नंबर है जिस पर एसएमएस आना चाहिए
- TextDecoded - वह पाठ जो आना चाहिए
- CreatorID सिर्फ एक टैग है जो कहता है कि इस पोस्ट ने कौन सी प्रक्रिया बनाई
- कोडिंग - एन्कोडिंग, यदि एसएमएस अंग्रेजी में है, तो 'Default_No_Compression' का संकेत दिया जाता है, यदि रूसी में तो 'Unicode_No_Compression' का संकेत दिया जाना चाहिए।
चेतावनी! केवल 160 लैटिन और 70 सिरिलिक पात्रों को एसएमएस भेजा जा सकता है! अधिक पाठ भेजने के लिए, "मल्टीपार्ट एसएमएस" हैं। Gammu-smsd उन्हें भेजने का समर्थन करता है, इस प्रक्रिया का वर्णन
$ man gammu-smsd-tables
Vk पृष्ठों की जांच करने के लिए अपना कार्यक्रम लिखना
सच कहूं तो, मैं पूरी तरह से एक नुकसान में था, मैंने ऐसे कार्यक्रम कभी नहीं लिखे, मेरे सभी प्रोग्रामिंग अनुभव स्कूल टर्बो पास्कल और एक छोटे से जेएस प्रोजेक्ट "बार्ट चॉकबोर्ड जनरेटर" तक सीमित थे (मेरी प्रोफ़ाइल में पाया जा सकता है)।
मुझे यह भी नहीं पता था कि किस भाषा का चयन करना है। प्रश्नोत्तर में प्रश्न पूछने का निर्णय लिया गया।
G0lden और
हिमस्खलन के जवाब के लिए बहुत बहुत धन्यवाद!
नतीजतन, मैंने पायथन को चुना और
कोडेक अकादमी में इसे सीखना शुरू कर दिया। समानांतर में, मैं पायथन में वीके एपीआई के साथ काम को लागू करने के तरीके की तलाश कर रहा था। और मैं
इसे Habré पर पाया, इसके लिए धन्यवाद
dzhioev ! इसके अलावा, मैंने धीरे-धीरे वीके आपी के साथ व्यवहार करना शुरू किया। खाली समय के अध्ययन के कारण, बहुत कम बचा था और मैं बहुत धीरे-धीरे आगे बढ़ा।
पायथन के कमोबेश परिचित होने के बाद (कोडेक अकादमी में मुझे सूचियों और शब्दकोशों में मिला), मैंने फैसला किया कि मैं अपनी स्क्रिप्ट लिखना शुरू करने के लिए तैयार हूं।
मैंने एक VKontakte पृष्ठ पंजीकृत करके शुरू किया था, जिसकी ओर से आवेदन संचालित होगा, तब मुझे अपना आवेदन पंजीकृत करने की आवश्यकता थी। यह काफी सरल है और VKontakte के
प्रलेखन में वर्णित है, इसलिए मैंने इसके बारे में नहीं लिखा।
स्क्रिप्ट पार्सिंग
संक्षेप में, स्क्रिप्ट की क्रियाओं का क्रम इस प्रकार है:
- कार्यक्रम द्वारा भेजी गई अंतिम पोस्ट की आईडी का पता लगाएं
- पता करें कि क्या अंतिम पोस्ट के बाद से नए पोस्ट दिखाई दिए हैं
- प्रत्येक नई पोस्ट में कम से कम एक समूह को खोजने का प्रयास करें
- यदि एक समूह संख्या पाई गई थी, तो समूह संख्याओं द्वारा एसएमएस भेजें (अर्थात, स्मगलर पोर्टल के आउटबॉक्स टेबल पर एक विशिष्ट रिकॉर्ड भेजें)
यह डेटाबेस के बारे में समझाने लायक है। मैंने smsd डेटाबेस में VkPosts और Group tables जोड़े। VkPosts में, प्रोग्राम द्वारा भेजी गई सभी पोस्टों की आईडी को जोड़ा जाता है, इसलिए अगली बार जब आप भेजे गए अंतिम पोस्ट की आईडी का अनुरोध कर सकते हैं, तो नवीनतम के। और समूहों में छात्र संख्या और समूह संख्या हैं: समूह | नंबर।
अब स्क्रिप्ट ही टुकड़ा-टुकड़ा है
हम आवश्यक मॉड्यूल कनेक्ट करते हैं
import vk_auth import json import urllib2 from urllib import urlencode import MySQLdb import logging import time import re
आधार से कनेक्शन शुरू करें, और एन्कोडिंग सेट करें ताकि कोई क्राकोज़ीबार न हो
db = MySQLdb.connect(host="localhost", user=" ", passwd="", db="smsd") cursor = db.cursor() db.set_character_set('utf8') cursor.execute('SET NAMES utf8;') cursor.execute('SET CHARACTER SET utf8;') cursor.execute('SET character_set_connection=utf8;')
हम vk_auth मॉड्यूल से कई फ़ंक्शन का उपयोग करके vk api उपयोगकर्ता नाम, पासवर्ड, एप्लिकेशन नंबर और अनुरोध विशेषाधिकारों को सूचित करते हैं, मुझे याद दिलाता है कि मॉड्यूल
यहां से लिया
गया है ।
token, user_id = vk_auth.auth(login, password, "3139526", "groups,wall")
हमें टोकन चर में एप्लिकेशन टोकन मिलता है, और user_id में, उस उपयोगकर्ता पर जाएं जिसका डेटा दर्ज किया गया था।
अगला, हम कुछ और चरों को परिभाषित करते हैं
cursor.execute("SELECT postID FROM VKposts ORDER BY VKposts.number DESC LIMIT 0 , 1;")
कार्यक्रम का मुख्य भाग
post = call_api("wall.get", [("owner_id", groupId), ("count", "1")], token)[1]
एक छोटा सा रोड़ा है। यदि पोस्ट का पाठ 70 से अधिक वर्णों का है, तो मैं इसके बजाय भेजता हूं - "आपका शेड्यूल बदल गया है" + पोस्ट का लिंक, मैं ऐसा करता हूं क्योंकि 70 से अधिक वर्ण एक सिरिलिक एसएमएस (जैसा कि ऊपर उल्लेख किया गया है) में फिट नहीं होंगे, लेकिन मुझे अभी भी मल्टीपार्ट एसएमएस का पता नहीं चला है। ।
logging.info कोड की शुरुआत में कॉन्फ़िगर किए गए लॉगिंग फ़ंक्शन का एक कार्य है:
logging.basicConfig(format='%(asctime)s | %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p', filename='/home/NetDisk/sms/smslog.log',level=logging.DEBUG)
बस इतना ही! यह चीख़ को निष्पादन योग्य बनाने के लिए बना हुआ है
$ sudo chmod +x
और आवश्यक अंतराल के साथ क्रोन में जोड़ें।
लेकिन गमू और उपरोक्त सभी की संभावनाएं समाप्त नहीं होती हैं, और तुम्हारा, मुझे यकीन है, भी। तो कल्पना करो।
योजनाओं में
- छात्र डेटाबेस संग्रह
- एक वेब इंटरफ़ेस बनाना
- और सभी प्रकार की छोटी चीजें और fitcha
सूत्रों का कहना है
पुनश्च
मुझे इन सभी गतिविधियों में बहुत दिलचस्पी थी, मैं इस विचार से पूरी तरह से मोहित हो गया था, मुझे यह सब करने और अध्ययन करने में सक्षम होने की खुशी थी, हालांकि यह हमेशा आसान नहीं था (कभी-कभी मैं यह सब छोड़ देना चाहता था)।
पढ़ने के लिए धन्यवाद, मुझे आशा है कि आपको यह पसंद आया होगा!
आपके विचारों के साथ शुभकामनाएँ!
स्रोत को
यहां ले जाया जा सकता
है ।