Een asterisk-telefonieserver helemaal opnieuw opzetten. Installeren en configureren van Asterisk-telefonie op Linux Ubuntu. Kort overzicht van beschikbare modules: modulebeheer

23.02.2012 15:56

Een artikel waarmee beginnende programmeurs de basisinstallatie van een asterisk kunnen uitvoeren

Asterisk is een van de meest voorkomende IP-telefonieservers, samen met systemen als Switchwox en 3CX. Grotere populariteit dit systeem gewonnen met de verspreiding van kwalitatief hoogstaand internet in ons land, evenals de vele telefoonaanbieders die dit aanbieden telefoonnummers in SIP-formaat of zogenaamde SIP-nummers. Eén van deze bedrijven is Datagroup, dat zichzelf heeft gevestigd als een van de leiders op de markt voor communicatiediensten. Nu SIP-nummers goedkoper worden, is het logisch om modern te gebruiken telefoonsystemen IP-telefonie in plaats van de oude analoge mini-PBX. Dit komt door de brede functionaliteit van callcenters op basis van Asterisk. Tegelijkertijd zijn de kosten van apparatuur en het opzetten van Asterisk vrijwel hetzelfde als de geldkosten.

Het installeren van asterisk gebeurt door het downloaden en vervolgens compileren van de door Digium ontwikkelde vrij verspreide broncode. Asterisk-bronnen bestaan ​​alleen voor Unix-compatibele besturingssystemen, waarvan Linux en FreeBSD de meest voorkomende zijn. Het installeren van asterisk onder Windows is alleen mogelijk door een virtuele machine te implementeren. U kunt de nieuwste versies van asterisk downloaden via de volgende link. Op op dit moment Er worden 4 versies van deze server tegelijk ontwikkeld. De versies asterisk 1.4 en asterisk 1.6 hebben de grootste stabiliteit van alle modules. Aan de andere kant steekt versie asterisk 1.8 qua functionaliteit gunstig af, die ondersteuning biedt voor veel nieuwe modules en functies, waaronder ondersteuning voor het SRTP-protocol, werken met IPv6 en verbeterde prestaties bij het werken met SIP en ISDN.

In dit artikel wordt de installatie van asterisk v 1.6.22 besproken Linux-Fedora Kern.

Download de asterisk-bronnen om de installatie te starten. Om dit te doen, voert u de opdrachten uit in de serverconsole:

# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.6.2.22.tar.gz

# tar -xzvf sterretje-1.6.2.22.tar.gz

Laten we, voordat we de bronnen compileren, alle benodigde bijbehorende modules en hulpprogramma's installeren:

# yum installeer gcc

# yum installeer gcc-c++

#yum install make

# yum installeer libxml2-devel

# yum installeer ncurses-devel

Nadat alle extra hulpprogramma's zijn geïnstalleerd, installeren we asterisk zelf:

# cd sterretje-1.6.2.22

Na een succesvolle installatie vindt u in de map /etc/asterisk configuratiebestanden asterisk"a. Het configureren van asterisk wordt uitgevoerd door configuratiebestanden te bewerken die een zeer specifieke structuur en operatoren hebben. De basis van de configuratie bij het configureren van asterisk zijn de bestanden sip.conf en extensions.conf. Door deze bestanden te bestuderen en te bewerken, kunt u zorgen voor de juiste werking van de server.

Het bestand sip.conf bevat de instellingen van alle SIP-apparaten die op de server zijn geregistreerd en die vervolgens met elkaar communiceren door twee of meer SIP-kanalen met elkaar te verbinden, waardoor telefoon aansluiting- dat wil zeggen, een telefoontje.

Voorbeeld sip.conf-bestand:


in aanmerking komen = ja
nat=nee


standaardvervaldatum=3600
niet toestaan=alles
toestaan ​​= alaw
toestaan=ulaw
vangebruiker=044XXXXXXX
gastheer=80.91.169.2
onveilig=uitnodigen,poort
geheim=xxxxxxxxxxxx
type=peer
gebruikersnaam=044XXXXXXX
context=binnenkomend
taal=nl
in aanmerking komen = ja
dtmfmode=automatisch


type=vriend
gastheer=dynamisch
onveilig=uitnodigen,poort
gebruikersnaam=fxo
geheim=xxxxxxxxx
context=binnenkomend
in aanmerking komen = ja
nat=nee
kan opnieuw uitnodigen = nee
overdracht toestaan=nee
dtmfmode=automatisch
niet toestaan=alles
toestaan ​​= alaw
toestaan=ulaw


type=vriend
reextensie=101
geheim=xxxxxxxxxxxxxxx
context=intern
gastheer=dynamisch
callerid = "101"
niet toestaan=alles
toestaan ​​= alaw
toestaan=ulaw
taal=nl
belgroep=1
ophaalgroep=1
in aanmerking komen = ja
kan opnieuw uitnodigen = ja
bellimiet=4
nat=nee

Dit voorbeeld toont een eenvoudige lijst met SIP-apparaten. Het is gemakkelijk op te merken dat de configuratie blokken tussen vierkante haken bevat. Het zijn deze blokken die de configuratie van alle apparaten (peers) beschrijven bij het instellen van Asterisk. Laten we kort de blokken en de meest elementaire parameters doornemen.

Het blok is vereist. Het bevat instellingen en opties die standaard op alle blokken van toepassing zijn. Met andere woorden: als een parameter niet is opgegeven bij het beschrijven van een apparaat, leest Asterisk deze uit dit blok.

De volgende drie blokken beschrijven rechtstreeks SIP-apparaten. Voor de duidelijkheid: alle drie de apparaten hebben verschillende doeleinden. Het blok beschrijft de parameters voor het sip-nummer van het Datagroup-bedrijf, het blok beschrijft de parameters voor verbinding met een VOIP-gateway, en het blok beschrijft de parameters van een regulier intern sip-apparaat dat kan worden gebruikt door een software- of hardware-IP-telefoon.

Laten we de belangrijkste parameters van SIP-apparaten doornemen. De contextparameter bepaalt welk actiealgoritme op een bepaald apparaat moet worden toegepast. Callerid definieert het peernummer en de naam, die worden weergegeven wanneer er een uitgaande oproep wordt gedaan. De opties Disallow en Allow bepalen welke codecs moeten worden gebruikt voor communicatie. De geheime optie is het wachtwoord voor het registreren van deze peer. Het is raadzaam om wachtwoorden voldoende complex te maken om hacking door kwaadwillenden te voorkomen.

Het extensions.conf-bestand beschrijft de interacties tussen contexten en communicatiekanalen, waarvan er een groot aantal kunnen zijn. In feite is dit bestand het belangrijkste bestand bij het configureren van asterisk.

Voorbeeld extensions.conf-bestand:


exten => _XXX,1,Dial(SIP/$(EXTEN),120,tT)
exten => _XXX,n,Ophangen

Exten => _X.,1,Dial(SIP/datagroep/$(EXTEN),120,tT)
exten => _X.,n,Ophangen


exten => _X.,1,Bellen(SIP/101,60,tT)
exten => _X.,2,Ophangen

Exten => h,1,Ophangen

In dit eenvoudigste voorbeeld hebben we twee algoritmen voor acties (context): intern en inkomend. Laten we niet vergeten dat het binden aan contexten wordt uitgevoerd bij het maken van peers in het bestand sip.conf en vervolgens wordt toegewezen in extensions.conf wanneer wordt geprobeerd communicatie met een peer te initiëren.

