Stap 5: Post configuratie
Telkens wanneer die we het bestand /etc/asterisk/extensions.conf bewerkt dat we moeten opnieuw beginnen van Asterisk. De volgende regels in dit bestand bepalen hoe Asterisk behandelt een inkomend gesprek, waar is het DID-nummer gegeven door Vitelity.net
Configuratie contexten in Extensions.conf
Er zijn drie contexten die moeten worden opgegeven in vierkante haken- standaard-, inkomende, en van de interne. De standaardcontext zijn uitbreidingen die zonder over een SF-stam kunnen worden gekozen. Het wordt ook verwezen in het bestand /etc/asterisk/sip.conf als "Standaardcontext voor inkomende oproepen." Deze context wordt alleen gebruikt als een specifieke context is niet in de sip.conf apparaat/leverancier post hebt opgegeven. Alleen de getallen in de standaardcontext kan rechtstreeks via het DISA deed worden gekozen.
Binnenkomend is de context die we voor een binnenkomende Vitelity.net getallen gebruiken. Het is de context gebruikt wanneer trunks 25-48 een oproep van boomstammen 1-24 ("g1") bijvoorbeeld ontvangt,
is een enkel exemplaar in de inkomende context die op inkomende oproepen naar de DID reageren zal. DISA in dit voorbeeld is 'Toegang tot het systeem van directe inkomende' en zal het gesprek met een kiestoon waarnaar de code zoals hierboven "1234" een nieuwe kiestoon hoort krijgt. Als we een uitbreiding zoals 999 scheppen,
Dan kan maken we een verbinding met een Zaptel-kanaal, met de Dial() functie, als,
Dit zou verbinden naar het kanaal Zaptel in extensie 999. Wij annuleerteken troep deze functie kan worden uitgevoerd wanneer een specifieke extensie wordt gekozen uit onze DISA-verbinding, als iets als de extensie 2600 als,
Waar 2600 onze toestelnummer die antwoorden is, creëert een Zaptel-verbinding als u wilt groeperen 1 met de volgende beschikbare paar op onze trunk. Deze uitbreiding moet onder de standaardcontext als de DISA opdracht voor de DID vermelding punten aan die context. Met onze nieuwe Zaptel kanaalverbinding, kunnen we nu uit-interne nummers met behulp van onze Blue Box inbellen. Zowel de "van-interne" en "standaard" contexten zoals we in stap 3 - configuratie zagenook in het Zapata.conf bestand zijn gedefinieerd.
Afspelen van Audio
Als we willen om te spelen tonen of andere audio clips, moeten we eerst om ze te maken. Geluiden in Asterisk zijn beste afgespeeld als GSM-bestanden, die we gemakkelijk maken kunnen door te converteren van WAV-bestanden met behulp van sox.
MP3-bestanden kunnen ook worden gecodeerd naar WAV hulpprogramma voor LINUX met de lame-mp3 die worden geïnstalleerd van externe bronnen moeten zal, als
of, opnieuw kunnen we dit proces als het volgende script
Wij plaats dan gewoon de nieuwe GSM/WAV-bestanden in de/var/lib/asterisk/geluiden/directory. We kunnen nu de Playback() of de ControlPlayback() functies in het bestand /etc/asterisk/extensions.conf gebruiken ze af te spelen. Bijvoorbeeld, kunt we uitbreiding 112 instellen om te spelen een beltoon geluid en vervolgens de classtrack1HQ.gsm bestand met de volgende code als,
We kunnen alle WAV-bestanden in de huidige map met deze eenvoudige Bash one-liner veranderen:
Dan gewoon doen,
Hen naar de Asterisk geluid resources directory kopiëren.
If - Else logica
Als / Else-logica is mogelijk met behulp van het bestand extensions.conf in een Ternair-achtige manier. Bijvoorbeeld, we kunnen verzamelen van input van de gebruiker toetsenbord, controleren het en als het is wat we willen naar een gelabelde exten regel gaan. Neem een blik bij een voorbeeld.
De bovenstaande code voor extensions.conf simuleert een Directe toegang Test-eenheid. Merk op hoe de aantallen gewoonlijk gebruikt voor het bestellen van de exten lijnen zijn nu 'n.' ook, we hebben nu de etiketten na de 'n is als "ring", "beginnen," "getnum" en "readnum." Deze labels worden aangeduid door de functies GoTo() en GoToIf() . Wij de Read() -functie gebruiken om een geluid afspelen en luister voor invoer van de gebruiker. Input van de gebruiker wordt vervolgens opgeslagen in de variabele naam opgegeven. Een algemene definitie van read() kan worden als,
Waarbij "bestandsnaam" is het GSM-audiobestand wordt afgespeeld. In ons geval, we spelen de 440Hz-Toon en wachten op invoer van de gebruiker. Neem een snelle blik bij GoToIf().
Als de expressie waar is, GoToIf() gaat naar het label "somelabel" en voert die nieuwe lijn. Als het klopt niet, het gaat naar het otherlabel-label en voert de nieuwe lijn. Als otherlabel niet is gedefinieerd, zou Asterisk gewoon doorgegaan naar de volgende regel. Dit is hoe eenvoudig if/else logica kan worden gebruikt in Asterisk voor ProjectMF.