Sonata - Pêşkêşkara peydakirina SIP

Ez nizanim ku ez bi çi dabînkirinê bidin ber hev. Dibe ku bi pisîkek? Ew bêyî wê gengaz xuya dike, lê bi wê re ew hinekî çêtir e. Bi taybetî heke ew kar dike))

Formulasyona pirsgirêkê:

  1. Ez dixwazim têlefonên SIP-ê zû, bi hêsanî û bi ewlehî saz bikim. Dema ku têlefonek saz dike, û hêj bêtir dema ku wê ji nû ve saz dike.
  2. Pir firoşkar formatên xwe yên mîhengê, karûbarên xwe yên ji bo çêkirina mîhengan, û awayên xwe yên parastina mîhengan hene. Û ez bi rastî naxwazim bi her kesî re mijûl bikim.
  3. Gelek çareseriyên dabînkirinê, a) li ser yek firoşkar an yek pergala têlefonê disekine, b) ji bo bicîhkirinê pir giran in, gelek nivîsar, parameter, brrr...

Di derbarê xala 3 de, ez ê şîroveyek bikim ku pergalên dabînkirina hêja hene ji bo FreePBX, ji bo FusionPBX, ji bo Kazoo, ku şablonên têlefonên ji firoşkarên cihêreng bi gelemperî têne peyda kirin. Çareseriyên bazirganî hene ku hûn dikarin di modulê dabînkirinê de xebata têlefonên ji hilberînerên cihêreng jî mîheng bikin, mînakî Yeastar PBX.

Habré di heman demê de li ser çawaniya sazkirina cîhazên ji firoşkarên cihêreng tijî reçete ye: carinan, два. Lê wekî ku ew dibêjin, hemî pergalan xeletiyek mirinê heye. Ji ber vê yekê em ê bisiklêta xwe çêbikin.

formata xwe

Wekî ku ew di xkcd de dibêjin, heke hûn nexwazin bi 14 formatan re mijûl bibin - bi 15-ê re werin. Ji ber vê yekê, em ji bo her têlefonê mîhengên gelemperî bikar tînin û formata xweya mîhengê json çêdikin.

Tiştek weha:

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

Ji ber vê yekê, di her têlefonê de hûn hewce ne ku dema herêmî û xetên SIP-ê mîheng bikin. Li vir her tişt hêsan e. Hûn dikarin nimûneyên bêtir bibînin vir.

dabînkirina servera xwe

Di destanên çêker de bi gelemperî xalek heye ku tê de dibêje: csv-ê bigirin, têketin-şîfre-navnîşana mac-a xwe binivîsin, pelan bi karanîna skrîpta meya xwedaniyê biafirînin, wan bixin bin servera webê ya Apache û her tişt dê baş be.

Paragrafa paşîn a manualê bi gelemperî ji we re vedibêje ku hûn dikarin pelê mîhengê hatî çêkirin jî şîfre bikin.

Lê ev hemû klasîk in. Nêzîkatiya nûjen a bi smoothies û Twitter-ê re dibêje ku hûn hewce ne ku serverek malperek amade çêbikin ku dê wekî Apache ne bi hêz be, lê dê tenê tiştek piçûk bike. Bi karanîna girêdanek vesazkirinê çêbikin û bişînin.

Ka em li vir rawestin û ji bîr mekin ku hema hema hemî têlefonên SIP-ê naha dikarin bi navgîniya http/https vesazkirinê bistînin, ji ber vê yekê em pêkanînên din nahesibînin (ftp, tftp, ftps). Dûv re, her têlefon navnîşana MAC-a xwe dizane. Ji ber vê yekê, em ê du girêdan çêbikin: yek kesane - li ser bingeha mifteya cîhazê, ya duyemîn giştî, ku bi karanîna tevhevek nîşanek hevpar û navnîşek MAC-ê dixebite.