Laten we de twee contexten in meer detail beschrijven. Al aan hun naam wordt duidelijk dat ze worden gebruikt voor algoritmen voor interne abonnees (intern) en inkomende oproepen (inkomend). Een algemeen voorbeeld, dat in de volgende regel kan worden uitgedrukt, zal u helpen het ontwerp van dit bestand te begrijpen:

Exten => _XXX,n,Commando(Opties)

Deze opties worden als volgt ontcijferd:

Exten => _XXX is een servicevoorvoegsel waarmee bijna alle regels in dit bestand beginnen. Het beschrijft de representatie van de binnenkomende context. Met andere woorden, als deze context werd benaderd door peernummer 101, dan zou het algoritme daarvoor moeten beginnen met de constructie exten => 101. Het voorvoegsel ondersteunt reguliere expressies en kan op een algemene manier worden gespecificeerd. Exten => _XXX geeft bijvoorbeeld aan dat dit algoritme alle peers omvat die uit drie cijfers bestaan.

N - regelnummer van het algoritme. In elke programmacode is er een reeks instructies die beurtelings worden uitgevoerd. Op dezelfde manier is er een dergelijke volgorde in de asterisk-instellingen. Het enige verschil is dat de opdrachten die met een sterretje worden uitgevoerd, genummerd zijn. Het is verplicht om de eerste regel expliciet aan te geven. Zoals je misschien hebt gemerkt, beginnen alle contexten met de regels:

Exten => _XXX,1,…..
uitbreiden => _X.,1,…..
extensie => h,1,……

Maar verdere regels kunnen impliciet worden genummerd, dat wil zeggen als volgt:

Exten => _XXX,n,…..
uitbreiden => _X.,n,…..
extensie => h,n,……

Wanneer het regelnummer impliciet is opgegeven, voert asterisk deze opeenvolgend van boven naar beneden uit, net als bij elke andere code.

Commando - commando uitgevoerd door een sterretje. Er zijn niet zoveel basiscommando's. Voor basisinstellingen Het is voldoende om de syntaxis van de opdracht Kies te kennen, waarmee we de resterende opties zullen bekijken.

Bijvoorbeeld:
exten => _X.,1,Dial(SIP/101,60,tT) - asterisk belt toestel 101 en probeert de abonnee binnen 60 seconden te bereiken met de mogelijkheid om de oproep van de bellende en ontvangende collega's te onderscheppen (tT-opties)
exten => _X.,1,Dial(SIP/datagroup/$(EXTEN),120,tT) asterisk zal het nummer bellen dat is doorgegeven in de $(EXTEN) variabele met behulp van de datagroep-peer die eerder is opgegeven in sip.conf

Het eerste voorbeeld werd gebruikt in de inkomende context. Dit betekent dat alle inkomende oproepen die in deze context binnenkomen, worden doorgestuurd naar de interne deelnemer die deze oproepen beantwoordt. Het tweede voorbeeld laat op zijn beurt zien hoe uitgaande oproep het gekozen nummer doorgeven in de servicevariabele $(EXTEN).

Voorbeeldbestanden kunnen rechtstreeks uit dit artikel worden gekopieerd en in uw sip.conf en extensions.conf worden geplakt en enkele opties worden bewerkt (logins, peer-namen, wachtwoorden, enz.). Nadat we asterisk hebben ingesteld, starten we de server met een eenvoudig commando:

Volgende stappen van gemaakt kan worden opdrachtregel asterisk, die wordt gestart met het commando:

# sterretje -rvvvvd

Eenmaal in de console kunt u de werking van uw server controleren. Het toont alle acties die het uitvoert.

P.S. Als u de server niet kunt configureren, of als u een complexere configuratie nodig heeft, helpen wij u graag bij het configureren van asterisk. Onze contacten.


Configuratiebestand voor kanalen in , zowel voor inkomende als uitgaande oproepen.

Elke SIP-client of server wordt in dit bestand gedefinieerd als een tekstblok, vergelijkbaar met het onderstaande:


type=jjj
parameter1=waarde
parameter2=waarde

Waarbij xxx de naam is die is gekoppeld aan de SIP-client, of het kan een willekeurige SIP-apparaatnaam zijn waarnaar kan worden verwezen vanuit andere configuratiebestanden. Als een SIP-telefoon het toestelnummer 123 heeft, beginnen de overeenkomstige instellingen in dit bestand doorgaans met de regel . Let op: om dit 123-toestel te kunnen bellen, moet u dit in uw belplan beschrijven. kan zijn: "gebruiker", "peer" of "vriend".

De Asterisk-server bepaalt of een inkomende oproep overeenkomt met een apparaatnaam, voor clients met type=user, op basis van de header Van: gebruikersnaam (waarbij het SIP-domein wordt genegeerd). Een andere manier om inkomende SIP-verzoeken te verwerken is door te bepalen of ze overeenkomen met een sectie in dit bestand, door het IP-adres van het inkomende verzoek te gebruiken om te bepalen van wie het verzoek afkomstig is, en te zoeken naar de juiste parameterwaarde Host= in de gebruikerssectie. Als deze parameter is ingesteld op Host=dynamic, zijn er geen overeenkomende overeenkomsten totdat de SIP-client zich bij de server registreert.

Asterisk als SIP-client Voeg in het configuratiebestand in de sectie de registerdefinitie toe:

Formaat:
register => gebruiker [:geheim[:authuser]] @host [:port]

Voorbeeld:
; Registreer 2345 bij de sip-provider, zoals nummer 1234 aan onze kant.
registreren => 2345: [e-mailadres beveiligd]/1234

user - gebruikers-ID gebruikt voor de SIP-server (bijvoorbeeld 2345) authuser - optionele gebruikersnaam voor autorisatie op de SIP-server geheim - gebruikerswachtwoord host - domein- of hostnaam van de SIP-server. Deze SIP-server moet worden gedefinieerd in een eigen sectie van het sip.conf-bestand, waar de parameters moeten worden opgegeven (mysipprovider.com). poort - naar welk poortnummer verzoeken voor registratie op de hostserver moeten worden verzonden. Standaard - 5060/1234 - toestelnummer voor het ontvangen van oproepen in uw Asterisk. 1234 - ingevoegd in het SIP-headercontact, SIP-registratieverzoek. Deze extensie wordt gebruikt door een externe SIP-server wanneer deze uw Asterisk moet bellen. Zie de voorbeelden hieronder. Standaard wordt de contextuele "s" gebruikt.
Dit is natuurlijk allemaal goed en wel, maar het gebruik van niet-versleutelde wachtwoorden in een tekstbestand is geen goed idee, maar wat kun je nu nog meer doen?
U hoeft zich alleen aan te melden als: a) u gebeld moet kunnen worden, en b) één van de partijen over een dynamisch IP-adres beschikt. U kunt controleren of uw server succesvol is geregistreerd met behulp van het CLI-commando: "SIP SHOW REGISTRY". Op dezelfde manier kunt u een lijst met clients opvragen die op uw server zijn geregistreerd met behulp van het commando: "SIP SHOW PEERS". Je kunt meer bekijken gedetailleerde informatie over een geregistreerde client met behulp van het commando: "SIP SHOW PEER". Voer de opdracht "HELP SIP" uit in de CLI-console om een ​​lijst met aanvullende opdrachten te krijgen.

De serverdefinitie voor het maken van uitgaande oproepen zou ongeveer als volgt moeten zijn:


type=peer
geheim=wachtwoord
gebruikersnaam=2345
host=sipserver.mysipprovider.com
vangebruiker=2345
fromdomain=fwd.pulver.com
nat=ja
context=van-mijnsipprovider ; deze wedstrijd moet worden gedefinieerd in extensions.conf

Om uitgaande gesprekken te kunnen voeren, moet u in het bestand extensions.conf een kiesregel hebben die er ongeveer zo uitziet:

Exten => _9.,1,Dial(SIP/$(EXTEN:1)@mysipprovider-out,30,r)

Houd er rekening mee dat de constructie $(EXTEN:1) de volledige inhoud ophaalt van de variabele die de extensie bevat die wordt aangeroepen (overeenkomstig het patroon), behalve het eerste cijfer, in dit geval: 9 + een reeks cijfers. Zie de sectie over het werken met subtekenreeksen in de beschrijving voor meer details.


extensie => 1234,1,Antwoord; 1234 - uitbreiding van contactgegevens, standaard - "s"
exten => 1234,2,Dial(SIP/111,25,Ttr) ; inkomende oproep wordt doorgestuurd naar SIP-telefoonnummer 111
exten => 1234.3,Ophangen

SIP-configuratie - algemeen gedeelte Het gedeelte van het bestand sip.conf bevat de volgende variabelen:

= : Toegestane codecs, de volgorde waarin de codec wordt geselecteerd wordt bepaald door de volgorde waarin ze worden beschreven in deze opdracht (Eerste gebruik: DISALLOW=ALL, voordat specifieke codecs worden toegestaan) allowtransfer= yes | nee: Verscheen vanaf versie 1.4.0. Indien ingesteld op "nee" - verbiedt alle soorten doorverbinden van gesprekken. (behalve degene die zijn toegestaan ​​in de beschrijving van de gebruikersinstellingen). =all:Schakelt het gebruik van alle codecs uit (globale instelling) allowguest = yes (standaard) | no: Gastoproepen toestaan ​​of uitschakelen (standaard - ja, u kunt de parameter "osp" opgeven als de waarde als asterisk is gebouwd met OSP-ondersteuning) = ja | nee: Indien ingeschakeld kan iedereen de server als peer gebruiken (zonder te controleren of er toegang is; dit kan handig zijn als u met SER SIP-proxy werkt). bindaddr = 0.0.0.0:IP-adres waarnaar Asterisk IP-pakketten van SIP-oproepen zal ontvangen bindport=5060:poortnummer waarnaar Asterisk IP-pakketten van SIP-oproepen zal ontvangen callerid =: informatie voor beller*Id, gebruikt als er geen van deze is , die als deze waarde kan worden gebruikt. De standaardwaarde is "sterretje". (De mogelijkheid om de standaardwaarde te overschrijven is beschikbaar in Asterisk 1.0.9. Ik ben niet helemaal zeker van andere versies.) = update | ja | nee (algemene instelling). Om de een of andere reden is de standaardwaarde "Ja". Wees voorzichtig... context =: Dit is de standaardwaarde die wordt gebruikt als de client geen eigen definitie heeft. Dit klantspecifieke wordt gebruikt om oproepen van die klant naar de gewenste bestemming te routeren. De inhoud wordt beschreven in het belplanbestand - extensions.conf. defaultexpirey=120: Duur van de inkomende of uitgaande registratieperiode. : inband | informatie | rfc2833 (algemene instelling) = domeinen: door komma's gescheiden lijst met domeinen waarvoor de Asterisk-server verantwoordelijk is. (geïntroduceerd in Asterisk 1.2.x) = 200.201.202.203: IP-adres dat zal worden gebruikt in SIP-berichten als onze server achter NAT staat. externhost = hostnaam.tld: ( nieuwe parameter in Asterisk 1.2.x) externrefresh = xxx: Met deze parameter bepalen we hoe vaak de DNS-invoer wordt opgezocht voor de hostnaam gedefinieerd in de parameter "externhost" (nieuwe parameter in Asterisk 1.2.x) = 192.168.1.0/255.255. 255.0: definitie van het lokale netwerk en zijn masker. fromdomain= : Het standaarddomein instellen in het Van:-veld van SIP-berichten wanneer u werkt als een SIP ua (client). maxexpirey=3600: Maximaal toegestane registratieduur. mineexpiry=60: (Variabele geïntroduceerd sinds Asterisk 1.4.0) Minimaal toegestane registratieduur. = ja | nee (instelling voor peer-verbindingen) Merk op dat in Asterisk 1.0.x nat-parameter kan de volgende waarden aannemen: nee | nooit | route | Ja. notificatiemimetype=text/plain:Hiermee kunt u het MIME-type in MWI NOTIFY-berichten overschrijven die worden gebruikt in berichten die door het systeem worden verzonden. pedant = ja|nee: Schakel een langzame, pedante controle in van oproep-ID-velden en alle regels in de meerregelige SIP-berichtkop en URI-gecodeerde headers port =: standaard SIP-poort. (dit is niet de poort waarop uw Asterisk naar IP-pakketten luistert. Zie parameter: bindport) promiscredir=yes | nee: ondersteuning inschakelen voor 302 Redirects-berichten; (Nee - zal alles doorsturen naar het lokale toestel dat wordt ontvangen in het veld Contact, en niet naar het toestel dat is opgegeven in het veld voor de oproepbestemming.) realm = realm (Deze instelling kan de realm voor autorisatie wijzigen van de standaardwaarde - Asterisk, voor iedereen die u heeft geselecteerd. Werkt vanaf Asterisk versie 1.x) register => @ / : Registreer op de server van de SIP-provider. = ja|nee: Zoeken naar oproepen inschakelen tos= : Deze optie is verwijderd sinds Asterisk 1.4.0. IP QoS-parameters instellen voor uitgaande mediastreams. t1min= : (Variabele geïntroduceerd sinds Asterisk 1.4.0) Minimale latentie de doorgang van berichten naar de host en terug (retourtijd), waarbij de status wordt gemonitord (gemonitorde host). De standaardwaarde is 100 ms. =: (Variabele verscheen vanaf Asterisk versie 1.4.0) IP QoS-parameters instellen voor SIP-pakketten. =: (Variabele geïntroduceerd sinds Asterisk 1.4.0) IP QoS-parameters instellen voor pakketten die audiogegevens verzenden via RTP-protocol. =: (Variabele verscheen vanaf Asterisk versie 1.4.0) IP QoS-parameters instellen voor pakketten die videogegevens verzenden via het RTP-protocol.
videosupport=yes|no: Schakelt SIP-video-ondersteuning in: Met deze parameter kunt u de waarde van de SIP-header "User-Agent" wijzigen. = yes|no: Indien ingeschakeld, kan de resulterende Remote-Party-ID-waarde worden vertrouwd.

SIP-configuratie - clients en peers De volgende variabelen kunnen worden ingesteld in de beschrijving van elke SIP-client:

