Sonata - SIP စီမံဆောင်ရွက်ပေးသည့် ဆာဗာ

စီမံဆောင်ရွက်ပေးခြင်းနဲ့ ဘာကို နှိုင်းယှဉ်ရမှန်းမသိဘူး။ ကြောင်နဲ့ ဖြစ်နိုင်သလား။ မပါဘဲ ဖြစ်နိုင်သည်ဟု ထင်ရသော်လည်း ၎င်းနှင့်အတူ အနည်းငယ် ပိုကောင်းပါသည်။ အထူးသဖြင့် အလုပ်ဖြစ်လျှင်))

ပြဿနာဖွဲ့စည်းပုံ-

  1. SIP ဖုန်းများကို မြန်မြန်ဆန်ဆန်၊ လွယ်လွယ်ကူကူနှင့် ဘေးကင်းစွာ စနစ်ထည့်သွင်းလိုပါသည်။ ဖုန်းကို ထည့်သွင်းသည့်အခါနှင့် ၎င်းကို ပြန်လည်ပြင်ဆင်သည့်အခါတွင် ပို၍ပင်။
  2. ရောင်းချသူအများအပြားတွင် ၎င်းတို့၏ကိုယ်ပိုင် config ဖော်မတ်များ၊ configs များဖန်တီးရန်အတွက် ၎င်းတို့၏ကိုယ်ပိုင် utilities များနှင့် configs ကိုကာကွယ်ရန် ၎င်းတို့၏ကိုယ်ပိုင်နည်းလမ်းများရှိသည်။ ပြီးတော့ လူတိုင်းနဲ့ မဆက်ဆံချင်ဘူး။
  3. စီမံဆောင်ရွက်ပေးခြင်းဆိုင်ရာ ဖြေရှင်းချက်အများအပြား၊ က) ရောင်းချသူ တစ်ဦးတည်း သို့မဟုတ် တယ်လီဖုန်းစနစ်တစ်ခုအပေါ် အာရုံစိုက်ထားသည်၊ ခ) အကောင်အထည်ဖော်ရန် အလွန်ခက်ခဲသည်၊ script အများအပြား၊ ကန့်သတ်ချက်များ၊ brrr...

အချက် 3 နှင့် ပတ်သက်၍ ကျွန်ုပ်သည် ကောင်းမွန်သော စီမံပေးသည့် စနစ်များရှိကြောင်း မှတ်ချက်ပေးပါမည်။ FreePBX အတွက်, FusionPBX အတွက်, Kazoo အတွက်ရောင်းချသူများထံမှ ဖုန်းများအတွက် နမူနာပုံစံများကို အများသူငှာ ရရှိနိုင်ပါသည်။ ပံ့ပိုးပေးသည့် module တွင်၊ ဥပမာ၊ Yeastar PBX တွင် မတူညီသော ထုတ်လုပ်သူထံမှ ဖုန်းများ၏ လည်ပတ်မှုကို သင်သတ်မှတ်နိုင်သည့် စီးပွားဖြစ်ဖြေရှင်းနည်းများရှိပါသည်။

Habré သည် အမျိုးမျိုးသော ရောင်းချသူများထံမှ စက်ပစ္စည်းများကို စနစ်ထည့်သွင်းနည်းအတွက် ချက်ပြုတ်နည်းများ ပြည့်စုံပါသည်။ အချိန်, два. ဒါပေမယ့် သူတို့ပြောသလိုပဲ၊ စနစ်အားလုံးမှာ ဆိုးရွားတဲ့ ချို့ယွင်းချက်ရှိတယ်။ ဒီတော့ ငါတို့ ကိုယ်ပိုင်ဆိုင်ကယ်လုပ်မယ်။

သင်၏ကိုယ်ပိုင်ပုံစံ