Di heman demê de, ez ê li ser sifir-config nesekinim, ango. sazkirina telefonê ji nû ve, yanî. we ew xiste torê û ew dest bi xebatê kir. Na, di senaryoya min de, hûn wê têxin nav torê, sazkirina pêşîn bikin (wê saz bikin da ku mîhengê ji servera peydakirinê werbigirin), û dûv re pina colada vexwin û têlefonê wekî ku hewce be bi peydakirinê ve ji nû ve saz bikin. Belavkirina Vebijêrk 66 berpirsiyariya servera DHCP ye.

Bi xatirê te, ez bi tevahî ji gotina "dabînkirin" westiyame, ji ber vê yekê peyv bi "dabînkirin" hat kurtkirin, ji kerema xwe min pê nexin.

Û tiştek din: servera meya dabînkerê UI tune, yanî. user interface. Belkî, ji bo niha, lê ne piştrast e, ji ber ku ... Ez hewce nakim. Lê ji bo hilanîn / jêbirina mîhengan, wergirtina navnîşek firoşkarên piştgirî, modelan, API-yek heye, her tişt li gorî kanonên taybetmendiya swagger tête diyar kirin.

Çima API û ne UI? Bo Jixwe pergala min a têlefonê heye, wê hingê min çavkaniyek pêbaweriyê heye, ku ez tenê hewce dikim ku van daneyan bigirim, json-a pêwîst berhev bikim û li ser servera peydakirinê biweşînim. Û pêşkêşkara dabînkirinê, li gorî qaîdeyên ku di pelê json de hatine destnîşan kirin, heke cîhaz ne rast be an jî pîvanên ku di vê jsonê de hatine destnîşan kirin pêk neyne, dê konfigurasyona xwe bide cîhaza pêwîst an na.

Sonata - Pêşkêşkara peydakirina SIP

Bi vî rengî mîkroxizmeta dabînkirinê derket holê. Gazî kirin sonata, koda çavkaniyê li ser GitHub heye, li wir jî heye wêneya docker amade, mînaka karanîna docker vir.

Taybetmendiyên sereke:

  • di her rewşê de, gihîştina mîhengê ji hêla demê ve, ji hêla xwerû 10 hûrdem ve sînorkirî ye. Heke hûn dixwazin veavakirinê dîsa berdest bikin, veavakirinê ji nû ve çap bikin.

  • yek formatek ji bo hemî firoşkaran, hemî verastkirin di sonata de têne rakirin, hûn json standard dişînin, her amûrek berdest mîheng dikin.

  • hemî mîhengên ku ji cîhazan re hatine şandin têne tomar kirin, hemî deverên pirsgirêkê di têketinê de têne dîtin û xeletî têne dîtin

  • Mimkun e ku meriv yek girêdanek hevpar bi tokenek bikar bîne; her têlefon bi destnîşankirina navnîşana mac ve konfigurasyona xwe distîne. An jî girêdanek kesane bi riya mifteyê.

  • API-yên ji bo rêvebirin (rêveberî) û peydakirina mîhengên têlefonan (dabînkirin) ji hêla portan ve têne dabeş kirin

  • Tests. Ji bo min pir girîng bû ku formata konfigurasyona hatî derxistin rast bikim û hemî rewşên asayî yên derxistina konfigurasyonê bi ceribandinan veşêrim. Ji ber ku ev hemî zelal dixebite.

Bawer:

Heya nuha, şîfrekirin bi tu awayî di hundurê Sonata de nayê bikar anîn. Ewan. helbet hûn dikarin dest bi karanîna https-ê bikin, mînakî bi danîna nginx li ber sonata. Lê hîn rêbazên xwedîtiyê nehatine bikaranîn. Çima? Proje hîna ciwan e, sed cîhazên xwe yên yekem dan destpêkirin. Û, bê guman, ez raman û nerîn berhev dikim. Zêdetir, ji bo ku her tişt ewledar be, da ku konfigurasyon li ser torê neyên bêhn kirin, belkî hêja ye ku meriv bi bişkojkên şîfrekirinê, tls û hedgehogê bi wan re aciz bike, lê ev dê bibe berdewamiyek.