: De gebruiker kan worden gekoppeld aan een bepaalde toegangscode (accountcode). Gebruikt voor. : Toegestane en verboden codecs. : Categorie voor CDR-records . U kunt kiezen uit: standaard, weglaten, facturatie, documentatie. Zie: .allowoverlap: Sinds versie 1.4.x. Waarden: ja/nee, standaard: ja. Als u deze instelling op "nee" zet, wordt de ondersteuning voor "overlap dialing" uitgeschakeld.allowsubscribe: Sinds versie 1.4.x. Waarden: ja/nee, standaard: nee. Instellen op "nee" verbiedt het volgen van de status (abonnementen) van deze client. allowtransfer: Vanaf versie 1.4.x. Toestaan ​​(ja) of weigeren (nee) oproepoverdracht voor deze gebruiker.auth: Sinds versie 1.4.x. Link naar een item uit een sectie (alleen peer-type). autoframing: sinds versie 1.4.x. Autoframing"a.buggymwi inschakelen (ja) of uitschakelen (nee): Sinds versie 1.4.x. Waarden: ja/nee, standaard: nee. Cisco SIP-firmware ondersteunt RFC niet volledig voor het aangeven van de aanwezigheid van een nieuwe voicemail (MWI Stel deze parameter in op "ja" om te voorkomen dat u foutmeldingen ontvangt bij het verzenden van MWI naar telefoons met dit probleem: Definieert de oproepgroep voor oproepen via dit apparaat.callingpres: Zie de waarden sinds versie 1.4.x CallerId in het bestand doc/callingpres.txt uit de distributie asterisk.call-limit: Vanaf versie 1.4.x__ Beperking van het aantal oproepen voor de gebruiker inkomend.: Alleen inschakelen als de client de functie ondersteunt: .cid_number: Sinds versie 1.4.x Nummergedeelte van het veld CallerID.context: De belplancontext waarin oproepen afkomstig van deze client vallen: het standaard IP-adres van de. client wanneer host= is gedefinieerd als DYNAMISCH. Wordt gebruikt als de client nog niet is geregistreerd, als het nodig is om deze aan te roepen. : Hoe de client omgaat met DMTF-signalering. : geef de gebruikersnaam op voor het veld "van" wanneer er via deze invoer wordt gebeld. = : Stelt het standaarddomein in in het Van:-veld van SIP-berichten wanneer er een oproep wordt gedaan via deze entry.fullname: Sinds versie 1.4.x. Naamgedeelte, velden CallerID.g726niet-standaard: Sinds versie 1.4.x. Waarden: ja/nee, standaard: nee. Als de klant ermee akkoord gaat om de G726-32-audiocodec te gebruiken voor een communicatiesessie, met behulp van AAL2-compressie, in plaats van RFC3551 (wat vereist is voor apparaten van Sipura en gateways van Grandstream, en misschien anderen). Dit is in strijd met de RFC3551-specificatie, de client _moet_ "instemmen" om in plaats daarvan AAL2-G726-32 te gebruiken:-(host: Hoe vinden we onze client - IP-adres of hostnaam. Als u de telefoon nodig heeft om zichzelf te registreren, gebruikt u de waarde dynamisch in plaats van IP-adres of hostnaam. : Beperking van het aantal gelijktijdige verbindingen met onze SIP-client. Deze parameters zijn verouderd en worden niet gebruikt in versie 1.4.x. internetnetwerken met een normaal IP-adres).outboundproxy: proxyserveradres voor uitgaande oproepen (alleen peertype).permit, deny: beperkingen op IP-adres en IP-netwerk voor de client. Let op: in versie 1.4.x wordt de mask-parameter niet langer gebruikt. : Groep voor “pickup”-oproepen naar uw collega’s met behulp van de combinatie “*8” en de Pickup()-applicatie om te werken met de extensie *8.port: SIP-poort van de client.progressinband: Vanaf versie 1.4.x. Waarden: ja/nee/nooit, standaard: nooit. Mocht asterisk een eigen beltoon genereren (in-band beltoon). Gebruik de waarde "never" om dit signaal nooit te genereren, zelfs niet als sommige vreemde apparaten het zelf niet kunnen genereren. Waarden: ja/nee, standaard: nee. Indien ingesteld op "ja", staan ​​we toe dat SIP-berichten met code 302 of oproepdoorschakelberichten worden verzonden naar SIP-clients met niet-lokale IP-adressen. Het is vermeldenswaard dat het gedrag van promiscredir bij het doorsturen van een oproep die op het lokale systeem wordt geplaatst, kan leiden tot een oproeplus, omdat Asterisk kan geen haarspeldgesprekken aan. : Controleer regelmatig de beschikbaarheid van klanten. restrictcid: (ja/nee) Deze optie wordt niet gebruikt, gebruik in plaats daarvan callingpres. rfc2833compensate: Sinds versie 1.4.x. Waarden: ja/nee, standaard: nee. Maakt compensatie mogelijk voor de verzending van DTMF-signalen van andere asterisk-serverversies tot 1.4.*. In deze gevallen moet u deze functie inschakelen, anders werkt de DTMF-signaalontvangst niet goed. : beëindig het gesprek als er langer dan x seconden geen RTP-mediastreamactiviteit is en als de lijn niet in de wachtstand staat. : Breek de oproep af als er langer dan x seconden geen RTP-mediastreamactiviteit is, in de wachtmodus (de waarde moet groter zijn dan rtptimeout) geheim: Als Asterisk als SIP-server fungeert, moet deze SIP-client met dit wachtwoord worden geautoriseerd (gedeeld geheim). Als Asterisk fungeert als een SIP-client die werkt met een externe SIP-server die autorisatie vereist voor "SIP INVITE" -verzoeken, dan zal dit veld worden gebruikt voor autorisatie in de "SIP INVITE"-berichten die onze Asterisk naar de externe SIP-server zal sturen.sendrpid : Of de Remote-Party-Id-header wel of niet naar deze SIP-client moet worden verzonden. Waarden: ja/nee, standaard: yes.setvar: Sinds versie 1.4.x. De waarde specificeert het paar "variabele=waarde" voor de kanaalvariabele bij het bellen vanaf dit apparaat abonneecontext: Sinds versie 1.4.x. Specificeert de naam van de context waarin SIP-aanvragen worden verwerkt SUBSCRIBE.subscribemwi: Vanaf versie 1.4.x. De waarden zijn "ja" en "nee". Doel zie sip.conf.t38pt_udptl: Vanaf versie 1.4.x. Waarden: ja/nee, standaard: nee. Schakel T.38-ondersteuning voor deze client in/uit. : Waarden: ja/nee, standaard: nee. Stel deze in op "ja" als u de Remote-Party-ID kunt vertrouwen die u van de SIP-client heeft ontvangen. : Clienttype - alleen uitgaande oproepen, alleen inkomende oproepen of beide? Waarden: ja/nee, standaard: no.usereqphone: Sinds versie 1.4.x. De waarden zijn "ja" en "nee". Of ';user=phone' wel of niet moet worden toegevoegd aan de URI die het normale belnummer bevat. : Als Asterisk fungeert als een SIP-client die werkt met een externe SIP-server die autorisatie vereist voor "SIP INVITE"-verzoeken, dan zal dit veld worden gebruikt voor autorisatie in de "SIP INVITE"-berichten die onze Asterisk naar de externe SIP-server zal sturen . En ook, voor peers die zich registreren op onze Asterisk-server, als deze gebruikersnaam wordt gebruikt in INVITE-berichten, zolang deze op de server is geregistreerd.videosupport: Waarden: ja/nee, standaard: ja. Optie om SIP-video-ondersteuning in te schakelen. Mogelijk moet u video-ondersteuning inschakelen voor een specifieke SIP-client als deze bijvoorbeeld is uitgeschakeld in het globale deel van de configuratie en u deze selectief alleen voor specifieke gebruikers wilt inschakelen: vanaf versie 1.4.x. Zie voor dit doel sip.conf (alleen peer-type).

