कन्नेल एसएमएस गेटवे कॉन्फ़िगर करें

कई बार ऐसे अद्भुत सॉफ्टवेयर के संदर्भ में कानेल थे, लेकिन किसी कारण से इसके एकीकरण के उदाहरणों का कोई विशिष्ट वर्णन नहीं है। यहां एक सेवा का एक उदाहरण है जिसे एक मोबाइल ऑपरेटर (ऑप्सोस) के साथ समझौते द्वारा लागू किया जा सकता है, लेकिन यह अभी भी स्पष्ट नहीं है कि यह कैसे करना है। मैं इस स्थिति को ठीक करने की कोशिश करूंगा।

Offtopic। मुझे इसकी आवश्यकता क्यों थी?


मैं लंबे समय से एक परियोजना पर काम कर रहा हूं, जिसका सार मेगाफोन के झंडे के नीचे वास्तविक शहर के खेल का संचालन करना है। सबसे पहले, ये गेम थे जिनके लिए ज़ेंड फ्रेमवर्क पर एक सरल ऑनलाइन सेवा बनाई गई थी, जिसमें पंजीकरण करना, टीमों का गठन करना, खेलों में भाग लेना, कार्य प्राप्त करना, उत्तर दर्ज करना संभव था। हालांकि, आयोजकों और मैंने इस बारे में सोचा कि कैसे इस प्रक्रिया को आम जनता और अधिक मोबाइल तक पहुँचा जा सकता है। हमने एसएमएस के साथ काम करने के लिए इस प्लेटफॉर्म का रीमेक बनाने का फैसला किया। यह कहा जाता है - किया, मैंने मेगाफोन के तकनीशियनों से संपर्क किया, पता चला कि हम कैसे एसएमएस प्राप्त कर सकते हैं और भेज सकते हैं (बेशक, यह http का उपयोग करने के लिए बहुत अधिक बेहतर था, क्योंकि इसे एकीकृत करने के लिए किसी भी प्रयास की आवश्यकता नहीं थी और कई एसएमएस सेवाएं यह अवसर प्रदान करती हैं) , मेगाफोन में उन्होंने केवल नग्न एसएमपीपी दिया। कुछ नहीं करना था, बाहर निकलना था।

लंबे समय से मैं गेटवे के लिए एक अच्छे विकल्प की तलाश में था, यह विकल्प Kannel था - ओपन सोर्स एसएमएस, WAP गेटवे। WAP घटक ने मुझे दिलचस्पी नहीं ली, लेकिन यह SMPP-HTTP गेटवे के लिए वास्तव में बहुत उच्च गुणवत्ता वाला समाधान निकला (इसका उपयोग SMPP को सर्वर के रूप में एसएमएस भेजने और प्राप्त करने के लिए भी किया जा सकता है, डीबी स्ट्रिंग्स द्वारा संदेश प्राप्त करने और भेजने के लिए)।

अभ्यास के लिए आगे बढ़ते हैं।


कई मायनों में, मल्टीफ़ॉन के साथ एकीकरण के बारे में मैंने अपने लेख में जो कुछ भी उद्धृत किया है, वह डुप्लिकेट है, लेकिन यहां यह मोबाइल ऑपरेटर के एसएमपीपी के साथ काम करने का एक उदाहरण है।

मैं स्थापना और प्रारंभिक कॉन्फ़िगरेशन का हिस्सा छोड़ दूंगा, आप पहले बताए गए लेख में उनके साथ खुद को परिचित कर सकते हैं।

सिद्धांत की एक बिट। यह प्रणाली थोड़ी अमानक है। इसमें कई मुक्त खड़े शैतान शामिल हैं। एक दानव है जो बाकी की देखरेख करता है, और यदि प्रक्रिया अचानक मर जाती है, तो वह इसे फिर से शुरू करता है। यह डेमॉन rc.d या init.d से शुरू होने पर पंजीकृत होता है, आप स्टार्टअप स्क्रिप्ट में इसके मापदंडों से खुद को परिचित कर सकते हैं।