သူတို့က xkcd မှာပြောသလို၊ ဖော်မတ် ၁၄ ခုနဲ့ မဆက်ဆံချင်ဘူးဆိုရင်၊ 15th နှင့်အတူတက်လာပါ။. ထို့ကြောင့်၊ ကျွန်ုပ်တို့သည် မည်သည့်ဖုန်းအတွက်မဆို ယေဘူယျဆက်တင်များကို အသုံးပြုပြီး ကျွန်ုပ်တို့၏ကိုယ်ပိုင် json config ဖော်မတ်ကို ပြုလုပ်ပါသည်။

ဤကဲ့သို့သော တစ်ခုခု-

{
   "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"
      }
   ]
}

ထို့ကြောင့် မည်သည့်ဖုန်းတွင်မဆို ဒေသစံတော်ချိန်နှင့် SIP လိုင်းများကို ချိန်ညှိရန် လိုအပ်ပါသည်။ အရာအားလုံးကဒီမှာရိုးရှင်းပါတယ်။ နောက်ထပ် ဥပမာများကို သင်ကြည့်ရှုနိုင်ပါသည်။ ဒီမှာ.

သင်၏ကိုယ်ပိုင်ဆာဗာကို စီမံဆောင်ရွက်ပေးခြင်း။

ထုတ်လုပ်သူ၏လက်စွဲစာအုပ်များတွင် များသောအားဖြင့် csv တစ်ခုယူပါ၊ သင်၏ login-password-mac-address ကိုရေးပါ၊ ကျွန်ုပ်တို့၏ကိုယ်ပိုင် script ကိုအသုံးပြု၍ ဖိုင်များထုတ်ပေးပါ၊ Apache ဝဘ်ဆာဗာအောက်တွင်ထား၍ အရာအားလုံးအဆင်ပြေလိမ့်မည်။

လက်စွဲစာအုပ်၏ နောက်အပိုဒ်သည် အများအားဖြင့် သင့်အား ထုတ်လုပ်ထားသော config ဖိုင်ကို စာဝှက်ထားနိုင်သည်ဟု များသောအားဖြင့် ပြောပြသည်။

ဒါပေမယ့် ဒါတွေအကုန်လုံးက ဂန္တဝင်တွေပါ။ Smoothie နှင့် Twitter တို့ဖြင့် ခေတ်မီချဉ်းကပ်နည်းသည် Apache ကဲ့သို့ အစွမ်းထက်မည်မဟုတ်သော်လည်း သေးငယ်သည့်အရာတစ်ခုသာ လုပ်ဆောင်ရန် အသင့်ပြုလုပ်ထားသော ဝဘ်ဆာဗာတစ်ခု ပြုလုပ်ရန် လိုအပ်သည်ဟု ဆိုသည်။ လင့်ခ်တစ်ခုသုံးပြီး configuration ကိုဖန်တီးပြီး ပေးပို့ပါ။

ဤနေရာတွင် ရပ်ပြီး SIP ဖုန်းအားလုံးနီးပါးသည် ယခုအခါ http/https မှတစ်ဆင့် configs များကို လက်ခံရရှိနိုင်ပြီဖြစ်သောကြောင့် အခြားအကောင်အထည်ဖော်မှုများ (ftp၊ tftp, ftps) ကို ထည့်သွင်းစဉ်းစားမည်မဟုတ်ပါ။ ထို့နောက် ဖုန်းတိုင်းသည် ၎င်း၏ MAC လိပ်စာကို သိသည်။ ထို့ကြောင့်၊ ကျွန်ုပ်တို့သည် ဘုံတိုကင်တစ်ခုနှင့် MAC လိပ်စာတို့ကို ပေါင်းစပ်အသုံးပြုထားသည့် စက်ခလုတ်ကို အခြေခံ၍ ချိတ်ဆက်မှုနှစ်ခုကို ပြုလုပ်ပါမည်။