beller Let op: Asterisk ondersteunt (nog) geen SIP over TCP-transport. Alleen ondersteund via UDP-protocol. Voor Grandstream-telefoons: stel de parameter dtmfmode=info in, en voor GXP2000 gebruikt dtmfmode=inband Asterisk de inkomende stream als timingbron voor het verzenden van de uitgaande stream. Als de inkomende stream wordt onderbroken vanwege de stilteonderdrukkingsfunctie, zal de kwaliteit van de muziekonhold zeer slecht zijn. Hierdoor kunt u de stilte-onderdrukkingsfunctie niet gebruiken. Zorg ervoor dat IEDEREEN SIP-telefoons


Stilte-onderdrukking is uitgeschakeld. Voorbeelden Elke SIP-client die met Asterisk moet werken, moet worden gedefinieerd in het SIP.CONF-bestand. Hieronder staan ​​een paar voorbeelden:
type=vriend; kan zijn: "vriend" (dit is: peer+gebruiker), "peer" of "gebruiker"
context=van-slokje
gebruikersnaam=grandstream1; meestal valt deze parameter samen met de sectienaam -
vangebruiker=grandstream1; wijst callerid opnieuw toe, bijvoorbeeld
; kan nodig zijn voor het doorsturen van oproepen - DSN
callerid=John Doe
gastheer=192.168.0.23; We gebruiken een statisch maar intranet IP-adres
nat=nee; Er is geen IP-adresvertaling (NAT) tussen onze telefoon en Asterisk
kanopnieuw uitnodigen=ja; dwingt al het RTP-spraakverkeer via Asterisk
mailbox=1234@standaard; klant heeft voicebox 1234 in voiceboxcontext: "default"
niet toestaan=alles; u moet disallow=al instellen voordat u de parameter allow= gebruikt
toestaan=ulaw ; Let op: in de clientsecties de volgorde waarin de codec wordt geselecteerd
; beschreven in de allow= parameter heeft geen betekenis!
;toestaan=alaw
;toestaan=g723.1 ; Asterisk ondersteunt de g723.1-codec alleen in pass-thru-modus!
;toestaan=g729 ; Alleen in Pass-thru-modus, als u geen licentie hebt om de g729-codec te gebruiken


Schakel de stilte-onderdrukkingsfunctie in de X-Lite-client uit ("Transmit Silence"=YES)!
;Merk op dat Xlite zelf NAT keep-alive-pakketten verzendt, dus er is geen noodzaak voor kwalificeren=ja.
type=vriend
gebruikersnaam=xlite1
callerid = "Jane Smith"
gastheer=dynamisch
nat=ja; de X-Lite-client bevindt zich achter een router met IP-adresvertaling (NAT)
kan opnieuw uitnodigen = nee; Meestal ingesteld op "NEE" als de client zich achter NAT bevindt
niet toestaan=alles
toestaan=gsm; De GSM-codec vereist veel minder bandbreedte, dus ulaw.
toestaan=ulaw
toestaan ​​= alaw


type=vriend
geheim = bla
gastheer=dynamisch
dtmfmode=inband; Je kunt kiezen uit: inband, rfc2833 of info
standaardip=192.168.0.59
postbus=1234,2345; Spraakbox voor de indicator "nieuwe berichten ontvangen".
niet toestaan=alles
toestaan=ulaw ; als de modus voor dtmf is ingesteld op "inband",
toestaan=alaw ; dan moeten we alleen de g.711-codec gebruiken


type=vriend
gebruikersnaam=gebruiker2_pingtel
geheim = bla
gastheer=dynamisch
kwalificeren=1000; Wij beschouwen de opdrachtgever als niet-werkend,
; als het antwoord van hem langer dan 1 seconde duurt.
oproepgroep=1,3-4; De client is lid van belgroepen: 1, 3 en 4
ophaalgroep=1,3-4; We kunnen "opnemen"-gesprekken voeren door op *8 te drukken,
; voor oproepen uit groep 1, 3 en 4
standaardip=192.168.0.60
niet toestaan=alles
toestaan=ulaw
toestaan ​​= alaw
toestaan=g729

Type=vriend
gebruikersnaam=gebruiker3_cisco
geheim = bla
nat=ja; Deze telefoon bevindt zich achter een router met NAT
gastheer=dynamisch
kan opnieuw uitnodigen = nee; Cisco-apparaten lopen soms vast
; na een bepaald aantal heruitnodigingsverzoeken
kwalificeren=200; Wij beschouwen het feest als niet-werkend,
; als de reactie ervan langer duurt dan 200 ms
standaardip=192.168.0.4
niet toestaan=alles
toestaan=ulaw
toestaan ​​= alaw
toestaan=g729


type=vriend

Gebruikersnaam=user4_cisco
fromuser=markster ; Definieer de gebruikersnaam die in het veld "van" moet worden geplaatst in plaats van callerid
geheim = bla
standaardip=192.168.0.4; gebruik host=dynamic of defaultip=...
amaflags=standaard; Kan zijn: standaard, weglaten, facturering, documentatie
accountcode=markster ; Om de facturering te vereenvoudigen, wordt de gebruiker gekoppeld aan een accountcode.
niet toestaan=alles
toestaan=ulaw
toestaan ​​= alaw
toestaan=g729
toestaan=g723.1

De onderstaande beschrijving is afkomstig uit het Digium Asterisk-handboek.

Nadat u deze SIP-accounts voor uw clients in het bestand SIP.conf heeft gedefinieerd, hebben deze clients de mogelijkheid om zich op de asterisk-server te registreren en uitgaande gesprekken te voeren. Om ervoor te zorgen dat ze oproepen kunnen ontvangen, moet u de extensies voor hen beschrijven in uw belplanbestand. Voorbeeld:

Exten => 1010,1, Kiezen(SIP/user3_cisco,10,t)

Als iemand 1010 belt, wordt geprobeerd de SIP-client te bellen die is geregistreerd als user3_cisco.

Opmerkingen De variabele $(VXML_URL) kan worden gebruikt om een ​​extra element toe te voegen aan de SIP-berichtkop "Aan:". De waarde van deze variabele wordt, gescheiden door puntkomma's, toegevoegd aan het einde van de kop 'Aan:' van het SIP-bericht. Houd er rekening mee dat de vorige beschrijving van het gebruik van deze functie onjuist was; het gebruik van deze variabele heeft geen effect bij het downloaden van berichten naar een Cisco 7960-telefoon (iets dat momenteel is uitgeschakeld in de SIP-firmware van Cisco-telefoons). Dit probleem wordt beschreven in: e-mail van de auteur De variabele $(ALERT_INFO) kan worden gebruikt om een ​​nieuwe header te maken met de naam "Alert-Info:". Deze kan worden gebruikt om een ​​specifiek beltype in te stellen telefoontoestellen Cisco-bedrijven die werken met het SIP-protocol, waarop firmwareversie 6.0 of hoger is geïnstalleerd. Voor telefoons kan de ALERT_INFO variabele accepteren volgende waarden, om een ​​specifieke ingebouwde beltoon in te stellen: - Bellcore-BusyVerify
- Bellcore-Stutter
- Bellcore-MsgWaiting
- Bellcore-dr1
- Bellcore-dr2
- Bellcore-dr3
- Bellcore-dr4
- Bellcore-dr5
Op dit moment is er geen manier om een ​​ander gesprek te definiëren; u kunt alleen opties selecteren om een ​​gesprek af te spelen. Je moet heel goed luisteren om te zien dat de beltonen op de een of andere manier echt anders zijn. Er is een bugrapport voor Cisco: Cisco bug-ID CSCec42938, waarin wordt voorgesteld om de mogelijkheid om oproepsignalen te selecteren te voltooien. Voorbeeld 1 John Todd, loligo.com: http://www.loligo.com/asterisk/current/sip.conf. Verbinding maken met Free World Dialup (zonder NAT te gebruiken) [algemeen]
niet toestaan=alles
toestaan=gsm
toestaan=ulaw
toestaan ​​= alaw
context=van-slokje
maxexpirey=180
standaardvervaldatum=160
tos=betrouwbaarheid
registreer =>: @fwd.pulver.com/CONTACT