बियररबॉक्स मुख्य डेमॉन है जो एसएमपीपी संचार को एक ग्राहक के रूप में रखता है, 3 जी डोंगल के साथ काम करता है, अन्य डेमोंस को जोड़ने के लिए पोर्ट पर सुनता है।
smsbox - एक वेब सेवा से संदेश प्राप्त करने और उन्हें भेजने के लिए बियररबॉक्स के लिए जिम्मेदार एक डेमन
openmppbox एक डेमन है जो अन्य क्लाइंट्स को जोड़ने के लिए एसएमपीपी सर्वर के रूप में कार्य करता है। यह बियररबॉक्स से भी जुड़ता है और इसके माध्यम से काम करता है।
वैपबॉक्स एक डेमन है जो वैप गेट की तरह कार्य करता है। ईमानदारी से, मैं वास्तव में उसे समझ नहीं पाया।
sqlbox एक बहुत ही रोचक डेमॉन है जो एक निश्चित संरचना के MySQL डेटाबेस में आने वाले संदेशों को रिकॉर्ड कर सकता है, साथ ही साथ SMS संदेश भी भेज सकता है जो MySQL डेटाबेस में जोड़े जाते हैं। यह MVC के माध्यम से मॉडल में सीधे sms को एकीकृत करना संभव बनाता है। यही है, भेजना सिर्फ आपके एमवीसी एप्लिकेशन के अंदर एक sms ऑब्जेक्ट को बनाना और सहेजना है, शांत, सही? और रिसेप्शन समान है, हालांकि, इस मामले में आपको कॉलबैक प्राप्त नहीं होगा जिसे आपने एसएमएस प्राप्त किया है, आपको ताज पर स्क्रिप्ट को चलाना होगा और यह अब रीयलटाइम नहीं होगा।
इनमें से प्रत्येक डेमॉन का अपना स्वयं का रन_कैंसल_बॉक्स संलग्न होना चाहिए। यह एक डेमॉन ओवरसियर है जिसके लिए आपको स्टार्टअप स्क्रिप्ट में अतिरिक्त रूप से पंजीकरण करना होगा यदि आप अपने कॉन्फ़िगरेशन में एक से अधिक बियरबॉक्स / smsbox / WAPbox चलाना चाहते हैं या अन्य डेमोंस को संलग्न करना चाहते हैं। या कमांड लाइन पैरामीटर --parachute (-पी) का उपयोग करके अपनी स्वयं की स्क्रिप्ट लिखें, जैसा कि ज़र्कम्स की टिप्पणियों में सुझाया गया है

टिप्पणियों के साथ कॉन्फ़िगर करें

group = core admin-port = 13000 #,             admin-password = pass #-,     (..    ) log-file = "/var/log/kannel/bearerbox.log" log-level = 1 #  ,    0. 1      . access-log = "/var/log/kannel/access_kannel.log" store-file = "/var/log/kannel/store_sms" smsbox-port = 13001 #,     - dlr-storage = internal sms-resend-retry = 1 # 1   . group = smsc smsc-id = povoljye smsc = smpp host = xxx.xxx.xxx.xxx #,     port = xxxx smsc-username = "name" smsc-password = "pass" source-addr-ton = 0 # 4      .      . source-addr-npi = 1 #   -  . dest-addr-ton = 1 dest-addr-npi = 1 system-type = VMA #-     ) throughput = 1000 #.   reconnect-delay = 5 #   connection-timeout = 120 # ,        N . transceiver-mode = true #,    !    ,        -   .       ,    ,    . denied-smsc-id = kemerovo #   -         SMS    SMSC.  SMS   round-robin,   ,    ,    SMS     . allowed-smsc-id = povoljye preferred-smsc-id = povoljye group = smsc #   smsc   .    -   ,    . smsc-id = kemerovo smsc = smpp host = xxx.xxx.xxx.xxx #  port = xxxx receive-port = xxxx smsc-username = "kemerovo" smsc-password = "pass" source-addr-ton = 0 source-addr-npi = 1 dest-addr-ton = 1 dest-addr-npi = 1 reconnect-delay = 5 system-type = VMA throughput = 1000 connection-timeout = 120 transceiver-mode = true denied-smsc-id = povoljye allowed-smsc-id = kemerovo preferred-smsc-id = kemerovo group = smsbox bearerbox-host = localhost sendsms-port = 13003 #,   smsbox  http    global-sender = 000037 #     log-file = /var/log/kannel/smsbox.log log-level = 0 access-log = /var/log/kannel/access_smsbox.log group = sendsms-user username = "user1" #,       SMS   http  password = "pass" concatenation = true #   max-messages = 20 #    default-smsc = povoljye group = sendsms-user username = "user2" password = "pass" concatenation = true max-messages = 20 default-smsc = kemerovo #ENGINE group = sms-service keyword = default # sms   .       . post-url = "http://example.com:8080/controller/action/tel/%p/time/%t/coding/%c/smsc/%i" # url   concatenation = true max-messages = 0 #  kannel  ,     http response.    , ..       . 


इसलिए, इस मामले में, हमने 2m मेगाफोन sms केंद्रों के कनेक्शन की जांच अलग-अलग भेजने के साथ की, जो smsc पैरामीटर पर निर्भर करता है।

इसलिए हम एसएमएस भेजते हैं (एन्कोडिंग समस्याओं के बारे में पिछली पोस्ट देखें)
  http://example.com:13003/cgi-bin/sendsms?smsc=$smsc&username=user1&password=pass&coding=2&to=79277777777&text=some_text 


और इसलिए हमें अपनी स्क्रिप्ट में एसएमएस पाठ मिलता है (उदाहरण के लिए, PHP), इस मामले में यह पोस्ट अनुरोध के शरीर में प्रसारित होता है।
 $msg = file_get_contents('php://input'); 


फिर, यदि आपके पास एक फ़ायरवॉल है, तो आपको बाहर से पहुँचते समय या अंदर से काम करते समय संबंधित पोर्ट को खोलना होगा, लूपबैक को खोलें।

लिंक से मैं उपयोगकर्ता गाइड को फिर से लाता हूं, क्योंकि वह बहुत व्यापक है। कनेक्शन के साथ समस्याओं का सामना करने वाले लोगों के लिए - टिप्पणियों पर लिखें या मेलिंग सूची तैयार करने के लिए , वे वहां मदद करेंगे।

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


All Articles