मुझे नहीं पता कि प्रावधान की तुलना किससे की जाए। शायद एक बिल्ली के साथ? यह उसके बिना संभव लगता है, लेकिन उसके साथ थोड़ा बेहतर है। खासकर अगर यह काम करता है))
समस्या कथन:
- मैं SIP फोन को जल्दी, सरलता से कॉन्फ़िगर करना चाहता हूं। फोन को इंस्टॉल करते समय, और उससे भी ज्यादा जब इसे फिर से कॉन्फ़िगर किया जाए।
- कई विक्रेताओं के पास अपने स्वयं के कॉन्फ़िगरेशन प्रारूप होते हैं, कॉन्फ़िगर करने के लिए उनकी उपयोगिताओं, कॉन्फ़िगर करने के लिए उनके स्वयं के तरीके। लेकिन मैं वास्तव में सभी के साथ व्यवहार नहीं करना चाहता।
- कई प्रावधान समाधान, क) एक विक्रेता या एक टेलीफोन प्रणाली पर केंद्रित है, ख) वे लागू करने के लिए बोझिल हैं, स्क्रिप्ट, मापदंडों, br का एक गुच्छा ...
बिंदु 3 पर मैं एक टिप्पणी करूंगा कि FreePBX , FusionPBX , Kazoo के लिए उत्कृष्ट प्रणालियां हैं, जहां विभिन्न विक्रेताओं के फोन के लिए सार्वजनिक रूप से उपलब्ध टेम्पलेट हैं। ऐसे व्यावसायिक समाधान हैं जहां मॉड्यूल में विभिन्न निर्माताओं के टेलीफोन के प्रदर्शन को कॉन्फ़िगर करना भी संभव है, उदाहरण के लिए, Yeastar PBX।
Habré में भी व्यंजनों से भरा है कि विभिन्न विक्रेताओं के उपकरणों को कैसे कॉन्फ़िगर किया जाए: एक , दो । लेकिन जैसा कि वे कहते हैं, सभी प्रणालियों में एक घातक दोष है। इसलिए अपनी बाइक बनाओ।
जैसा कि वे xkcd में कहते हैं, 14 प्रारूपों से निपटना नहीं चाहते हैं - 15 वें तक सोचें । इसलिए, हम किसी भी फोन के लिए सामान्य सेटिंग्स का उपयोग करते हैं और अपने स्वयं के जोंस-प्रारूप को कॉन्फ़िगर करते हैं।
कुछ इस तरह:
{ "key": "sdgjdeu9443908", "token": "590sfdsf8u984", "model": "gxp1620", "vendor": "grandstream", "mac": "001565113af8", "timezone_offset": "GMT+03", "ntp_server": "pool.ntp.org", "status": true, "accounts": [ { "name": "", "line": 1, "sip_register": "sip.mobilonsip.ru", "sip_name": "sip102", "sip_user": "sip102", "sip_password": "4321", "sip_auth": "sip102" } ] }
इसलिए, किसी भी फोन में, आपको स्थानीय समय, सीप लाइनों को कॉन्फ़िगर करने की आवश्यकता है। यहां सब कुछ सरल है। अधिक उदाहरण यहां देखे जा सकते हैं ।
खुद का सर्वर
निर्माता के मैनुअल में आमतौर पर एक बिंदु होता है जहां वह कहता है: सीएसवी ले लो, वहां लॉगिन-पासवर्ड-पॉपपी-पता लिखें, हमारी कंपनी की स्क्रिप्ट के साथ फाइलें उत्पन्न करें, उन्हें अपाचे वेब सर्वर के नीचे रख दें और यह ठीक हो जाएगा।
मैनुअल का अगला पैराग्राफ आमतौर पर आपको बताता है कि आप जेनरेट की गई कॉन्फिगर फाइल को और क्या एन्क्रिप्ट कर सकते हैं।
लेकिन यह सब एक क्लासिक है। स्मूथी और ट्विटर के साथ आधुनिक दृष्टिकोण कहता है कि आपको एक तैयार वेब सर्वर बनाने की आवश्यकता है जो अपाचे की तरह शक्तिशाली नहीं होगा, लेकिन केवल एक छोटी सी चीज करेगा। प्रपत्र और संदर्भ द्वारा विन्यास देते हैं।
यहां हम रोकते हैं और याद करते हैं कि लगभग सभी एसआईपी फोन अब http / https के माध्यम से कॉन्फ़िगर प्राप्त कर सकते हैं, इसलिए हम अन्य कार्यान्वयन (ftp, tftp, ftps) पर विचार नहीं करते हैं। फिर, प्रत्येक फोन को अपना स्वयं का अफीम पता होता है। इसलिए, हम दो लिंक करेंगे: एक व्यक्तिगत - डिवाइस की कुंजी पर, दूसरा सामान्य, जो सामान्य टोकन और खसखस पते के एक गुच्छा पर काम करता है।
इसके अलावा, मैं शून्य-विन्यास पर नहीं रहूंगा, अर्थात खरोंच से फोन सेट करना, अर्थात। आपने इसे नेटवर्क में अटका दिया और इसने एक आशा अर्जित की। नहीं, मेरे परिदृश्य में, आपने इसे नेटवर्क में अटका दिया है, प्रारंभिक कॉन्फ़िगरेशन (इसे सर्वर से कॉन्फ़िगरेशन प्राप्त करने के लिए कॉन्फ़िगर किया है), और फिर कुछ चॉकलेट पीते हैं और फोन को सेवा के माध्यम से पुन: कॉन्फ़िगर करते हैं। विकल्प 66 वितरित करना डीएचसीपी सर्वर की चिंता है।
वैसे, मुझे "प्रोविजनिंग" कहने के लिए पूरी तरह से प्रताड़ित किया गया है, इसलिए यह शब्द "प्रोविज़न" में सिमट गया था, अपने पैरों से कृपया किक न करें।
और एक और बात: हमारे सर्वर में कोई UI नहीं है, अर्थात उपयोगकर्ता इंटरफ़ेस। शायद अभी के लिए, लेकिन यकीन नहीं, क्योंकि मुझे जरूरत नहीं है। लेकिन सेटिंग्स को बचाने / हटाने के लिए एक एपीआई है, समर्थित विक्रेताओं, मॉडल की एक सूची प्राप्त करना, सब कुछ स्वैगर विनिर्देश के कैनन के अनुसार वर्णित है।
एपीआई, यूआई क्यों नहीं? क्योंकि मेरे पास पहले से ही अपना स्वयं का टेलीफोन सिस्टम है, फिर, मेरे पास क्रेडेंशियल्स का एक स्रोत है, जहां मुझे बस इस डेटा को लेने की जरूरत है, आवश्यक जंस की रचना करें और इसे सर्वर पर प्रकाशित करें। और पहले से ही सर्वर जसन-फाइल में निर्दिष्ट नियमों के अनुसार सुरक्षित है, यह आवश्यक डिवाइस को कॉन्फ़िगरेशन को बाहर कर देगा या डिवाइस गलत होने पर बाहर नहीं देगा, या इस जसन में निर्दिष्ट मानदंडों को पूरा नहीं करता है।