[fwd.pulver.com]
type=vriend
geheim=
gebruikersnaam=
host=fwd.pulver.com
onzeker=zeer ; vereist om inkomende DSN-oproepen te ondersteunen

Laten we nu naar de bestandsbeschrijving gaan en kijken hoe we contexten kunnen configureren in termen van bellen.

Voorbeeld 2 Asterisk gebruiken in combinatie met SIP-proxy SER [algemeen]
context=UITGAAND
autocreatepeer=ja

[Aanbieder]
type=vriend
gebruikersnaam=XXXXX
geheim=XXXX
host=xxxxx.FakeProvider.com

Dus wanneer Asterisk nu een oproep ontvangt met SER, voert het de actie "autocreatepeer" uit en staat toe dat de oproep wordt verwerkt in de UITGAANDE context.

Sip.conf beheren van externe bronnen: gebruik het RealTime-mechanisme voor SIP-kanalen. Net als in andere .conf-bestanden kan de #include-richtlijn worden gebruikt om een ​​ander bestand op te nemen in de sip.conf-configuratie verschillende versies: Extra functies, toegevoegd sinds versie 0.7.2 23-01-2004: CLI-opdracht "sip reload" toegevoegd om het sip-kanaal opnieuw op te starten, zodat de wijzigingen in het bestand sip.conf van kracht worden, zonder de Asterisk-server opnieuw op te starten. 25-01-2004: Ondersteuning voor het opslaan van SIP-peerdefinities in de database. Het opslaan van de configuratie in de database was op dit moment nog niet volledig geïmplementeerd, maar het werkt. Zie: 2004-06: Ondersteuning voor het opslaan van SIP-gebruikersdefinities in een database.

Asterisk is een open source computertelefonieoplossing broncode, dat VoIP-, SIP- en PJSIP-protocollen ondersteunt voor het Linux-besturingssysteem. Als u de juiste apparatuur op uw computer aansluit, kunt u met Asterisk een volwaardig ATC-station creëren. Een van de belangrijkste kenmerken van het programma zijn voicemail, conferenties en interactief spraakmenu en oproepverdeling.

In dit artikel zullen we bekijken hoe je Asterisk 13 op Ubuntu 16.04 installeert. Meest nieuwe versie het programma staat niet in de officiële repositories, omdat het niet zo vaak door gewone gebruikers wordt gebruikt, dus we zullen het vanaf de broncode moeten compileren.

Asterisk installeren op Ubuntu 16.04

Om vanuit bronnen te bouwen, zullen we de meeste acties namens de supergebruiker moeten uitvoeren, dus we zullen het meteen krijgen volledige rechten in het systeem:

Houd er rekening mee dat als u via ssh als root inlogt op uw server, u nog steeds verbinding moet maken als een gewone gebruiker en pas daarna moet overschakelen naar de rootconsole. Vervolgens moet u afhankelijkheden installeren om het programma te laten werken:

apt-get install build-essential wget libssl-dev libncurses5-dev libnewt-dev libxml2-dev linux-headers-$(uname -r) libsqlite3-dev uuid-dev git subversion

cd /usr/src
$ wget downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz

Om de bronnen uit te pakken, typt u:

tar zxvf asterisk-13-current.tar.gz

Voordat we het programma compileren, moeten we pjproject bouwen en installeren. Download eerst de bronnen:

git kloon git://github.com/asterisk/pjproject pjproject
$ cd pjproject
$ ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr CFLAGS="-O2 -DNDEBUG"
$ make dep make && make install
$ldconfig
$ ldconfig -p|grep pj

Eindelijk zijn we nu klaar om Asterisk op Ubuntu 16.04 te bouwen en te installeren:

cd .. contrib/scripts/get_mp3_source.sh
$ contrib/scripts/install_prereq install

Met deze opdrachten kunt u enkele afhankelijkheden installeren voor het afspelen van mp3. Het kan enige tijd duren voordat dit is voltooid en u moet ook een landcode invoeren. Vervolgens beginnen we met de montage:

./configure && make menuselecteer && make && make install

Wanneer de installatie is voltooid, voert u de volgende opdracht uit om te voorkomen dat u honderden configuratiebestanden handmatig aanmaakt:

Om init-scripts te installeren waarmee asterisk automatisch kan worden gestart, voert u het volgende uit:

maak configuratie ldconfig

Nu kunt u de asterisk-server starten en ervoor zorgen dat alles echt werkt:

service sterretje beginnen

En bekijk de informatie over het hulpprogramma via de terminal:

Als alles correct is gedaan en de installatie van Asterisk op Ubuntu 16.04 succesvol is geweest, zal alles werken.

Asterisk instellen op Ubuntu 16.04

Het programma draait als superuser. Maar we hebben het nodig om als asterisk-gebruiker te kunnen werken, dus we moeten nog een paar instellingen doen. Dus uw systeem zal binnen zijn meer veiligheid. Eerst moet u de actieve service stoppen:

groepvoeg sterretje toe
$ useradd -d /var/lib/asterisk -g sterretje sterretje

Vervolgens moeten we het initialisatiescript wijzigen zodat het programma namens wordt uitgevoerd de gewenste gebruiker. We kunnen het bestand /etc/default/asterisk handmatig bewerken, maar het is gemakkelijker om de volgende opdrachten te gebruiken:

sed -i "s/#AST_USER="asterisk"/AST_USER="asterisk"/g" /etc/default/asterisk
$ sed -i "s/#AST_GROUP="asterisk"/AST_GROUP="asterisk"/g" /etc/default/asterisk

Om alles correct te laten werken, moet de asterisk-gebruiker toegang krijgen tot alle programmamappen:

chown -R asterisk:asterisk /var/spool/asterisk /var/run/asterisk /etc/asterisk /var/(lib,log,spool)/asterisk /usr/lib/asterisk

We zullen ook de juiste gebruikersinstellingen voor de velden runuser en rungroup aangeven in het bestand asterisk.conf:

sed -i "s/;runuser = asterisk/runuser = asterisk/g" /etc/asterisk/asterisk.conf

$ sed -i "s/;rungroup = asterisk/rungroup = asterisk/g" /etc/asterisk/asterisk.conf

Wanneer alles klaar is, start u de eerder gestopte service of start u opnieuw op als u deze nog niet hebt gestopt:

sudo service asterisk start

Vervolgens controleren wij:

Als de gebruiker en de groep een asterisk zijn, hebben we alles goed gedaan.

Conclusies

Dat is het. De installatie van Asterisk 13 op Ubuntu 16.04 is voltooid. Nu kunt u naar verder maatwerk netwerken waarmee u rechtstreeks via internet tussen uw abonnees kunt bellen. Als clientsoftware kunt u elk programma gebruiken dat de benodigde protocollen ondersteunt, bijvoorbeeld Jitsi of Linphone.