ထို့အပြင်၊ ငါသည် zero-config တွင်နေမည်မဟုတ်ပါ၊ i.e. ဖုန်းကို အစမှ စဖွင့်သတ်မှတ်ခြင်း ၊ i.e. သင်သည် ၎င်းကို ကွန်ရက်တွင် ပလပ်ထိုးလိုက်သည်နှင့် ၎င်းသည် စတင်အလုပ်လုပ်သည်။ မဟုတ်ပါ၊ ကျွန်ုပ်၏အခြေအနေတွင် သင်သည် ၎င်းအား ကွန်ရက်သို့ချိတ်ဆက်ပါ၊ ပဏာမထည့်သွင်းမှုပြုလုပ်ပါ (စီမံဆောင်ရွက်ပေးသည့်ဆာဗာမှ config ကိုလက်ခံရရှိရန် ၎င်းကိုသတ်မှတ်ပါ)၊ ထို့နောက် pina colada ကိုသောက်ပြီး စီမံဆောင်ရွက်ပေးမှုမှတစ်ဆင့် လိုအပ်သလို ဖုန်းကို ပြန်လည်ပြင်ဆင်ပါ။ ရွေးချယ်မှု 66 ကိုဖြန့်ဝေခြင်းသည် DHCP ဆာဗာ၏တာဝန်ဖြစ်သည်။

စကားမစပ်၊ "ပေးဆောင်ခြင်း" လို့ပြောရတာ ငြီးငွေ့နေပြီမို့ စကားလုံးကို "ပေးဆောင်ခြင်း" ဆိုပြီး အတိုချုံးပြီး ကျေးဇူးပြုပြီး ငါ့ကို မကန်ပါနဲ့။

နောက်တစ်ခု- ကျွန်ုပ်တို့၏ စီမံဆောင်ရွက်ပေးသည့်ဆာဗာတွင် UI မပါရှိပါ။ ဆိုလိုသည်မှာ၊ အသုံးပြုသူ အင်တာဖေ့စ်။ လောလောဆယ်တော့ မသေချာဘူးဆိုတော့... မလိုပါဘူး။ သို့သော် ဆက်တင်များကို သိမ်းဆည်း/ဖျက်ရန်၊ ပံ့ပိုးပေးထားသည့် ရောင်းချသူများ၊ မော်ဒယ်များစာရင်းကို ရယူရန်၊ အရာအားလုံးသည် swagger သတ်မှတ်ချက်များ၏ canons အရ ဖော်ပြထားသည့် API တစ်ခုရှိသည်။

အဘယ်ကြောင့် API နှင့် UI မဟုတ်သနည်း။ ဘာဖြစ်လို့လဲဆိုတော့ ကျွန်ုပ်တွင် ကျွန်ုပ်၏ကိုယ်ပိုင်တယ်လီဖုန်းစနစ်ရှိပြီး၊ ထို့နောက် ကျွန်ုပ်တွင် ဤဒေတာကိုယူရန်၊ လိုအပ်သော json ကို စုစည်းပြီး စီမံဆောင်ရွက်ပေးသည့်ဆာဗာတွင် ထုတ်ဝေရန် လိုအပ်သည့် အထောက်အထားများ အရင်းအမြစ်တစ်ခုရှိသည်။ နှင့် json ဖိုင်တွင်ဖော်ပြထားသော စည်းမျဉ်းများနှင့်အညီ စီမံဆောင်ရွက်ပေးခြင်းဆာဗာသည် လိုအပ်သောစက်ပစ္စည်းအား ၎င်း၏ config ကိုပေးမည် သို့မဟုတ် စက်ပစ္စည်းမမှန်ပါက သို့မဟုတ် ဤ json တွင်ဖော်ပြထားသည့်စံနှုန်းများနှင့်မကိုက်ညီပါက ၎င်းကိုပေးမည်မဟုတ်ပါ။

Sonata - SIP စီမံဆောင်ရွက်ပေးသည့် ဆာဗာ

ဤသည်မှာ ပံ့ပိုးပေးသည့် အသေးစားဝန်ဆောင်မှုကို ပေါ်ပေါက်လာစေသည်။ ခေါ်တယ်။ ကဗျာအရင်းအမြစ်ကုဒ်ကို GitHub တွင်ရရှိနိုင်သည်၊ လည်းရှိသည်။ အဆင်သင့် docker ပုံDocker အသုံးပြုမှု ဥပမာ ဒီမှာ.