यहाँ इस तरह के एक microservice प्रावधान निकला है। इसे सोनाटा कहा जाता है, स्रोत कोड गीथूब पर उपलब्ध है, एक तैयार डॉकटर छवि भी है , यहां डॉक का उपयोग करने का एक उदाहरण है ।
मुख्य विशेषताएं:
किसी भी स्थिति में, डिफ़ॉल्ट रूप से समय पर सीमित पहुंच, डिफ़ॉल्ट रूप से 10 मिनट। यदि आप कॉन्फिगरेशन को फिर से उपलब्ध कराना चाहते हैं, तो कॉनफिगरेशन को फिर से अचीव करें।
सभी विक्रेताओं के लिए एक प्रारूप, सभी ट्यूनिंग को सोनाटा में हटा दिया जाता है, आप मानकीकृत जोंस भेजते हैं, आप किसी भी उपलब्ध उपकरण को कॉन्फ़िगर करते हैं।
उपकरणों के लिए सभी जारी किए गए कॉन्फ़िगरेशन लॉग किए गए हैं, सभी समस्या क्षेत्रों को लॉग में देखा जा सकता है और त्रुटियों को देख सकते हैं
टोकन के साथ एक सामान्य लिंक का उपयोग करना संभव है, प्रत्येक फोन मैक पते को निर्दिष्ट करके अपना स्वयं का कॉन्फ़िगरेशन प्राप्त करता है। या कुंजी पर एक व्यक्तिगत लिंक।
प्रबंधन और प्रावधान के लिए एपीआई बंदरगाहों के बीच विभाजित हैं
टेस्ट। मेरे लिए जारी किए गए कॉन्फ़िगरेशन के प्रारूप को ठीक करना और परीक्षणों के साथ कॉन्फ़िगरेशन जारी करने की सभी सामान्य स्थितियों को कवर करना बहुत महत्वपूर्ण था। यह सब स्पष्ट रूप से काम करने के लिए।
विपक्ष:
अभी तक, सोनाटा एन्क्रिप्शन का उपयोग नहीं किया गया है। यानी बेशक, आप बेटे से पहले, उदाहरण के लिए, nginx डालकर https का उपयोग करना शुरू कर सकते हैं। लेकिन यहां अभी भी मालिकाना तरीके शामिल नहीं हैं। क्यों? परियोजना अभी भी युवा है, लगभग अपने पहले सौ उपकरणों को पलट दिया। और, ज़ाहिर है, मैं विचार, प्रतिक्रिया एकत्र करता हूं। इसके अलावा, सब कुछ सुरक्षित बनाने के लिए, ताकि नेटवर्क पर कॉन्फ़िगरेशन को सूँघा नहीं जा सके, यह संभवतः एन्क्रिप्शन कुंजियों, tls और उनके साथ हेजहोग के साथ परेशान करने लायक है, लेकिन यह एक निरंतरता होगी।
UI की कमी। शायद अंत उपयोगकर्ता के लिए यह एक महत्वपूर्ण ऋण है, लेकिन सिस्टम प्रशासक के लिए, कंसोल उपयोगिता एक पूर्ण अनुप्रयोग से अधिक महत्वपूर्ण है। कंसोल उपयोगिता बनाने की योजना थी, लेकिन निश्चित नहीं कि क्या इसकी आवश्यकता है?
परिणाम क्या है?
प्रबंधन के लिए एपीआई के साथ कई फोन मॉडल के प्रावधान के लिए छोटा और सरल वेब सर्वर।
एक बार फिर, यह कैसे काम करना चाहिए?
- सोनाटा स्थापित करें।
- हम json-config बनाते हैं और इसे सोनाटा में प्रकाशित करते हैं।
- फिर हमें प्रावधान करने के लिए सोनाटा से एक लिंक मिलता है।
- फिर हम टेलीफोन सेट में इस लिंक को इंगित करते हैं।
- डिवाइस कॉन्फ़िगरेशन को मजबूत करता है
बाद के ऑपरेशन में केवल दो चरण हैं:
- हम एक json config बनाते हैं और इसे सोनाटा में प्रकाशित करते हैं
- डिवाइस कॉन्फ़िगरेशन को मजबूत करता है
किस प्रकार के फोन अपलोड किए जाते हैं?
विक्रेताओं ग्रैंडस्ट्रीम, फैनविल, येलिंक। विक्रेता के भीतर कन्फ़िगल्स कमोबेश एक जैसे होते हैं, लेकिन फ़र्मवेयर के आधार पर भिन्न हो सकते हैं - इसके अतिरिक्त परीक्षण करना आवश्यक हो सकता है।
क्या नियम निर्धारित किए जा सकते हैं?
समय के हिसाब से। आप उस समय को निर्दिष्ट कर सकते हैं जब तक कि कॉन्फ़िगरेशन उपलब्ध नहीं होगा।
मैक पते द्वारा। जब आप डिवाइस के व्यक्तिगत लिंक के माध्यम से कॉन्फ़िगरेशन भेजते हैं, तो मैक पते की भी जांच की जाएगी।
आईपी द्वारा। आईपी-एड्रेस द्वारा, जहां से अनुरोध किया गया था।
सोनाटा के साथ बातचीत कैसे करें?
एपीआई के माध्यम से, http अनुरोध करना। एपीआई आपके इंस्टॉलेशन में उपलब्ध होगा। क्योंकि चूँकि एपीआई स्वैगर विनिर्देश का समर्थन करता है, आप एपीआई के लिए परीक्षण अनुरोधों के लिए ऑनलाइन उपयोगिता का उपयोग कर सकते हैं।
ठीक है, महान। ठंडी चीज, कैसे करें प्रयास?
सबसे आसान तरीका सोनाटा-सैंपल रिपॉजिटरी के आधार पर डॉक इमेज को तैनात करना है। रिपॉजिटरी में इंस्टॉलेशन निर्देश होते हैं।
और अगर मुझे नोड.जेएस पता है?
यदि आपके पास जावास्क्रिप्ट का उपयोग करने का अनुभव है, तो आप जल्दी से यह पता लगाएंगे कि यहां सब कुछ कैसे काम करता है।
क्या सोनाटा का विकास होगा?
मैंने अपने लक्ष्यों को आंशिक रूप से हासिल किया। इसके अलावा विकास फोन सेटिंग्स के स्वचालन के विषय पर मेरे कार्यों का सवाल है। अभी भी फोन बटन को अनुकूलित करने के लिए कॉन्फ़िगर करने का विस्तार करने का अवसर है, पता पुस्तिका की विशेषताएं जोड़ें, शायद कुछ और, टिप्पणियों में लिखें।
सारांश और स्वीकृति
मुझे रचनात्मक सुझावों / आपत्तियों / टिप्पणियों और प्रश्नों, के रूप में खुशी होगी यह अच्छी तरह से स्पष्ट रूप से वर्णित कुछ हो सकता है।
मैं उन सभी सहयोगियों को भी धन्यवाद देता हूं जिन्होंने परीक्षणों के लिए मदद, सलाह, परीक्षण, प्रदान / फोन दान किए हैं। वास्तव में, बहुत से लोग जिनके साथ मैंने काम पर बात की थी, चैट रूम और ईमेल में एक अलग हद तक परियोजना में शामिल थे। विचारों और विचारों के लिए धन्यवाद।