Over de auteur

Oprichter en sitebeheerder, ik ben gepassioneerd door open source software en het Linux-besturingssysteem. Ik gebruik momenteel Ubuntu als mijn belangrijkste besturingssysteem. Naast Linux ben ik geïnteresseerd in alles wat hiermee te maken heeft informatietechnologie en moderne wetenschap.

Websites, forums en hele portalen zoals voip-info.org zijn gewijd aan het opzetten van Asterisk. Maar er zijn altijd mensen voor wie dit onderwerp een dicht bos is, en het product moet “gisteren” gelanceerd worden. Nog maar anderhalve maand geleden wist ik alleen maar dat Asterisk bestond. Dit werk is alleen bedoeld om het leven een beetje gemakkelijker te maken voor degenen die zich na mij in dezelfde situatie bevinden. Het kan fouten van welke aard dan ook bevatten. Als u een Asterisk-configuratiegoeroe bent, wijs dan op de fout, ik zal het corrigeren, en mijn nakomelingen zullen u dankbaar zijn.

Eerst was daar het woord

Op een gegeven moment werd door mijn inspanningen de infrvan het bedrijf letterlijk op zijn kop gezet. Er werden doelen en doelstellingen geschetst en het werd duidelijk dat we een dynamische, mobiele serverinfrastructuur nodig hebben om geld te besparen, zodat we bij eventuele problemen snel kunnen herstellen en/of op een andere plek kunnen opstaan, zodat het makkelijker is om te zorgen voor de hardware, etc. p.

Toen was er de kwestie

Over het algemeen was alles op papier mooi en gemakkelijk. Het was gewoon een kwestie van Asterisk implementeren en configureren.
Eerst werden twee eenvoudige servers aangeschaft. Core i7-930, 12 GB geheugen en 12 TB SATA-schijven. Op deze servers werd Free Xen Server geïnstalleerd en ingezet virtuele servers en werkstations voor externe werknemers.
Als externe opslag Ik gebruik een QNAP NAS die ik heb geërfd.
Terabyte lokale opslag is alleen nodig om de mediabank op te slaan, die behoorlijk groot is. De servers zelf wegen samen minder dan 3 terabyte.
Eén van de servers was Asterisk ter vervanging van de oude Panasonic TDE-200. Omdat het bedrijf heeft goedkope communicatie nodig, directe nummers verschillende landen, en vrije onderhandelingen tussen werknemers, dan is er voor 12 sikkels over het algemeen geen alternatief voor.

Dag één: Maak wereld

Er werd besloten om Asterisk native te configureren voor Citrix Xen besturingssysteem CentOS. Dezelfde, alleen vanaf de zijkant. Ik zal meteen een reservering maken: ik ben mijn hele leven een Windows-beheerder geweest en ik heb alleen maar met *nix op virtuele machines "gespeeld", een paar webservers op hardware nog afgezien. Daarom riekt deze implementatie van Asterisk in Citrix Xen naar enige naïviteit vanuit het oogpunt van ervaren mensen.
Over het algemeen volgde ik het beproefde pad: een gedetailleerde how-to-instructie voor dummies uit de officiële handleidingen wordt op de laptop geopend en letterlijk en zonder initiatief op de server uitgevoerd. Het zal later mogelijk zijn om als hero-fixers te spelen, wanneer alles is geconfigureerd en in de “standaard”-status werkt en de eerste volledige back-up is gemaakt.

Dag twee: yum installeer asterisk -y

Niet dat ik erg verrast was, maar toch ging ik naar een telecommunicatievriend voor advies over het opzetten van Asterisk toen ik ontdekte dat er al drie levende Asterisk-vorken waren: 1.4, 1.6 en 1.8. Elk van hen heeft zijn eigen kakkerlakken en lotions. Omdat Ik was niet gevleid door de hoop asterisk in een opwelling te verslaan, dus besloot ik versie 1.4 te installeren, zoals die van een vriend, om de hoogst mogelijke compatibiliteit van configuraties te hebben. Hoewel we vervolgens moesten upgraden naar 1.6 vanwege het gebrek aan TCP-ondersteuning in 1.4, toen een dergelijke behoefte zich voordeed.
Om dit te doen, werd een digium-repository aan CentOS gekoppeld en werd Asterisk daaruit geïnstalleerd.
De installatie verliep zoals verwacht, zonder problemen. Er werd in principe gebruik gemaakt van een verstandig stappenplan met voip-info.
iptables werd onmiddellijk gecorrigeerd om verkeer op SIP-poorten toe te staan.
Niet onmiddellijk, maar ik raad aan dat toekomstige generaties onmiddellijk een pakket met de naam fail2ban installeren en configureren. Het is geen overbodig programma op een server die is blootgesteld aan internet. Een dag na de installatie ging heel Taiwan in de val, te oordelen naar iptables.

Dag drie: Technische specificaties voor PBX-functionaliteit

Laten we beginnen met het leuke gedeelte: plannen. Vóór elk configuratieproces is het noodzakelijk om alle wensen van de klant op te schrijven en te structureren en ervoor te zorgen dat u een overeenkomst tekent om toekomstige conflicten van het type ‘nee, ik zei iets heel anders’ te voorkomen. In mijn geval is de klant het bedrijf waarvoor ik werk, maar dit verandert niets. We schrijven een technische specificatie voor de functionaliteit, bespreken deze met de verantwoordelijken, beslechten meningsverschillen, ondertekenen de definitieve versie en beginnen met het opzetten van Asterisk.
De specificaties voor de configuratie zijn als volgt geworden:

  • Telefoonnummering bestaat uit vier cijfers.
  • Het eerste cijfer van het nummer is een teken van het land waar het kantoor gevestigd is.
  • De nummering in elke afdeling begint met het eerste cijfer van de volgende honderd.
  • Elke afdeling is een aparte belgroep.
  • Als de gebelde deelnemer op een of andere manier niet beschikbaar is voor de oproep, wordt de oproep doorgeschakeld naar de hele groep.
  • Logica voor het afhandelen van inkomende oproepen:
  • Neem de telefoon op.
  • Speel begroeting.
  • Speel een advertentie af over lopende promoties.
  • Speelopties voor het bellen van verschillende afdelingen of bied aan om het nummer van de abonnee te bellen.
  • Wacht vanaf punt 2 tot er opdrachten zijn ingevoerd.
  • Wacht na het voltooien van stap 4 nog eens 10 seconden voordat u opdrachten invoert.
  • Als er geen commando's zijn, speel dan de call-opties opnieuw.
  • Als de abonnee nog steeds dom is, schakel dan het gesprek door naar de secretaris.
  • Gebruikers die een dergelijke service nodig hebben, moeten voicemail toevoegen. Als de gebruiker in dit geval op enigerlei wijze niet kan bellen, schakelt u het gesprek door naar de voicemail.
  • Standaard zijn oproepen alleen toegestaan ​​naar Rusland en Italië, de landen waar ons bedrijf voornamelijk actief is. De overige richtingen worden indien nodig geopend met de smalste maskers, omdat we herinneren het ons allemaal enge verhalen over “Cubaanse telefoonoperatoren” en we willen niet dat onze PBX op een dag plotseling Sierra Leone gaat bellen op alle 50 kanalen voor $ 14 per minuut voor elk kanaal.