အဓိကအင်္ဂါရပ်များ-

  • မည်သို့ပင်ဆိုစေ၊ ပုံသေ 10 မိနစ်ဖြင့် အချိန်အားဖြင့် config သို့ဝင်ရောက်ခွင့်ကို ကန့်သတ်ထားသည်။ config ကို ထပ်မံရရှိနိုင်စေလိုပါက၊ configuration ကို ထပ်မံထုတ်ဝေပါ။

  • ရောင်းချသူအားလုံးအတွက် ဖော်မတ်တစ်ခု၊ ချိန်ညှိမှုအားလုံးကို sonata တွင် ဖယ်ရှားပြီး၊ သင် စံပြု json ပေးပို့ပါ၊ ရရှိနိုင်သော မည်သည့်စက်ပစ္စည်းကိုမဆို စီစဉ်သတ်မှတ်ပါ။

  • စက်ပစ္စည်းများသို့ ထုတ်ပေးသော configs အားလုံးကို မှတ်တမ်းဝင်ထားပြီး၊ ပြဿနာဧရိယာအားလုံးကို မှတ်တမ်းတွင် ကြည့်ရှုနိုင်ပြီး အမှားအယွင်းများကို မြင်တွေ့နိုင်သည်

  • တိုကင်တစ်ခုနှင့် ဘုံလင့်ခ်တစ်ခုကို အသုံးပြုရန် ဖြစ်နိုင်သည်၊ ဖုန်းတစ်ခုစီသည် mac လိပ်စာကို သတ်မှတ်ခြင်းဖြင့် ၎င်း၏ ကိုယ်ပိုင် config ကို ရရှိသည်။ သို့မဟုတ် သော့မှတစ်ဆင့် ကိုယ်ရေးကိုယ်တာလင့်ခ်တစ်ခု။

  • စီမံခန့်ခွဲမှု (စီမံခန့်ခွဲမှု) အတွက် APIs များနှင့် ဖုန်းများသို့ configs များ ပံ့ပိုးပေးခြင်း (provisioning) ကို ports ဖြင့် ပိုင်းခြားထားသည်။

  • စမ်းသပ်မှုများ။ ထုတ်ပေးထားသော config ၏ဖော်မတ်ကို ပြုပြင်ရန်နှင့် စမ်းသပ်မှုများဖြင့် config တစ်ခုထုတ်ပေးခြင်း၏ ပုံမှန်အခြေအနေအားလုံးကို ကာမိရန်မှာ အလွန်အရေးကြီးပါသည်။ ဒါမှ ဒီဟာတွေ အားလုံး ရှင်းရှင်းလင်းလင်း သိနိုင်မှာပါ။

cons:

Sonata တွင် ယခုအချိန်အထိ ကုဒ်ဝှက်ခြင်းကို မည်သည့်နည်းဖြင့်မျှ အသုံးမပြုပါ။ အဲဒါတွေ။ ဥပမာအားဖြင့် sonata ၏ရှေ့တွင် nginx ကိုထည့်ခြင်းဖြင့် https ကိုစတင်အသုံးပြုနိုင်သည်။ ဒါပေမယ့် ကိုယ်ပိုင်နည်းလမ်းတွေကို အသုံးမပြုသေးပါဘူး။ အဘယ်ကြောင့်? ပရောဂျက်သည် ငယ်သေးသည်၊ ၎င်းသည် ၎င်း၏ ပထမဆုံး စက်ပစ္စည်း တစ်ရာကို လွှင့်တင်ခဲ့သည်။ ပြီးတော့ အကြံဉာဏ်တွေနဲ့ အကြံပြုချက်တွေကို စုဆောင်းခဲ့တယ်။ ထို့အပြင်၊ အရာအားလုံးလုံခြုံစေရန်အတွက်၊ ကွန်ရက်ပေါ်တွင် configs များကို အနံ့ခံ၍မရစေရန်၊ ၎င်းတို့နှင့်အတူ ကုဒ်ဝှက်ထားသောသော့များ၊ tls နှင့် hedgehog တို့ဖြင့် အနှောက်အယှက်ဖြစ်နိုင်သော်လည်း ၎င်းသည် ဆက်သွားမည်ဖြစ်သည်။