Nebûna UI. Dibe ku ev ji bo bikarhênerê dawîn dezavantajek girîng e, lê ji bo rêveberek pergalê, karûbarek konsolê ji serîlêdanek bêkêmasî girîngtir e. Plan hene ku meriv karûbarek konsolê çêbike, lê ez ne bawer im gelo ew hewce ye?

Di dawiyê de çi ye?

Pêşkêşkarek malperê ya piçûk û hêsan ji bo peydakirina çend modelên têlefonê bi API-yê ji bo rêveberiyê.

Careke din, divê ev çawa kar bike?

  1. Sazkirina sonata.
  2. Em konfigurasyonek json çêdikin û di sonata de diweşînin.
  3. Dûv re em ji sonata lînkek peydakirinê distînin.
  4. Dûv re em vê girêdanê di têlefonê de destnîşan dikin.
  5. Amûr konfigurasyonê bar dike

Di operasyona paşîn de tenê du gav hene:

  1. Em konfigurasyonek json çêdikin û di sonata de diweşînin
  2. Amûr konfigurasyonê bar dike

Kîjan têlefon dê werin pêşve xistin?

Firoşkarên Grandstream, Fanvil, Yealink. Veguheztinên di hundurê firoşkar de kêm-zêde yek in, lê dibe ku li gorî firmware-ê cûda bibin - dibe ku hewce be ku bêtir ceribandin.

Hûn dikarin çi qaîdeyan destnîşan bikin?

Bi demê re. Hûn dikarin wextê diyar bikin ku heya ku konfigurasyon dê peyda bibe.
Bi navnîşana mac. Dema ku veavakirina bi rêya girêdana kesane ya cîhazê ve tê şandin, navnîşana mac jî dê were kontrol kirin.
Bi ip. Bi navnîşana IP-ê ji cihê ku daxwaz hatî kirin.

Meriv çawa bi sonata re têkilî daynin?

Bi API-ê, daxwazên http-ê çêbikin. API dê di sazkirina we de peyda bibe. Bo API taybetmendiya swagger piştgirî dike, hûn dikarin bikar bînin kargêriya serhêl ji bo daxwazên testê yên API-ê.

OK, mezin. Tiştên xweş, çawa hewl didin?

Rêya herî hêsan ev e ku meriv wêneyek docker li ser bingeha depoyek bicîh bike sonata-nimûne. Depo talîmatên sazkirinê dihewîne.

Ger ez node.js dizanim?

Ger ezmûna we ya karanîna JavaScript-ê heye, wê hingê hûn ê zû fêr bibin ka her tişt li vir çawa dixebite.

Ma dê pêşveçûnek Sonata hebe?

Ez bi qismî gihîştim armancên xwe. Pêşveçûnek din di mijara sazkirina otomatîkî ya têlefonê de mijara karên min e. Di heman demê de fersendek heye ku hûn mîhengan berfireh bikin da ku bişkojkên têlefonê mîheng bikin, peydakirina pirtûka navnîşan zêde bikin, dibe ku tiştek din, di şîroveyan de binivîsin.

Kurte û pejirandî

Ez ê kêfxweş bibim ku pêşniyarên / îtîrazên / şîrove û pirsên çêker hebin, ji ber ku ... Belkî baş be ku wî tiştek nefêm şirove kiriye.

Ez spasiya xwe jî ji hemû hevkarên xwe re radigihînim ku ji bo ceribandinan alîkarî, şîret kirin, ceribandin û têlefon pêşkêş kirin/bexş kirin. Di rastiyê de, gelek kesên ku min di xebatê de bi wan re danûstendinê bi dereceyên cihêreng beşdarî projeyê dibin, AsterConf'e, di sohbet û emailan de. Spas ji bo raman û ramanan.

Source: www.habr.com

Add a comment