Op het eerste gezicht is de taak eenvoudig en zal het opzetten van Asterisk niet veel tijd kosten, maar in de praktijk kostte het behoorlijk wat bloed om het te coördineren. Vooral om het eens te worden over het verbod op alle richtingen, behalve die welke duidelijk zijn toegestaan. De klant hoefde hier alleen mee in te stemmen vanwege de anders onvermijdelijke noodzaak om een ​​VPN te configureren op elk apparaat dat verbinding maakte met de PBX. Ik probeer gewoon vast te houden aan de meest eenvoudige en begrijpelijke configuraties, en de klant lijkt altijd te denken dat het toevoegen van functionaliteit aan het systeem ‘slechts een paar knoppen is om in te drukken’.

Dag vier: nano sip.conf

Nu komt het leuke gedeelte: het proces van het opzetten van Asterisk.
Om een ​​toch al lang artikel niet uit te slepen en te belasten gedetailleerde beschrijving Na de kwelling van de initiële configuratie en de daaropvolgende afstemming, zal ik gewoon mijn huidige configuraties laten zien met commentaar over wat wat is.


context=standaard; standaardcontext
allowguest=nee ;geen gasten, we verwachten niemand
allowoverlap=no ;Deze parameter bepaalt of we het doorverbinden van een gesprek met extra cijfers wel of niet toestaan. Wij staan ​​het niet toe.
Alwaysauthreject=yes ;Deze parameter betekent dat alle fouten voor de externe client er hetzelfde uitzien: autorisatiefout. Ontworpen om het hacken van PBX te bemoeilijken.
useragent=Orgue de Barbaris ;Dit is hoe we onszelf aan anderen voorstellen. Ik identificeerde mezelf met de naam van de eerste grammofoon om het voor technische ondersteuning van providers gemakkelijker te maken om dialogen te vinden met mijn PBX, omdat... Ik moet regelmatig met hen communiceren.
defaultexpiry=360 ;Interval voor verplichte herregistratie van klanten.
callevents=yes ;Dit is voor de toekomst, zodat de cliënt muziek in de wachtstand kan afspelen
limitonpeer=yes ;We tellen uitgaande en inkomende oproepen van peers samen.
tcpenable=yes ;Schakel het TCP-protocol in voor SIP.
rtptimeout=60 ;Hoe lang een client niet mag reageren voordat hij uit het systeem wordt verwijderd.
taal=ru ;Systeemtaal. Gebruikt voor spraakmenu.
bindport=5060 ;Standaardpoort. Het kan worden gewijzigd om de berekening en het hacken van de PBX te bemoeilijken, maar de oplossing is controversieel.
bindaddr=0.0.0.0 ;Ik heb nullen omdat... De PBX heeft twee interfaces en beide hebben clients.
srvlookup=ja
tos_sip=cs3; http://www.voip-info.org/wiki/view/Asterisk+sip+tos
tos_audio=efdisallow=all; verbied eerst alle codecs
allow=alaw ;dan staan ​​we alleen degenen toe die we willen gebruiken. De volgorde maakt niet uit.
toestaan=g729
toestaan=g723
toestaan=ulaw

canreinvite=no ;Deze parameter voorkomt dat clients rechtstreeks communiceren. Communicatie vindt alleen plaats via de server. Ik doe het op deze manier omdat mobiele klanten betaalde klanten gebruiken met het g.729a-protocol, en vaste klanten gebruiken gratis klanten zonder. Daarom gaf ik er de voorkeur aan de server te belasten door alawg.729a direct te transcoderen ten gunste van de verbindingskwaliteit voor mobiele klanten. Bovendien merkt de Core i7-930 helemaal niets van deze belasting.

Voor het maken van telefonie- en PBX-servers is het Linux-programma Asterisk nodig. Ze heeft veel nuttige functies, die in elk kantoor van pas zal komen. Conferenties, antwoordapparaten, oproepverdeling, sms-berichten, video, spraakmenu en voicemail. Het hulpprogramma ondersteunt populaire communicatieprotocollen. Ze kunnen worden geschakeld. Maar het installeren van Asterisk op Ubuntu is niet het gemakkelijkste. De applicatie wordt gedownload en geconfigureerd via de terminal. Daarom moet u consoleopdrachten leren.

  • Ga naar de map "contrib/scripts/" met behulp van de opdracht "cd".
  • Open het script "get_mp3_source.sh".
  • Typ 'maak installatie'.
  • Wacht terwijl de archieven worden gedownload.
  • Geïnstalleerde Asterisk moet zowel via het menu als via de terminal worden geconfigureerd. Open dus je console.

  • Configuratiebestanden maken. Kan gebruikt worden als test. Het commando is “maak monsters”.
  • Activeer de autorun-functie - “make config ldconfig”.
  • Nu kunt u de service starten - "service asterisk start".
  • Of open het onmiddellijk als een daemon - “/etc/init.d/asterisk start”. Om de console in te schakelen, voert u de opdracht “sudo asterisk -rvvvcd” in.
  • Om met Asterisk te kunnen werken, heeft u voorlopig superuser-rechten nodig. Maar het is beter om te creëren individuele gebruiker en geef hem toegang tot de functies van het programma. Om dit te doen:

  • Schakel het hulpprogramma tijdelijk uit - "service asterisk stop".
  • Voeg een nieuwe gebruiker toe - “adduser [Naam]”. U kunt een groep aanmaken waaraan u de benodigde rechten toekent. Het is handig als u besluit meerdere gebruikers aan te maken om mee te werken verschillende diensten Asterisk.
  • Nu hebben we een map nodig om te starten. Voeg het toe met de opdracht "mkdir". Schrijf daarna de parameter “-p” en het pad naar de map “/var/run/asterisk”.
  • Om de applicatie onmiddellijk onder de gewenste gebruiker te openen, bewerkt u het bestand “/etc/default/asterisk”. Stel daar de volgende parameters in: “AST_GROUP="dialout"" en "AST_USER="asterisk"".
  • U kunt dit eenvoudiger doen: voer het script “sed -i ‘s/#AST_USER=”asterisk”/AST_USER=”asterisk”/g’ /etc/default/asterisk” in.
  • Geef de gebruiker toegang tot alle programmamappen - "chown -R [Gebruikersnaam] [Pad naar map]".
  • Open het bestand “asterisk.conf”, zoek daarin de parameter “runuser” en specificeer daarin de nieuw gemaakte gebruiker. Als je een groep hebt gemaakt, herschrijf dan ook de regel “rungroup”.
  • Start het systeem opnieuw op - "reboot".
  • Log in als de Asterisk-gebruiker - “su [Naam]”.
  • En voer het programma uit.
  • Om informatie hierover te bekijken, typt u “asterisk -rvvvv”.
  • Het hulpprogramma is klaar voor gebruik. Verdere acties zijn afhankelijk van de omstandigheden waaronder het station zal worden gebruikt. Er zijn verschillende bestanden die de configuratie bevatten:

    • conf - algemene instellingen server. Daarin kun je aangeven hoeveel abonnees er zijn aangesloten. Zij stellen belregels op.
    • conf - het configureert ook de kiesregels en stelt oproepparameters in.
    • conf - configuratie van abonneeaccounts.

    Met Asterisk creëer je elke telefooncentrale complexiteit. Het heeft veel handige functies en modules. Na installatie en configuratie kunt u met het station communiceren met behulp van clientsoftware. Linphone bijvoorbeeld.