UI မရှိခြင်း။ ၎င်းသည် အသုံးပြုသူအတွက် သိသာထင်ရှားသော အားနည်းချက်ဖြစ်ကောင်းဖြစ်နိုင်သော်လည်း စနစ်စီမံခန့်ခွဲသူအတွက် ကွန်ဆိုးလ်အသုံးအဆောင်တစ်ခုသည် ပြည့်စုံသောအပလီကေးရှင်းထက် ပိုအရေးကြီးပါသည်။ Console utility တစ်ခုကို ပြုလုပ်ရန် အစီအစဉ်များ ရှိသော်လည်း လိုအပ်ခြင်း ရှိ၊ မရှိ မသေချာပါ။

ရလဒ်ကဘာလဲ?

စီမံခန့်ခွဲမှုအတွက် API တစ်ခုပါရှိသော ဖုန်းမော်ဒယ်များစွာကို ပံ့ပိုးပေးရန်အတွက် သေးငယ်ပြီး ရိုးရှင်းသော ဝဘ်ဆာဗာတစ်ခု။

တစ်ဖန်၊ ဤအရာသည် မည်သို့လုပ်ဆောင်ရမည်နည်း။

  1. Sonata ထည့်သွင်းခြင်း။
  2. ကျွန်ုပ်တို့သည် json config ကိုဖန်တီးပြီး sonata တွင်ထုတ်ဝေသည်။
  3. ထို့နောက် sonata မှ စီမံဆောင်ရွက်ပေးသည့်လင့်ခ်တစ်ခုကို ကျွန်ုပ်တို့ လက်ခံရရှိပါသည်။
  4. ပြီးရင် ဖုန်းထဲမှာ ဒီလင့်ခ်ကို ညွှန်ပေးတယ်။
  5. စက်သည် config ကိုဖွင့်နေပါသည်။

နောက်ဆက်တွဲလုပ်ဆောင်မှုတွင် အဆင့်နှစ်ဆင့်သာရှိသည်။

  1. ကျွန်ုပ်တို့သည် json config ကိုဖန်တီးပြီး sonata တွင်ထုတ်ဝေသည်။
  2. စက်သည် config ကိုဖွင့်နေပါသည်။

ဘယ်ဖုန်းတွေကို အရောင်းမြှင့်တင်မလဲ။

ရောင်းချသူများ Grandstream၊ Fanvil၊ Yealink။ ရောင်းချသူအတွင်းရှိ configs များသည် အနည်းနှင့်အများ တူညီသော်လည်း firmware ပေါ်မူတည်၍ ကွဲပြားနိုင်သည် - ထပ်မံ၍ စမ်းသပ်ရန် လိုအပ်နိုင်ပါသည်။

ဘယ်လိုစည်းကမ်းတွေ သတ်မှတ်နိုင်လဲ။

အချိန်အားဖြင့်။ config ရရှိနိုင်မည့်အချိန်ကို သင်သတ်မှတ်နိုင်ပါသည်။
Mac လိပ်စာဖြင့် စက်ပစ္စည်း၏ကိုယ်ရေးကိုယ်တာလင့်ခ်မှတစ်ဆင့် config ကိုတင်ပြသည့်အခါ၊ mac လိပ်စာကိုလည်း စစ်ဆေးမည်ဖြစ်သည်။
ip ဖြင့် တောင်းဆိုသည့်နေရာမှ IP လိပ်စာဖြင့်။

Sonata နဲ့ ဘယ်လို တုံ့ပြန်ရမလဲ။

