Sonata - seva ya utoaji wa SIP

Sijui nilinganishe utoaji na nini. Labda na paka? Inaonekana inawezekana bila hiyo, lakini pamoja nayo ni bora kidogo. Hasa ikiwa inafanya kazi))

Muundo wa tatizo:

  1. Ninataka kusanidi simu za SIP haraka, kwa urahisi na kwa usalama. Wakati wa kusakinisha simu, na hata zaidi wakati wa kuisanidi upya.
  2. Wachuuzi wengi wana fomati zao za usanidi, huduma zao za kutengeneza usanidi, na njia zao za kulinda usanidi. Na sitaki kabisa kushughulika na kila mtu.
  3. Suluhisho nyingi za utoaji, a) zinalenga muuzaji mmoja au mfumo mmoja wa simu, b) ni ngumu sana kutekeleza, maandishi mengi, vigezo, brrr...

Kuhusu hatua ya 3, nitatoa maoni kwamba kuna mifumo bora ya utoaji kwa FreePBX, kwa FusionPBX, kwa Kazoo, ambapo violezo vya simu kutoka kwa wachuuzi mbalimbali vinapatikana kwa umma. Kuna ufumbuzi wa kibiashara ambapo unaweza pia kusanidi uendeshaji wa simu kutoka kwa wazalishaji tofauti katika moduli ya utoaji, kwa mfano, Yeastar PBX.

Habre pia imejaa mapishi ya jinsi ya kusanidi vifaa kutoka kwa wachuuzi mbalimbali: wakati, Π΄Π²Π°. Lakini kama wanasema, mifumo yote ina dosari mbaya. Kwa hivyo tutatengeneza baiskeli yetu wenyewe.

umbizo lako mwenyewe

Kama wanasema katika xkcd, ikiwa hutaki kushughulika na fomati 14 - kuja na 15. Kwa hivyo, tunatumia mipangilio ya jumla kwa simu yoyote na kutengeneza umbizo letu la usanidi wa json.

Kitu kama hiki:

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

Kwa hiyo, katika simu yoyote unahitaji kusanidi wakati wa ndani na mistari ya SIP. Kila kitu ni rahisi hapa. Unaweza kuona mifano zaidi hapa.

utoaji wa seva yako mwenyewe

Katika miongozo ya mtengenezaji kawaida kuna mahali ambapo inasema: chukua csv, andika anwani yako ya kuingia-nenosiri-mac, toa faili kwa kutumia hati yetu ya umiliki, uziweke chini ya seva ya wavuti ya Apache na kila kitu kitakuwa sawa.

Aya inayofuata ya mwongozo kawaida hukuambia kuwa unaweza pia kusimba faili iliyotengenezwa ya usanidi.

Lakini haya yote ni classics. Mbinu ya kisasa na smoothies na Twitter inasema kwamba unahitaji kutengeneza seva ya wavuti iliyotengenezwa tayari ambayo haitakuwa na nguvu kama Apache, lakini itafanya jambo moja ndogo tu. Tengeneza na utume mipangilio kwa kutumia kiungo.

Hebu tukomee hapa na tukumbuke kwamba karibu simu zote za SIP sasa zinaweza kupokea usanidi kupitia http/https, kwa hivyo hatuzingatii utekelezwaji mwingine (ftp, tftp, ftps). Kisha, kila simu inajua anwani yake ya MAC. Kwa hiyo, tutafanya viungo viwili: moja ya kibinafsi - kulingana na ufunguo wa kifaa, jumla ya pili, ambayo inafanya kazi kwa kutumia mchanganyiko wa ishara ya kawaida na anwani ya MAC.

Pia, sitakaa kwenye zero-config, i.e. kuanzisha simu kutoka mwanzo, i.e. uliichomeka kwenye mtandao na ikaanza kufanya kazi. Hapana, katika hali yangu, unaichomeka kwenye mtandao, fanya usanidi wa awali (uiweke ili kupokea usanidi kutoka kwa seva ya utoaji), kisha unywe pina colada na upange upya simu inavyohitajika kupitia utoaji. Kusambaza Chaguo 66 ni jukumu la seva ya DHCP.

Kwa njia, nimechoka kabisa kusema "utoaji", kwa hiyo neno lilifupishwa na "utoaji", tafadhali usinipige.

Na jambo moja zaidi: seva yetu ya utoaji haina UI, i.e. kiolesura cha mtumiaji. Labda, kwa sasa, lakini sina uhakika, kwa sababu ... Sihitaji. Lakini kuna API ya kuhifadhi / kufuta mipangilio, kupata orodha ya wachuuzi wanaoungwa mkono, mifano, kila kitu kinaelezewa kulingana na canons za vipimo vya swagger.

Kwa nini API na sio UI? Kwa sababu Tayari nina mfumo wangu wa simu, basi nina chanzo cha sifa, ambapo ninahitaji tu kuchukua data hii, kukusanya json muhimu na kuichapisha kwenye seva ya utoaji. Na seva ya utoaji, kwa mujibu wa sheria zilizotajwa katika faili ya json, itatoa kifaa kinachohitajika usanidi wake au haitatoa ikiwa kifaa si sahihi au haifikii vigezo vilivyoainishwa katika json hii.

Sonata - seva ya utoaji wa SIP

Hivi ndivyo huduma ndogo ya utoaji ilivyotokea. Imeitwa sonata, msimbo wa chanzo unapatikana kwenye GitHub, pia kuna picha ya docker tayari, mfano wa matumizi ya docker hapa.