API မှတဆင့် http တောင်းဆိုမှုများ ပြုလုပ်ခြင်း။ API ကို သင့်ထည့်သွင်းမှုတွင် ရနိုင်ပါမည်။ ဘာဖြစ်လို့လဲဆိုတော့ API သည် swagger specification ကိုထောက်ခံသည်၊ သင်သုံးနိုင်သည်။ အွန်လိုင်း အသုံးဝင်မှု API ကို စမ်းသပ်ရန် တောင်းဆိုချက်များအတွက်။

အိုကေ၊ အမိုက်စား၊ ဘယ်လိုစမ်းသုံးကြည့်ကြမလဲ။

အလွယ်ဆုံးနည်းလမ်းမှာ repository တစ်ခုပေါ်အခြေခံ၍ docker image ကိုအသုံးပြုရန်ဖြစ်သည်။ sonata-နမူနာ. သိုလှောင်မှုတွင် တပ်ဆင်ခြင်းဆိုင်ရာ ညွှန်ကြားချက်များ ပါရှိသည်။

ငါ node.js ကိုသိရင် ဘာဖြစ်မလဲ။

အကယ်၍ သင့်တွင် JavaScript ကိုအသုံးပြုသည့် အတွေ့အကြုံရှိပါက၊ ဤနေရာတွင် အရာအားလုံးမည်သို့အလုပ်လုပ်သည်ကို လျင်မြန်စွာ သိရှိနိုင်မည်ဖြစ်သည်။

Sonata ဖွံ့ဖြိုးတိုးတက်မှု ရှိမလား။

တစ်စိတ်တစ်ပိုင်း ရည်မှန်းချက်တွေ အောင်မြင်ခဲ့တယ်။ နောက်ထပ် ဖွံ့ဖြိုးတိုးတက်မှုသည် ဖုန်းအလိုအလျောက် စနစ်ထည့်သွင်းခြင်းဆိုင်ရာ ခေါင်းစဉ်နှင့် ပတ်သက်သည့် ကျွန်ုပ်၏ လုပ်ငန်းတာဝန်များဖြစ်သည်။ ဖုန်းခလုတ်များကို configure လုပ်ရန်၊ လိပ်စာစာအုပ်ထည့်သွင်းခြင်း၊ အခြားတစ်ခုခုဖြစ်ကောင်းဖြစ်နိုင်သည် ၊ မှတ်ချက်များတွင်ရေးရန် configs များကိုချဲ့ထွင်ရန်အခွင့်အရေးလည်းရှိပါသည်။

အကျဉ်းချုပ်နှင့် အသိအမှတ်ပြုချက်များ

အပြုသဘောဆောင်သော အကြံပြုချက်များ/ကန့်ကွက်ခြင်း/မှတ်ချက်များနှင့် မေးခွန်းများ ရှိသည့်အတွက် ဝမ်းမြောက်မိပါသည်...။ တစ်စုံတစ်ခုကို နားမလည်နိုင်အောင် ဖော်ပြနေခြင်းလည်း ဖြစ်နိုင်သည်။

စာမေးပွဲအတွက် ကူညီ၊ အကြံပေး၊ စမ်းသပ်ပြီး ပံ့ပိုးပေး/လှူဒါန်းပေးသော ဖုန်းများကို ကူညီပေးခဲ့ကြသော လုပ်ဖော်ကိုင်ဖက်များအားလုံးကိုလည်း ကျေးဇူးတင်ရှိပါတယ်။ လက်တွေ့မှာ အလုပ်မှာ ဆက်ဆံဖူးတဲ့ လူတော်တော်များများဟာ ပရောဂျက်မှာ ပါဝင်ပတ်သက်ပြီး ဒီဂရီအမျိုးမျိုး၊ AsterConf'e၊ ချတ်များနှင့် အီးမေးလ်များတွင်။ အကြံဥာဏ်များနှင့် အတွေးအမြင်များအတွက် ကျေးဇူးတင်ပါသည်။

source: www.habr.com

မှတ်ချက် Add