Vipengele muhimu:

  • kwa vyovyote vile, ufikiaji mdogo wa usanidi kwa wakati, kwa chaguo-msingi dakika 10. Ikiwa ungependa kufanya usanidi upatikane tena, chapisha upya usanidi tena.

  • umbizo moja kwa wachuuzi wote, marekebisho yote yanaondolewa katika sonata, unatuma json sanifu, usanidi vifaa vyovyote vinavyopatikana.

  • mipangilio yote iliyotolewa kwa vifaa imeingia, maeneo yote ya tatizo yanaweza kutazamwa kwenye logi na makosa yanaweza kuonekana

  • Inawezekana kutumia kiunga kimoja cha kawaida na ishara; kila simu hupokea usanidi wake kwa kubainisha anwani ya mac. Au kiungo cha kibinafsi kupitia ufunguo.

  • API za usimamizi (usimamizi) na utoaji wa usanidi kwa simu (utoaji) zimegawanywa na bandari.

  • Vipimo. Ilikuwa muhimu sana kwangu kurekebisha muundo wa usanidi uliotolewa na kufunika hali zote za kawaida za kutoa usanidi na vipimo. Ili hii yote ifanye kazi wazi.

Minus:

Kufikia sasa, usimbaji fiche hautumiki kwa njia yoyote ndani ya Sonata. Wale. bila shaka unaweza kuanza kutumia https kwa kuweka nginx mbele ya sonata kwa mfano. Lakini mbinu za umiliki bado hazijatumika. Kwa nini? Mradi bado ni mchanga, umezindua vifaa vyake mia vya kwanza. Na, bila shaka, ninakusanya mawazo na maoni. Zaidi ya hayo, ili kufanya kila kitu salama, ili usanidi hauwezi kunuswa kwenye mtandao, labda inafaa kusumbua na funguo za usimbuaji, tls na hedgehog nazo, lakini hii itakuwa mwendelezo.

Ukosefu wa UI. Labda hii ni hasara kubwa kwa mtumiaji wa mwisho, lakini kwa msimamizi wa mfumo, matumizi ya console ni muhimu zaidi kuliko programu kamili. Kulikuwa na mipango ya kufanya matumizi ya console, lakini sina uhakika ikiwa inahitajika?

matokeo?

Seva ndogo na rahisi ya wavuti kwa kutoa miundo kadhaa ya simu na API ya usimamizi.

Kwa mara nyingine tena, hii inapaswa kufanya kazi vipi?

  1. Inaweka sonata.
  2. Tunaunda usanidi wa json na kuichapisha katika sonata.
  3. Kisha tunapokea kiungo cha utoaji kutoka kwa sonata.
  4. Kisha tunaonyesha kiungo hiki kwenye simu.
  5. Kifaa kinapakia usanidi

Kuna hatua mbili tu katika operesheni inayofuata:

  1. Tunaunda usanidi wa json na kuichapisha katika sonata
  2. Kifaa kinapakia usanidi

Ni simu zipi zitatangazwa?

Wachuuzi Grandstream, Fanvil, Yealink. Mipangilio ndani ya muuzaji ni zaidi au chini sawa, lakini inaweza kutofautiana kulingana na firmware - inaweza kuwa muhimu kupima zaidi.

Unaweza kuweka sheria gani?

Kwa wakati. Unaweza kutaja wakati ambapo usanidi utapatikana.
Kwa anwani ya mac. Wakati wa kuwasilisha usanidi kupitia kiungo cha kibinafsi cha kifaa, anwani ya mac pia itaangaliwa.
Kwa ip. Kwa anwani ya IP kutoka ambapo ombi lilifanywa.

Jinsi ya kuingiliana na sonata?

Kupitia API, kufanya maombi ya http. API itapatikana katika usakinishaji wako. Kwa sababu API inasaidia vipimo vya swagger, unaweza kutumia matumizi ya mtandaoni kwa maombi ya majaribio kwa API.

Sawa, nzuri. Mambo ya kupendeza, vipi kuhusu kujaribu?

Njia rahisi ni kupeleka picha ya kizimbani kulingana na hazina sonata-sampuli. Hifadhi ina maagizo ya ufungaji.

Je, ikiwa najua node.js?

Ikiwa una uzoefu wa kutumia JavaScript, basi utagundua haraka jinsi kila kitu kinavyofanya kazi hapa.

Je, kutakuwa na maendeleo ya Sonata?

Nilifikia malengo yangu kwa kiasi. Maendeleo zaidi ni suala la kazi zangu juu ya mada ya usanidi wa simu kiotomatiki. Pia kuna fursa ya kupanua mipangilio ili kusanidi vifungo vya simu, kuongeza utoaji wa kitabu cha anwani, labda kitu kingine, kuandika katika maoni.

Muhtasari na shukrani

Nitafurahi kuwa na mapendekezo/pingamizi/maoni na maswali yenye kujenga, kwa sababu... Huenda ikawa alieleza jambo lisiloeleweka.

Pia ninatoa shukrani zangu kwa wafanyakazi wenzangu wote waliosaidia, kushauri, kupima, na kutoa/kuchanga simu kwa ajili ya majaribio. Kwa kweli, watu wengi ambao niliwasiliana nao kazini wanahusika katika mradi huo kwa viwango tofauti, AsterConf'e, katika mazungumzo na barua pepe. Asante kwa mawazo na mawazo.

Chanzo: mapenzi.com

Kuongeza maoni