https://secure.limesco.nl/w/api.php?action=feedcontributions&user=SGielen&feedformat=atomLimesco Wiki - Gebruikersbijdragen [nl]2024-03-28T22:09:05ZGebruikersbijdragenMediaWiki 1.29.2https://secure.limesco.nl/w/index.php?title=Asterisk/Instellen&diff=1211Asterisk/Instellen2014-05-09T09:44:44Z<p>SGielen: Meer IP-ranges /* De SIM verbinden met Asterisk */</p>
<hr />
<div>[[Category:Asterisk]] [[Category:Howto]] [[Category:DIY]]<br />
Op deze pagina wordt uitgelegd hoe je je eigen Asterisk-server opzet en interconnect met Limesco/SpeakUp. Aanvullingen en wijzigingen op deze pagina zijn welkom: deze wiki is vrij wijzigbaar door geregistreerde gebruikers. Eventuele twijfels of vragen kun je stellen op de [[Overleg:Asterisk instellen|Overlegpagina]].<br />
<br />
'''Kom je afkortingen of woorden tegen die je niet kent? Kijk dan op de [[terminologie]]-pagina!'''<br />
<br />
=De infrastructuur=<br />
<br />
Er is ook een [[Instellen|algemene uitleg van de setup]] die niet uitwijdt over Asterisk.<br />
<br />
[http://www.speakup.nl/ SpeakUp] heeft de infrastructuur (via [http://www.elephanttalk.com/ Elephant Talk], de [[terminologie#MVNE|MVNE]]) met het [http://www.t-mobile.nl/corporate/htdocs/page/over-t-mobile/property-management/het-netwerk-van-t-mobile.aspx T-Mobilenetwerk] zo geregeld dat alle verkeer '''vanaf''' de mobiele telefoons van SpeakUp-klanten direct uitkomt bij de [[terminologie#PBX|PBX]] bij SpeakUp. Daar zal hun Asterisk-installatie controleren of er een alternatieve [[terminologie#SIP|SIP]]-server is ingesteld voor het telefoonnummer in kwestie, en zo ja de SIP-verbinding doorsturen. Je Asterisk-server kan dan kiezen wat er met dat uitgaande gesprek gebeurt. De meest waarschijnlijke optie voor de meeste nummers is het gewoon weer terug doorsturen naar SpeakUp, die dan een route zal kiezen naar dat nummer. Zodra een PBX het gesprek accepteert, zal vanaf dan een [[terminologie#RTP|RTP]]-stream worden opgezet tussen de servers van SpeakUp en de ontvanger (jouw server, een server bij SpeakUp, of een VoIP-eindpunt) waar de gespreksdata overheen kan gaan.<br />
<br />
Op deze pagina wordt uitgelegd hoe je die eigen Asterisk-server opzet. We zullen ervoor zorgen dat gesprekken uitkomen op je server, en dan een regel definiëren waarmee je server alles terugstuurt naar SpeakUp (je PBX is daardoor 'transparant'). Daarna zorgen we ervoor dat ook inkomende gesprekken correct naar je telefoon terug komen. En daarna geven we wat voorbeelden van leuke dingen om te proberen :)<br />
<br />
=Asterisk installeren=<br />
<br />
Dit hangt natuurlijk af van je distro, maar ik heb dit onder Debian Testing geprobeerd met Asterisk 1:1.8.11.1~dfsg-1. De configuratiebestanden staan dan onder /etc/asterisk. De server zelf runt als de user "asterisk". Om een volledige console-log te krijgen heb ik <tt>logger.conf</tt> aangepast en daar onder <tt>[logfiles]</tt> een console-regel veranderd naar:<br />
<br />
<pre><br />
console => debug,notice,warning,error,verbose,dtmf,fax<br />
</pre><br />
<br />
Onder de meeste distro's zal Asterisk vanzelf gestart zijn; anders moet je 'm nu zelf even starten (bijvoorbeeld met <tt>service asterisk start</tt>). Nu kunnen we verbinden naar Asterisk, met een <tt>asterisk -R</tt> (bij een "unable to connect" even opnieuw proberen als de user waarmee asterisk runt, b.v. <tt>sudo -u asterisk asterisk -R</tt>, of als je het wel gelooft gewoon als root).<br />
<br />
<pre><br />
sjors@foo:~$ sudo asterisk -R<br />
[...]<br />
Connected to asterisk 1.8.11.1~dfsg-1 currently running on foo (pid = 8051)<br />
Verbosity is at least 3<br />
foo*CLI> core show version<br />
Asterisk 1.8.11.1~dfsg-1 built by pbuilder @ boomtime on a x86_64 running Linux on 2012-04-25 17:59:19 UTC<br />
</pre><br />
<br />
= De SIM verbinden met Asterisk =<br />
<br />
SpeakUp heeft een gateway staan die de normale [[terminologie#PLMN|PLMN]]-signalen omzet naar SIP-signalen en vice versa. Die gateway verandert iedere mobiele telefoon in een SIP-softphone die verbindt naar je Asterisk-PBX. Kies zelf voor de telefoon een gebruikersnaam, wachtwoord en als je wil een intern nummer. Gebruikersnaam mag ook gelijk zijn aan een (intern/extern) nummer, of bijvoorbeeld aan het SIM-kaartnummer. '''Pak bij interne nummers liever niet de 1xx-range: daarin zitten ook de alarmnummers (112, 144) en die zijn special-cased: ze zullen nooit uitkomen bij je PBX maar bij de alarmcentrale.'''<br />
<br />
Schrijf nu in <tt>/etc/asterisk/sip.conf</tt> de volgende softphone-definitie, waarbij je %GEBRUIKER% en %WACHTWOORD% en %NUMMER% uiteraard verandert:<br />
<br />
<pre><br />
[%NUMMER%]<br />
type=friend ; toegang op basis van authenticatie ipv. IP-adres, voor terugbellen wordt SIP-registratie gebruikt<br />
callerid="Mijn mobiele telefoon" <%NUMMER%> ; caller-ID als je uitbelt, voor in het From-veld<br />
host=dynamic ; softphone verbindt naar ons toe<br />
username=%GEBRUIKER%<br />
secret=%WACHTWOORD%<br />
context=from-sim ; context in het dialplan waarin het gesprek binnenkomt<br />
mailbox=%NUMMER%@default<br />
insecure=invite,port<br />
canreinvite=yes<br />
</pre><br />
<br />
Herlaad nu in de Asterisk-console (zie hierboven) de SIP-configuratie: <tt>sip reload</tt>. Stel indien nodig je firewall in zodat IP-adressen 193.169.138.0/23 en 91.232.130.0/24 mogen registreren op de PBX.<br />
<br />
Het daadwerkelijk instellen van de PBX voor een mobiel nummer moet SpeakUp doen. Als het goed is heeft [[Support|Limesco Support]] je om een aantal van bovenstaande gegevens gevraagd; daar kun je nu een reply op sturen. Zodra de gegevens zijn ingeregeld door SpeakUp en je zet je telefoon aan of je maakt de eerste call, zie je in je Asterisk-logs iets als:<br />
<br />
<pre><br />
NOTICE[...]: chan_sip.c:20788 handle_response_peerpoke: Peer 'nummer' is now Reachable. (150ms / 2000ms)<br />
</pre><br />
<br />
Tevens zie je de SIM staan als je het commando <tt>sip show peers</tt> uitvoert:<br />
<br />
<pre><br />
Name/username Host Dyn Forcerport ACL Port Status <br />
%NUMMER%/%GEBRUIKER% 193.169... D N 8044 Unmonitored <br />
</pre><br />
<br />
Je kunt nu vanaf de SIM bellen en dat komt op je PBX uit -- maar die calls zijn nog niet routeerbaar: er zijn nog geen instructies om oproepen vanaf die telefoon af te handelen. Je kunt dit wel alvast testen: zet met <tt>sip set debug on</tt> debugging-informatie aan, en doe een oproep vanaf de telefoon, bijvoorbeeld naar het magische nummer [[0vast0]]1234. Je zou dan in je Asterisk-console iets moeten zien als:<br />
<br />
<pre><br />
<--- SIP read from UDP:193.169.[...]:8044 ---><br />
INVITE sip:1234@[...] SIP/2.0<br />
[...]<br />
Max-Forwards: 68<br />
From: <sip:[...jouw-sip-contact...]>;tag=...<br />
To: <sip:1234@switch2.sip.speakup.nl:5060><br />
</pre><br />
<br />
Met <tt>sip set debug off</tt> zet je debugging-informatie weer uit. Krijg je bovenstaande output niet in je Asterisk-console, ondanks dat je PBX al wel is ingeregeld door SpeakUp, ga dan naar de Troubleshooting-sectie hieronder.<br />
<br />
= Asterisk verbinden met het telefoonnetwerk =<br />
<br />
In het vorige kopje verbonden we Asterisk met de SIM-kaart zo dat de SIM naar Asterisk kan bellen en Asterisk naar de SIM. In dit kopje bekijken we de externe verbinding: Asterisk moet nationale en internationale telefoonnummers op het telefoonnet kunnen bellen, en als iemand daar je telefoonnummer belt moet dat bij Asterisk uitkomen.<br />
<br />
Om calls vanuit je PBX weer het telefoonnetwerk op te kunnen routeren, vertel je Asterisk eerst dat die servers bestaan (je voegt "peer"-definities toe). Daarvoor heb je je SpeakUp-gebruiker en -wachtwoord nodig, die je van [[Support|Limesco Support]] gekregen hebt. Dat doe je als volgt in <tt>sip.conf</tt>:<br />
<br />
<pre><br />
[to-speakup](!) ; een template voor een verbinding naar speakup toe<br />
type=friend<br />
insecure=invite<br />
pedantic=no<br />
canreinvite=no<br />
nat=no<br />
port=5060<br />
context=from-speakup<br />
qualify=4000<br />
username=%TRUNKUSER%<br />
secret=%TRUNKPASS%<br />
disallow=all<br />
allow=alaw<br />
allow=ulaw<br />
allow=gsm<br />
allow=g726<br />
<br />
[speakup01](to-speakup) ; instantie van de template, voor server #1<br />
host=proxy1.sip.speakup.nl<br />
<br />
[speakup02](to-speakup) ; instantie van de template, voor server #2<br />
host=proxy2.sip.speakup.nl<br />
</pre><br />
<br />
Als je nu in je Asterisk-console <tt>sip reload</tt> uitvoert voegt Asterisk definities toe voor deze twee servers, en kun je ze vervolgens in je dialplan gebruiken. Hoe je dat doet zien we straks. Eerst bevestigen we dat de servers inderdaad zijn toegevoegd, d.m.v. <tt>sip show peers</tt>:<br />
<br />
<pre><br />
Name/username Host Dyn Forcerport ACL Port Status <br />
%NUMMER%/%GEBRUIKER% 193.169... D N 8044 Unmonitored <br />
speakup01/%TRUNKUSER% 193.169... 5060 OK (16 ms) <br />
speakup02/%TRUNKUSER% 193.169... 5060 OK (15 ms) <br />
</pre><br />
<br />
Nu komt de laatste stap in het verbinding leggen met de buitenwereld: je PBX registreren bij SpeakUp. Daarvoor is slechts één regel nodig, die je helemaal bovenaan in de <tt>[general]</tt>-sectie van <tt>sip.conf</tt> toevoegt:<br />
<br />
<pre><br />
[general]<br />
...<br />
register => %TRUNKUSER%:%TRUNKPASS%@sip.speakup.nl<br />
</pre><br />
<br />
Als je nu <tt>sip reload</tt> uitvoert, voert Asterisk een registratie uit bij SpeakUp voor je account, en daarmee je nummer. Met <tt>sip set debug on</tt> kun je precies zien hoe dat gaat (na nog een <tt>sip reload</tt>). Je kunt controleren dat het goed is gegaan met <tt>sip show registry</tt>:<br />
<br />
<pre><br />
Host dnsmgr Username Refresh State Reg.Time <br />
sip.speakup.nl:5060 N %TRUNKUSER% 105 Registered Sun, 15 Sep 2013 20:35:12<br />
1 SIP registrations.<br />
</pre><br />
<br />
= Het dialplan =<br />
<br />
We hebben nu de volgende situatie:<br />
* Asterisk kent het adres om naar je SIM te bellen<br />
* Je SIM kan naar Asterisk bellen<br />
* Asterisk kent het adres om naar het telefoonnetwerk te bellen<br />
* Het telefoonnetwerk kan naar Asterisk bellen<br />
<br />
Oftewel: Asterisk heeft controle over het telefoonverkeer. Alleen: het programma is nog niet ingesteld, dus alle oproepen zullen eindigen in een <tt>SIP/2.0 404 Not Found</tt>: Asterisk kan geen instructies vinden voor het gebelde nummer. Die instructies gaan we nu toevoegen.<br />
<br />
In de twee peer-definities die je eerder hebt toegevoegd stond allebei een regel "context": die is "from-sim" voor de definitie van je SIM-kaart en "from-speakup" voor de definitie van de SpeakUp-trunk. Die contexts zijn startpunten in het dialplan dat Asterisk gebruikt om alle gesprekken bij het juiste eindpunt te laten komen. Dat dialplan staat gedefinieerd in <tt>extensions.conf</tt>. Laten we eerst de simpelste configuratie opnemen: een oproep naar je nummer eindigt bij je telefoon; een oproep van je telefoon eindigt bij de SpeakUp-trunk. Voeg daarvoor deze regels toe in <tt>extensions.conf</tt>:<br />
<br />
<pre><br />
[from-sim]<br />
exten => _X.,1,Verbose(Call from Limesco SIM [${CALLERID(num)}] to [${EXTEN}])<br />
exten => _X.,n,Dial(SIP/speakup01/${EXTEN})<br />
<br />
[from-speakup]<br />
exten => _X.,1,Verbose(Call from SpeakUp [${CALLERID(num)}] to [${EXTEN}])<br />
; Vervang ... door de rest van je DIY-nummer:<br />
exten => 316...,2,Dial(SIP/${EXTEN})<br />
exten => _X.,2,Hangup(1)<br />
</pre><br />
<br />
Voer nu <tt>dialplan reload</tt> in in de Asterisk-console om het bestand te herladen. Pak de telefoon met je DIY-SIM en bel een bekend nummer. Je ziet dan in de Asterisk-log een melding als <tt>Call from Limesco SIM [316...] to [316...]</tt> als je dialplan goed is opgepakt. De telefoon met het nummer moet nu overgaan: als je daar opneemt, hoor je elkaar. Andersom: bel met een bekend nummer het nummer van je DIY-SIM; er verschijnt weer een melding in je log en de DIY-SIM-telefoon moet overgaan. Je hebt nu een standaardconfiguratie.<br />
<br />
Voor meer informatie kun je ook kijken naar [http://support.speakup.nl/faq/Asterisk/dialplan/sipkoppeling/ de SpeakUp-pagina over SIP-koppeling].<br />
<br />
Eventuele andere uplinks kun je op een vergelijkbare manier instellen.<br />
<br />
== Meer over het dialplan ==<br />
<br />
Asterisk laadt bij het opstarten een "dial-plan" in het geheugen. Een dialplan is een set instructies voor telefoonnummers (of ''extensions''), die Asterisk zal uitvoeren zodra één van die nummers wordt gebeld. Iedere instructie heeft een regelnummer; Asterisk zal beginnen bij regelnummer 1 van de juiste extension en regelnummers zullen in volgorde worden afgehandeld tot het eerstvolgende regelnummer niet meer bestaat. Als een telefoongesprek tegen het einde van een set instructies niet (succesvol) is doorgeschakeld, aangenomen of geweigerd, zal Asterisk zelf de juiste foutcode proberen te raden (b.v. aan de hand van een gefaalde operatie). Er bestaat een opdracht <tt>GoTo</tt> om naar een andere extension of een ander regelnummer te springen. Dit is bijvoorbeeld een correcte set instructies om een MP3'tje af te spelen en op te hangen wanneer het nummer ''300'' gebeld wordt:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,MP3Player(/tmp/Sad-Trombone.mp3)<br />
exten => 300,n,Hangup<br />
</pre><br />
<br />
Alle regels beginnen met "exten =>"; daarna volgt het telefoonnummer, het regelnummer (of "n" voor next, het vorige regelnummer plus één) en de instructie om uit te voeren. De instructies die je kunt gebruiken vind je (o.a.) in de console:<br />
<br />
<pre><br />
foo*CLI> core show applications<br />
-= Registered Asterisk Applications =-<br />
AddQueueMember: Dynamically adds queue members.<br />
[...]<br />
Zapateller: Block telemarketers with SIT.<br />
-= 176 Applications Registered =-<br />
foo*CLI> core show application Zapateller<br />
<br />
-= Info about application 'Zapateller' =- <br />
<br />
[Synopsis]<br />
Block telemarketers with SIT.<br />
[....]<br />
</pre><br />
<br />
Naast hele telefoonnummers kun je als extension ook nog patterns opgeven. Die beginnen met een underscore (_) en kunnen bepaalde characters matchen vanaf het begin (maar niet vanaf het eind). Zie voor meer informatie [http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns].<br />
<br />
Asterisk maakt in een extensionlijstje nooit vanzelf een sprong naar een regelnummer méér dan één hoger dan het huidige regelnummer. Dit werkt dus niet:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
[...]<br />
exten => 300,10,Nop<br />
exten => 300,100,HangUp<br />
</pre><br />
<br />
Om een sprong te maken, neem je een GoTo op (zie ook <tt>core show application goto</tt>). Dat kan direct naar een specifiek regelnummer, maar werkt wat overzichtelijker met labels:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,GoTo(ophangen)<br />
exten => 300,100(ophangen),HangUp<br />
</pre></div>SGielenhttps://secure.limesco.nl/w/index.php?title=Hoofdpagina&diff=1203Hoofdpagina2014-05-05T21:18:11Z<p>SGielen: /* Aanmelden of net aangemeld? */</p>
<hr />
<div>[[Bestand:limesco2.png|250px|right]]<br />
<br />
Limesco is telecom, maar dan anders. Onze idealen zijn: open, eerlijk en alles kan.<br />
<br />
Wij zijn open. We vertellen wat we van je weten en waarom we dat moeten weten. Als je ons mailt krijg je altijd antwoord van iemand met kennis van zaken. Als je klachten, tips of ideeën hebt, dan horen we graag van je.<br />
<br />
Wij zijn eerlijk. We doen niet aan belbundels, je betaalt gewoon wat je verbruikt, &oacute;&oacute;k bij data. We doen niet aan onverwachtse kosten, elke cent die je betaalt geven we vooraf duidelijk aan.<br />
<br />
Alles kan. Wil je je telefoonverkeer routeren via je eigen telecomserver? Dat kan. Technische kennis is wel vereist. Wij zijn de enige mobiele provider in Nederland die dit voor niet-zakelijke gebruikers aanbiedt.<br />
<br />
== Meedoen ==<br />
Wil je meehelpen met Limesco en haar gebruikers? Dan ben je hier op de juiste plaats! We werken eraan om alle statische informatie op de website http://limesco.nl te plaatsen en tips, ideeën, vragen en andere zaken kan je hier plaatsen. Kijk bijvoorbeeld eens op één van de onderstaande pagina's.<br />
<br />
== Interessante pagina's ==<br />
=== Aanmelden of net aangemeld? ===<br />
* [https://inschrijven.limesco.nl/ SIM-kaart aanvragen]<br />
* [[Getting started]] als je SIM net is geactiveerd.<br />
<br />
=== Support ===<br />
* [[Vragen]] / [[Help:Inhoud|Hulp]]<br />
* [[Wie wat kan|Wie kan wat?]]<br />
<br />
=== Overige ===<br />
* [http://limesco.nl De hoofdwebsite]<br />
* [[Verzoeknummers]]<br />
* [http://youtu.be/jSrUPZr1S2M Setting mobile phones free (29c3)] een engelstalige presentatie over mobiele telefoonnetwerken en Limesco.</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Gebruiker:Patrick_Uiterwijk&diff=1151Gebruiker:Patrick Uiterwijk2014-04-02T23:23:10Z<p>SGielen: Er wordt een gebruikerspagina gemaakt met de biografie van de nieuwe gebruiker.</p>
<hr />
<div></div>SGielenhttps://secure.limesco.nl/w/index.php?title=Overleg_gebruiker:Patrick_Uiterwijk&diff=1152Overleg gebruiker:Patrick Uiterwijk2014-04-02T23:23:10Z<p>SGielen: Welkom!</p>
<hr />
<div>'''Welkom bij ''Limesco Wiki''!''' We hopen dat u veel goede bijdragen levert. <br />
Waarschijnlijk wilt u de [[Help:Inhoud|hulppagina's]] lezen. Nogmaals, welkom en veel plezier! [[Gebruiker:SGielen|SGielen]] 3 apr 2014 01:23 (CEST)</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Overleg_gebruiker:M._Piscaer&diff=1150Overleg gebruiker:M. Piscaer2014-04-02T23:21:54Z<p>SGielen: Welkom!</p>
<hr />
<div>'''Welkom bij ''Limesco Wiki''!''' We hopen dat u veel goede bijdragen levert. <br />
Waarschijnlijk wilt u de [[Help:Inhoud|hulppagina's]] lezen. Nogmaals, welkom en veel plezier! [[Gebruiker:SGielen|SGielen]] 3 apr 2014 01:21 (CEST)</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Gebruiker:M._Piscaer&diff=1149Gebruiker:M. Piscaer2014-04-02T23:21:54Z<p>SGielen: Er wordt een gebruikerspagina gemaakt met de biografie van de nieuwe gebruiker.</p>
<hr />
<div></div>SGielenhttps://secure.limesco.nl/w/index.php?title=Overleg_gebruiker:Koray_Yanik&diff=1146Overleg gebruiker:Koray Yanik2014-04-02T17:07:30Z<p>SGielen: Welkom!</p>
<hr />
<div>'''Welkom bij ''Limesco Wiki''!''' We hopen dat u veel goede bijdragen levert. <br />
Waarschijnlijk wilt u de [[Help:Inhoud|hulppagina's]] lezen. Nogmaals, welkom en veel plezier! [[Gebruiker:SGielen|SGielen]] 2 apr 2014 19:07 (CEST)</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Gebruiker:Koray_Yanik&diff=1145Gebruiker:Koray Yanik2014-04-02T17:07:30Z<p>SGielen: Er wordt een gebruikerspagina gemaakt met de biografie van de nieuwe gebruiker.</p>
<hr />
<div>Ex-Informaticastudent aan de Radboud Universiteit in Nijmegen. Werkend als webdeveloper en onderzoeker, hardware-hobbyist met een voorliefde voor simpele apparaten, solderen en oude gameconsoles (het liefst allemaal gecombineerd in een). Programmeert bij voorkeur in talen als C, assembly en javascript. C++ gaat er ook nog wel in als het moet. Slecht in het schrijven van biografieen en het vullen van minstens 50 woorden, en haat Java met een passie.</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Hoofdpagina&diff=1144Hoofdpagina2014-04-02T17:06:57Z<p>SGielen: Zet het logo rechts neer</p>
<hr />
<div>[[Bestand:limesco2.png|250px|right]]<br />
<br />
Limesco is telecom, maar dan anders. Onze idealen zijn: open, eerlijk en alles kan.<br />
<br />
Wij zijn open. We vertellen wat we van je weten en waarom we dat moeten weten. Als je ons mailt krijg je altijd antwoord van iemand met kennis van zaken. Als je klachten, tips of ideeën hebt, dan horen we graag van je.<br />
<br />
Wij zijn eerlijk. We doen niet aan belbundels, je betaalt gewoon wat je verbruikt (en we werken er hard aan om bundelloos internet aan te kunnen bieden). We doen niet aan onverwachtse kosten, elke cent die je betaalt geven we vooraf duidelijk aan.<br />
<br />
Alles kan. Wil je je telefoonverkeer routeren via je eigen telecomserver? Dat kan. Technische kennis is wel vereist. Wij zijn de enige mobiele provider in Nederland die dit voor niet-zakelijke gebruikers aanbiedt.<br />
<br />
== Meedoen ==<br />
Wil je meehelpen met Limesco en haar gebruikers? Dan ben je hier op de juiste plaats! We werken eraan om alle statische informatie op de website http://limesco.nl te plaatsen en tips, ideeën, vragen en andere zaken kan je hier plaatsen. Kijk bijvoorbeeld eens op één van de onderstaande pagina's.<br />
<br />
== Interessante pagina's ==<br />
* [[Vragen]]<br />
* [[Help:Inhoud|Hulp]]<br />
* [[Wie wat kan|Wie kan wat?]]<br />
* [[Verzoeknummers]]<br />
* [http://limesco.nl limesco.nl]<br />
* [https://limesco.org/inschrijven/ SIM-kaart aanvragen]<br />
* [[Getting started]] als je SIM net is geactiveerd.<br />
* [http://youtu.be/jSrUPZr1S2M Setting mobile phones free (29c3)] een engelstalige presentatie over mobiele telefoonnetwerken en Limesco.</div>SGielenhttps://secure.limesco.nl/w/index.php?title=support&diff=1124support2014-03-24T18:27:08Z<p>SGielen: Geen key ID's meer op de wiki, staan nu authoratively op de website</p>
<hr />
<div>Je bent hier waarschijnlijk gekomen omdat er een probleem is met je SIM, je telefooncentrale, een factuur/betaling of iets anders. Op deze pagina proberen we je te helpen ons te helpen jou te helpen. Dat wil zeggen: wij zullen ons best doen je probleem op te lossen, maar daarvoor hebben we de juiste informatie van jou nodig.<br />
<br />
Stuur een e-mail naar ons: [mailto:support@limesco.nl support@limesco.nl]. Mocht je een vertrouwelijke mail willen sturen, kun je 'm encrypten met PGP. De keys die je daarvoor gebruikt staan op [http://limesco.nl/over/contact.html de Contact-pagina op de website].<br />
<br />
Geïnteresseerd in de [[Support-infrastructuur]]?<br />
<br />
[[Categorie:Support]]</div>SGielenhttps://secure.limesco.nl/w/index.php?title=internetinstellingen&diff=1123internetinstellingen2014-03-24T18:24:51Z<p>SGielen: iets met case sensitivity</p>
<hr />
<div>== APN ==<br />
<br />
De APN voor bundelloos internet is <tt>basic.internet.spmb.data</tt>. Dit is de APN die je vanaf 24 maart 2014 kunt instellen. Als je je SIM voor die tijd hebt geactiveerd, stuur dan even een mailtje naar [[Support|support@]] om bundelloos internet op je SIM te activeren.<br />
<br />
De oude APN voor de 500 mb-bundel is <tt>silver.internet.spmb.data</tt>. De oude APN voor de 2000mb-bundel is <tt>platinum.internet.spmb.data</tt>. Deze werken alleen als je die bundels geactiveerd had op je SIM.<br />
<br />
=== iPhone ===<br />
iPhone-gebruikers kunnen via Wifi surfen naar deze pagina en de instellingen downloaden voor de [http://www.speakup.nl/images/SPUPbasic.mobileconfig bundelloze data], [http://www.speakup.nl/images/SPUPsilver.mobileconfig/ 500 mb-bundel] of de [http://www.speakup.nl/images/SPUPsilver.mobileconfig/ 2000 mb-bundel].<br />
<br />
=== Android ===<br />
<br />
Onder "Instellingen" -> "Mobiele gegevens" -> "Namen toegangspunten" kan je een nieuwe APN aanmaken met de volgende gegevens:<br />
<br />
==== Gingerbread 2.3.X ====<br />
<br />
* Name: Limesco (vrij te kiezen)<br />
* APN: basic.internet.spmb.data<br />
* Proxy: <Not set><br />
* Port: <Not set><br />
* Username: <Not set><br />
* Password: <Not set><br />
* Server: <Not set><br />
* MMSC: <Not set><br />
* MMS proxy: <Not set><br />
* MCC: 204<br />
* MNC: 16<br />
* Authentication type: None<br />
* APN type: default,supl<br />
* (disabled)APN protocol: IPv4<br />
<br />
==== Jelly Bean 4.1.X ====<br />
<br />
* Naam: Limesco (vrij te kiezen)<br />
* APN: basic.internet.spmb.data<br />
* Proxy: <Niet ingesteld><br />
* Poort: <Niet ingesteld><br />
* Gebruikersnaam: <Niet ingesteld><br />
* Wachtwoord: <Niet ingesteld><br />
* Server: <Niet ingesteld><br />
* MMSC: <Niet ingesteld><br />
* MMS proxy: <Niet ingesteld><br />
* MMS port: <Niet ingesteld><br />
* MMS protocol: WAP 2.0<br />
* MCC: 204<br />
* MNC: 16<br />
* Verificatie type: Geen<br />
* APN type: default,hipri<br />
* (disabled)APN inschakelen/uitschakelen: aangevinkt</div>SGielenhttps://secure.limesco.nl/w/index.php?title=internetinstellingen&diff=1122internetinstellingen2014-03-24T18:24:07Z<p>SGielen: /* APN */</p>
<hr />
<div>== APN ==<br />
<br />
De APN voor bundelloos internet is <tt>basic.internet.spmb.data</tt>. Dit is de APN die je vanaf 24 maart 2014 kunt instellen. Als je je SIM voor die tijd hebt geactiveerd, stuur dan even een mailtje naar [[support]] om bundelloos internet op je SIM te activeren.<br />
<br />
De oude APN voor de 500 mb-bundel is <tt>silver.internet.spmb.data</tt>. De oude APN voor de 2000mb-bundel is <tt>platinum.internet.spmb.data</tt>. Deze werken alleen als je die bundels geactiveerd had op je SIM.<br />
<br />
=== iPhone ===<br />
iPhone-gebruikers kunnen via Wifi surfen naar deze pagina en de instellingen downloaden voor de [http://www.speakup.nl/images/SPUPbasic.mobileconfig bundelloze data], [http://www.speakup.nl/images/SPUPsilver.mobileconfig/ 500 mb-bundel] of de [http://www.speakup.nl/images/SPUPsilver.mobileconfig/ 2000 mb-bundel].<br />
<br />
=== Android ===<br />
<br />
Onder "Instellingen" -> "Mobiele gegevens" -> "Namen toegangspunten" kan je een nieuwe APN aanmaken met de volgende gegevens:<br />
<br />
==== Gingerbread 2.3.X ====<br />
<br />
* Name: Limesco (vrij te kiezen)<br />
* APN: basic.internet.spmb.data<br />
* Proxy: <Not set><br />
* Port: <Not set><br />
* Username: <Not set><br />
* Password: <Not set><br />
* Server: <Not set><br />
* MMSC: <Not set><br />
* MMS proxy: <Not set><br />
* MCC: 204<br />
* MNC: 16<br />
* Authentication type: None<br />
* APN type: default,supl<br />
* (disabled)APN protocol: IPv4<br />
<br />
==== Jelly Bean 4.1.X ====<br />
<br />
* Naam: Limesco (vrij te kiezen)<br />
* APN: basic.internet.spmb.data<br />
* Proxy: <Niet ingesteld><br />
* Poort: <Niet ingesteld><br />
* Gebruikersnaam: <Niet ingesteld><br />
* Wachtwoord: <Niet ingesteld><br />
* Server: <Niet ingesteld><br />
* MMSC: <Niet ingesteld><br />
* MMS proxy: <Niet ingesteld><br />
* MMS port: <Niet ingesteld><br />
* MMS protocol: WAP 2.0<br />
* MCC: 204<br />
* MNC: 16<br />
* Verificatie type: Geen<br />
* APN type: default,hipri<br />
* (disabled)APN inschakelen/uitschakelen: aangevinkt</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Indeling_e-mail&diff=1119Indeling e-mail2014-02-28T11:34:03Z<p>SGielen: Gerdriaan voert een ander adres</p>
<hr />
<div>De volgende e-mailadressen zijn op het moment in gebruik.<br />
<br />
{| class="wikitable"<br />
|-<br />
! Naam !! Omschrijving<br />
|-<br />
| [[Mailinglists|*@lists.limesco.nl]] || subdomain voor mailman<br />
|-<br />
| directie@limesco.nl || komt uit bij de directie van Limesco<br />
|-<br />
| info@limesco.nl || alias naar directie@, omdat mensen vaak verwachten dat dit adres bestaat<br />
|-<br />
| support@limesco.nl || verwijst naar het supportticketsysteem en wordt afgehandeld door de directie<br />
|-<br />
| wiki@limesco.nl || stuurt mails over wijzigingen aan de wiki<br />
|-<br />
| mrngm@limesco.nl || <br />
|-<br />
| sjors@limesco.nl || <br />
|-<br />
| peter@limesco.nl || <br />
|}</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Workshop&diff=1064Workshop2013-09-16T20:01:10Z<p>SGielen: /* Calling PSTN */</p>
<hr />
<div>= SIP registration =<br />
<br />
Add to <tt>sip.conf</tt>:<br />
<br />
<pre><br />
[sipphone]<br />
type=friend<br />
host=dynamic<br />
context=from-sipphone<br />
secret=geheim<br />
insecure=invite<br />
</pre><br />
<br />
Add to <tt>extensions.conf</tt>:<br />
<br />
<pre><br />
[from-sipphone]<br />
; Here will be the dialplan rules that are relevant<br />
; when we call a number from the SIP phone.<br />
exten => 1234,1,Answer<br />
exten => 1234,n,Wait(1)<br />
exten => 1234,n,Playback(demo-thanks)<br />
exten => 1234,n,Hangup<br />
</pre><br />
<br />
Open your Asterisk console using <tt>asterisk -vvvR</tt> (may need to run as root), then:<br />
<br />
<pre><br />
yourpbx*CLI> sip reload<br />
yourpbx*CLI> dialplan reload<br />
yourpbx*CLI> sip show peers<br />
Name/username Host Dyn Forcerport ACL Port Status <br />
sipphone/sipphone (Unspecified) D N 0 Unmonitored<br />
</pre><br />
<br />
Now, configure your phone to connect to your Asterisk instance (over UDP). Watch your Asterisk log. When it connects, you will see a message. If it doesn't, use <tt>sip set debug on</tt> to find out whether you're receiving INVITE messages and see their contents.<br />
<br />
As soon as the SIP phone is connected, call 1234 on it. You will hear a thank-you message from Asterisk.<br />
<br />
= Calling smbp =<br />
<br />
The rules in your dialplan (<tt>Answer, Wait, Playback, Hangup</tt>) are <strong>applications</strong>. There are many applications that you can use during a call. To get a list of applications, open your Asterisk CLI and run:<br />
<br />
<pre><br />
yourpbx*CLI> core show applications<br />
</pre><br />
<br />
One of the applications is called <tt>Dial</tt>. You use it to forward the call to other channels, for example SIP channels. The top of <tt>sip.conf</tt> explains how to use <tt>Dial</tt> to call SIP channels. Hint: the extension rule starts with <tt>exten => 1234,n,Dial(SIP/</tt>...<br />
<br />
smbp's IP address is 192.168.178.172. Call the extension "1234" on it to receive the same message. Don't forget to reload your dialplan after changing it using <tt>dialplan reload</tt>.<br />
<br />
= Calling PSTN =<br />
<br />
smbp can forward to the public network if you authenticate to it. Claim one of the numbers on the slide. Then, add a line like this to your <tt>sip.conf</tt> below <tt>[general]</tt>:<br />
<br />
<pre><br />
register => NUMBER:PASSWORD@192.168.178.172<br />
</pre><br />
<br />
For example:<br />
<br />
<pre><br />
register => 31632271690:foobar@192.168.178.172<br />
</pre><br />
<br />
Then, tell me the password you chose and I will make sure you can connect.</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Workshop&diff=1063Workshop2013-09-16T19:53:35Z<p>SGielen: </p>
<hr />
<div>= SIP registration =<br />
<br />
Add to <tt>sip.conf</tt>:<br />
<br />
<pre><br />
[sipphone]<br />
type=friend<br />
host=dynamic<br />
context=from-sipphone<br />
secret=geheim<br />
insecure=invite<br />
</pre><br />
<br />
Add to <tt>extensions.conf</tt>:<br />
<br />
<pre><br />
[from-sipphone]<br />
; Here will be the dialplan rules that are relevant<br />
; when we call a number from the SIP phone.<br />
exten => 1234,1,Answer<br />
exten => 1234,n,Wait(1)<br />
exten => 1234,n,Playback(demo-thanks)<br />
exten => 1234,n,Hangup<br />
</pre><br />
<br />
Open your Asterisk console using <tt>asterisk -vvvR</tt> (may need to run as root), then:<br />
<br />
<pre><br />
yourpbx*CLI> sip reload<br />
yourpbx*CLI> dialplan reload<br />
yourpbx*CLI> sip show peers<br />
Name/username Host Dyn Forcerport ACL Port Status <br />
sipphone/sipphone (Unspecified) D N 0 Unmonitored<br />
</pre><br />
<br />
Now, configure your phone to connect to your Asterisk instance (over UDP). Watch your Asterisk log. When it connects, you will see a message. If it doesn't, use <tt>sip set debug on</tt> to find out whether you're receiving INVITE messages and see their contents.<br />
<br />
As soon as the SIP phone is connected, call 1234 on it. You will hear a thank-you message from Asterisk.<br />
<br />
= Calling smbp =<br />
<br />
The rules in your dialplan (<tt>Answer, Wait, Playback, Hangup</tt>) are <strong>applications</strong>. There are many applications that you can use during a call. To get a list of applications, open your Asterisk CLI and run:<br />
<br />
<pre><br />
yourpbx*CLI> core show applications<br />
</pre><br />
<br />
One of the applications is called <tt>Dial</tt>. You use it to forward the call to other channels, for example SIP channels. The top of <tt>sip.conf</tt> explains how to use <tt>Dial</tt> to call SIP channels. Hint: the extension rule starts with <tt>exten => 1234,n,Dial(SIP/</tt>...<br />
<br />
smbp's IP address is 192.168.178.172. Call the extension "1234" on it to receive the same message. Don't forget to reload your dialplan after changing it using <tt>dialplan reload</tt>.<br />
<br />
= Calling PSTN =<br />
<br />
smbp can forward to the public network if you authenticate to it. Claim one of the numbers on the slide. Then, add a line like this to your sip.conf:<br />
<br />
<pre><br />
register => NUMBER:PASSWORD@192.168.178.172<br />
</pre><br />
<br />
For example:<br />
<br />
<pre><br />
register => 31632271690:foobar@192.168.178.172<br />
</pre><br />
<br />
Then, tell me the password you chose and I will make sure you can connect.</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Workshop&diff=1062Workshop2013-09-16T19:24:08Z<p>SGielen: </p>
<hr />
<div>= SIP registration =<br />
<br />
Add to <tt>sip.conf</tt>:<br />
<br />
<pre><br />
[sipphone]<br />
type=friend<br />
host=dynamic<br />
context=from-sipphone<br />
secret=geheim<br />
insecure=invite<br />
</pre><br />
<br />
Add to <tt>extensions.conf</tt>:<br />
<br />
<pre><br />
[from-sipphone]<br />
; Here will be the dialplan rules that are relevant<br />
; when we call a number from the SIP phone.<br />
exten => 1234,1,Answer<br />
exten => 1234,n,Wait(1)<br />
exten => 1234,n,Playback(demo-thanks)<br />
exten => 1234,n,Hangup<br />
</pre><br />
<br />
Open your Asterisk console using <tt>asterisk -vvvR</tt> (may need to run as root), then:<br />
<br />
<pre><br />
yourpbx*CLI> sip reload<br />
yourpbx*CLI> dialplan reload<br />
yourpbx*CLI> sip show peers<br />
Name/username Host Dyn Forcerport ACL Port Status <br />
sipphone/sipphone (Unspecified) D N 0 Unmonitored<br />
</pre><br />
<br />
Now, configure your phone to connect to your Asterisk instance (over UDP). Watch your Asterisk log. When it connects, you will see a message. If it doesn't, use <tt>sip set debug on</tt> to find out whether you're receiving INVITE messages and see their contents.<br />
<br />
As soon as the SIP phone is connected, call 1234 on it. You will hear a thank-you message from Asterisk.<br />
<br />
= Calling smbp =<br />
<br />
The rules in your dialplan (<tt>Answer, Wait, Playback, Hangup</tt>) are <strong>applications</strong>. There are many applications that you can use during a call. To get a list of applications, open your Asterisk CLI and run:<br />
<br />
<pre><br />
yourpbx*CLI> core show applications<br />
</pre><br />
<br />
One of the applications is called <tt>Dial</tt>. You use it to forward the call to other channels, for example SIP channels. The top of <tt>sip.conf</tt> explains how to use <tt>Dial</tt> to call SIP channels. Hint: the extension rule starts with <tt>exten => 1234,n,Dial(SIP/</tt>...<br />
<br />
smbp's IP address is 192.168.178.170. Call the extension "1234" on it to receive the same message. Don't forget to reload your dialplan after changing it using <tt>dialplan reload</tt>.</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Workshop&diff=1061Workshop2013-09-16T18:06:04Z<p>SGielen: Start of Workshop</p>
<hr />
<div>= SIP registration =<br />
<br />
Add to <tt>sip.conf</tt>:<br />
<br />
<pre><br />
[sipphone]<br />
type=friend<br />
host=dynamic<br />
context=from-sipphone<br />
secret=geheim<br />
insecure=invite<br />
</pre><br />
<br />
Add to <tt>extensions.conf</tt>:<br />
<br />
<pre><br />
[from-sipphone]<br />
; Here will be the dialplan rules that are relevant<br />
; when we call a number from the SIP phone.<br />
exten => 1234,1,Answer<br />
exten => 1234,n,Wait(1)<br />
exten => 1234,n,Playback(demo-thanks)<br />
exten => 1234,n,Hangup<br />
</pre><br />
<br />
Open your Asterisk console using <tt>asterisk -vvvR</tt> (may need to run as root), then:<br />
<br />
<pre><br />
yourpbx*CLI> sip reload<br />
yourpbx*CLI> dialplan reload<br />
yourpbx*CLI> sip show peers<br />
Name/username Host Dyn Forcerport ACL Port Status <br />
sipphone/sipphone (Unspecified) D N 0 Unmonitored<br />
</pre><br />
<br />
Now, configure your phone to connect to your Asterisk instance (over UDP). Watch your Asterisk log. When it connects, you will see a message. If it doesn't, use <tt>sip set debug on</tt> to find out whether you're receiving INVITE messages and see their contents.<br />
<br />
As soon as the SIP phone is connected, call 1234 on it. You will hear a thank-you message from Asterisk.</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Asterisk/Instellen&diff=1060Asterisk/Instellen2013-09-15T20:07:44Z<p>SGielen: /* Een kleine extensions-tutorial */</p>
<hr />
<div>[[Category:Asterisk]] [[Category:Howto]] [[Category:DIY]]<br />
Op deze pagina wordt uitgelegd hoe je je eigen Asterisk-server opzet en interconnect met Limesco/SpeakUp. Aanvullingen en wijzigingen op deze pagina zijn welkom: deze wiki is vrij wijzigbaar door geregistreerde gebruikers. Eventuele twijfels of vragen kun je stellen op de [[Overleg:Asterisk instellen|Overlegpagina]].<br />
<br />
'''Kom je afkortingen of woorden tegen die je niet kent? Kijk dan op de [[terminologie]]-pagina!'''<br />
<br />
=De infrastructuur=<br />
<br />
[http://www.speakup.nl/ SpeakUp] heeft de infrastructuur (via [http://www.elephanttalk.com/ Elephant Talk], de [[terminologie#MVNE|MVNE]]) met het [http://www.t-mobile.nl/corporate/htdocs/page/over-t-mobile/property-management/het-netwerk-van-t-mobile.aspx T-Mobilenetwerk] zo geregeld dat alle verkeer '''vanaf''' de mobiele telefoons van SpeakUp-klanten direct uitkomt bij de [[terminologie#PBX|PBX]] bij SpeakUp. Daar zal hun Asterisk-installatie controleren of er een alternatieve [[terminologie#SIP|SIP]]-server is ingesteld voor het telefoonnummer in kwestie, en zo ja de SIP-verbinding doorsturen. Je Asterisk-server kan dan kiezen wat er met dat uitgaande gesprek gebeurt. De meest waarschijnlijke optie voor de meeste nummers is het gewoon weer terug doorsturen naar SpeakUp, die dan een route zal kiezen naar dat nummer. Zodra een PBX het gesprek accepteert, zal vanaf dan een [[terminologie#RTP|RTP]]-stream worden opgezet tussen de servers van SpeakUp en de ontvanger (jouw server, een server bij SpeakUp, of een VoIP-eindpunt) waar de gespreksdata overheen kan gaan.<br />
<br />
Op deze pagina wordt uitgelegd hoe je die eigen Asterisk-server opzet. We zullen ervoor zorgen dat gesprekken uitkomen op je server, en dan een regel definiëren waarmee je server alles terugstuurt naar SpeakUp (je PBX is daardoor 'transparant'). Daarna zorgen we ervoor dat ook inkomende gesprekken correct naar je telefoon terug komen. En daarna geven we wat voorbeelden van leuke dingen om te proberen :)<br />
<br />
=Asterisk installeren=<br />
<br />
Dit hangt natuurlijk af van je distro, maar ik heb dit onder Debian Testing geprobeerd met Asterisk 1:1.8.11.1~dfsg-1. De configuratiebestanden staan dan onder /etc/asterisk. De server zelf runt als de user "asterisk". Om een volledige console-log te krijgen heb ik <tt>logger.conf</tt> aangepast en daar onder <tt>[logfiles]</tt> een console-regel veranderd naar:<br />
<br />
<pre><br />
console => debug,notice,warning,error,verbose,dtmf,fax<br />
</pre><br />
<br />
Onder de meeste distro's zal Asterisk vanzelf gestart zijn; anders moet je 'm nu zelf even starten (bijvoorbeeld met <tt>service asterisk start</tt>). Nu kunnen we verbinden naar Asterisk, met een <tt>asterisk -R</tt> (bij een "unable to connect" even opnieuw proberen als de user waarmee asterisk runt, b.v. <tt>sudo -u asterisk asterisk -R</tt>, of als je het wel gelooft gewoon als root).<br />
<br />
<pre><br />
sjors@foo:~$ sudo asterisk -R<br />
[...]<br />
Connected to asterisk 1.8.11.1~dfsg-1 currently running on foo (pid = 8051)<br />
Verbosity is at least 3<br />
foo*CLI> core show version<br />
Asterisk 1.8.11.1~dfsg-1 built by pbuilder @ boomtime on a x86_64 running Linux on 2012-04-25 17:59:19 UTC<br />
</pre><br />
<br />
= De SIM verbinden met Asterisk =<br />
<br />
SpeakUp heeft een gateway staan die de normale [[terminologie#PLMN|PLMN]]-signalen omzet naar SIP-signalen en vice versa. Die gateway verandert iedere mobiele telefoon in een SIP-softphone die verbindt naar je Asterisk-PBX. Kies zelf voor de telefoon een gebruikersnaam, wachtwoord en als je wil een intern nummer. Gebruikersnaam mag ook gelijk zijn aan een (intern/extern) nummer, of bijvoorbeeld aan het SIM-kaartnummer. '''Pak bij interne nummers liever niet de 1xx-range: daarin zitten ook de alarmnummers (112, 144) en die zijn special-cased: ze zullen nooit uitkomen bij je PBX maar bij de alarmcentrale.'''<br />
<br />
Schrijf nu in <tt>/etc/asterisk/sip.conf</tt> de volgende softphone-definitie, waarbij je %GEBRUIKER% en %WACHTWOORD% en %NUMMER% uiteraard verandert:<br />
<br />
<pre><br />
[%NUMMER%]<br />
type=friend ; toegang op basis van authenticatie ipv. IP-adres, voor terugbellen wordt SIP-registratie gebruikt<br />
callerid="Mijn mobiele telefoon" <%NUMMER%> ; caller-ID als je uitbelt, voor in het From-veld<br />
host=dynamic ; softphone verbindt naar ons toe<br />
username=%GEBRUIKER%<br />
secret=%WACHTWOORD%<br />
context=from-sim ; context in het dialplan waarin het gesprek binnenkomt<br />
mailbox=%NUMMER%@default<br />
insecure=invite,port<br />
canreinvite=yes<br />
</pre><br />
<br />
Herlaad nu in de Asterisk-console (zie hierboven) de SIP-configuratie: <tt>sip reload</tt>. Stel indien nodig je firewall in zodat IP-adressen 193.169.138.0/23 mogen registreren op de PBX.<br />
<br />
Het daadwerkelijk instellen van de PBX voor een mobiel nummer moet SpeakUp doen. Als het goed is heeft [[Support|Limesco Support]] je om een aantal van bovenstaande gegevens gevraagd; daar kun je nu een reply op sturen. Zodra de gegevens zijn ingeregeld door SpeakUp en je zet je telefoon aan of je maakt de eerste call, zie je in je Asterisk-logs iets als:<br />
<br />
<pre><br />
NOTICE[...]: chan_sip.c:20788 handle_response_peerpoke: Peer 'nummer' is now Reachable. (150ms / 2000ms)<br />
</pre><br />
<br />
Tevens zie je de SIM staan als je het commando <tt>sip show peers</tt> uitvoert:<br />
<br />
<pre><br />
Name/username Host Dyn Forcerport ACL Port Status <br />
%NUMMER%/%GEBRUIKER% 193.169... D N 8044 Unmonitored <br />
</pre><br />
<br />
Je kunt nu vanaf de SIM bellen en dat komt op je PBX uit -- maar die calls zijn nog niet routeerbaar: er zijn nog geen instructies om oproepen vanaf die telefoon af te handelen. Je kunt dit wel alvast testen: zet met <tt>sip set debug on</tt> debugging-informatie aan, en doe een oproep vanaf de telefoon, bijvoorbeeld naar het magische nummer [[0vast0]]1234. Je zou dan in je Asterisk-console iets moeten zien als:<br />
<br />
<pre><br />
<--- SIP read from UDP:193.169.[...]:8044 ---><br />
INVITE sip:1234@[...] SIP/2.0<br />
[...]<br />
Max-Forwards: 68<br />
From: <sip:[...jouw-sip-contact...]>;tag=...<br />
To: <sip:1234@switch2.sip.speakup.nl:5060><br />
</pre><br />
<br />
Met <tt>sip set debug off</tt> zet je debugging-informatie weer uit. Krijg je bovenstaande output niet in je Asterisk-console, ondanks dat je PBX al wel is ingeregeld door SpeakUp, ga dan naar de Troubleshooting-sectie hieronder.<br />
<br />
= Asterisk verbinden met het telefoonnetwerk =<br />
<br />
In het vorige kopje verbonden we Asterisk met de SIM-kaart zo dat de SIM naar Asterisk kan bellen en Asterisk naar de SIM. In dit kopje bekijken we de externe verbinding: Asterisk moet nationale en internationale telefoonnummers op het telefoonnet kunnen bellen, en als iemand daar je telefoonnummer belt moet dat bij Asterisk uitkomen.<br />
<br />
Om calls vanuit je PBX weer het telefoonnetwerk op te kunnen routeren, vertel je Asterisk eerst dat die servers bestaan (je voegt "peer"-definities toe). Daarvoor heb je je SpeakUp-gebruiker en -wachtwoord nodig, die je van [[Support|Limesco Support]] gekregen hebt. Dat doe je als volgt in <tt>sip.conf</tt>:<br />
<br />
<pre><br />
[to-speakup](!) ; een template voor een verbinding naar speakup toe<br />
type=friend<br />
insecure=invite<br />
pedantic=no<br />
canreinvite=no<br />
nat=no<br />
port=5060<br />
context=from-speakup<br />
qualify=4000<br />
username=%TRUNKUSER%<br />
secret=%TRUNKPASS%<br />
disallow=all<br />
allow=alaw<br />
allow=ulaw<br />
allow=gsm<br />
allow=g726<br />
<br />
[speakup01](to-speakup) ; instantie van de template, voor server #1<br />
host=proxy1.sip.speakup.nl<br />
<br />
[speakup02](to-speakup) ; instantie van de template, voor server #2<br />
host=proxy2.sip.speakup.nl<br />
</pre><br />
<br />
Als je nu in je Asterisk-console <tt>sip reload</tt> uitvoert voegt Asterisk definities toe voor deze twee servers, en kun je ze vervolgens in je dialplan gebruiken. Hoe je dat doet zien we straks. Eerst bevestigen we dat de servers inderdaad zijn toegevoegd, d.m.v. <tt>sip show peers</tt>:<br />
<br />
<pre><br />
Name/username Host Dyn Forcerport ACL Port Status <br />
%NUMMER%/%GEBRUIKER% 193.169... D N 8044 Unmonitored <br />
speakup01/%TRUNKUSER% 193.169... 5060 OK (16 ms) <br />
speakup02/%TRUNKUSER% 193.169... 5060 OK (15 ms) <br />
</pre><br />
<br />
Nu komt de laatste stap in het verbinding leggen met de buitenwereld: je PBX registreren bij SpeakUp. Daarvoor is slechts één regel nodig, die je helemaal bovenaan in de <tt>[general]</tt>-sectie van <tt>sip.conf</tt> toevoegt:<br />
<br />
<pre><br />
[general]<br />
...<br />
register => %TRUNKUSER%:%TRUNKPASS%@sip.speakup.nl<br />
</pre><br />
<br />
Als je nu <tt>sip reload</tt> uitvoert, voert Asterisk een registratie uit bij SpeakUp voor je account, en daarmee je nummer. Met <tt>sip set debug on</tt> kun je precies zien hoe dat gaat (na nog een <tt>sip reload</tt>). Je kunt controleren dat het goed is gegaan met <tt>sip show registry</tt>:<br />
<br />
<pre><br />
Host dnsmgr Username Refresh State Reg.Time <br />
sip.speakup.nl:5060 N %TRUNKUSER% 105 Registered Sun, 15 Sep 2013 20:35:12<br />
1 SIP registrations.<br />
</pre><br />
<br />
= Het dialplan =<br />
<br />
We hebben nu de volgende situatie:<br />
* Asterisk kent het adres om naar je SIM te bellen<br />
* Je SIM kan naar Asterisk bellen<br />
* Asterisk kent het adres om naar het telefoonnetwerk te bellen<br />
* Het telefoonnetwerk kan naar Asterisk bellen<br />
<br />
Oftewel: Asterisk heeft controle over het telefoonverkeer. Alleen: het programma is nog niet ingesteld, dus alle oproepen zullen eindigen in een <tt>SIP/2.0 404 Not Found</tt>: Asterisk kan geen instructies vinden voor het gebelde nummer. Die instructies gaan we nu toevoegen.<br />
<br />
In de twee peer-definities die je eerder hebt toegevoegd stond allebei een regel "context": die is "from-sim" voor de definitie van je SIM-kaart en "from-speakup" voor de definitie van de SpeakUp-trunk. Die contexts zijn startpunten in het dialplan dat Asterisk gebruikt om alle gesprekken bij het juiste eindpunt te laten komen. Dat dialplan staat gedefinieerd in <tt>extensions.conf</tt>. Laten we eerst de simpelste configuratie opnemen: een oproep naar je nummer eindigt bij je telefoon; een oproep van je telefoon eindigt bij de SpeakUp-trunk. Voeg daarvoor deze regels toe in <tt>extensions.conf</tt>:<br />
<br />
<pre><br />
[from-sim]<br />
exten => _X.,1,Verbose(Call from Limesco SIM [${CALLERID(num)}] to [${EXTEN}])<br />
exten => _X.,n,Dial(SIP/speakup01/${EXTEN})<br />
<br />
[from-speakup]<br />
exten => _X.,1,Verbose(Call from SpeakUp [${CALLERID(num)}] to [${EXTEN}])<br />
; Vervang ... door de rest van je DIY-nummer:<br />
exten => 316...,2,Dial(SIP/${EXTEN})<br />
exten => _X.,2,Hangup(1)<br />
</pre><br />
<br />
Voer nu <tt>dialplan reload</tt> in in de Asterisk-console om het bestand te herladen. Pak de telefoon met je DIY-SIM en bel een bekend nummer. Je ziet dan in de Asterisk-log een melding als <tt>Call from Limesco SIM [316...] to [316...]</tt> als je dialplan goed is opgepakt. De telefoon met het nummer moet nu overgaan: als je daar opneemt, hoor je elkaar. Andersom: bel met een bekend nummer het nummer van je DIY-SIM; er verschijnt weer een melding in je log en de DIY-SIM-telefoon moet overgaan. Je hebt nu een standaardconfiguratie.<br />
<br />
Voor meer informatie kun je ook kijken naar [http://support.speakup.nl/faq/Asterisk/dialplan/sipkoppeling/ de SpeakUp-pagina over SIP-koppeling].<br />
<br />
Eventuele andere uplinks kun je op een vergelijkbare manier instellen.<br />
<br />
== Meer over het dialplan ==<br />
<br />
Asterisk laadt bij het opstarten een "dial-plan" in het geheugen. Een dialplan is een set instructies voor telefoonnummers (of ''extensions''), die Asterisk zal uitvoeren zodra één van die nummers wordt gebeld. Iedere instructie heeft een regelnummer; Asterisk zal beginnen bij regelnummer 1 van de juiste extension en regelnummers zullen in volgorde worden afgehandeld tot het eerstvolgende regelnummer niet meer bestaat. Als een telefoongesprek tegen het einde van een set instructies niet (succesvol) is doorgeschakeld, aangenomen of geweigerd, zal Asterisk zelf de juiste foutcode proberen te raden (b.v. aan de hand van een gefaalde operatie). Er bestaat een opdracht <tt>GoTo</tt> om naar een andere extension of een ander regelnummer te springen. Dit is bijvoorbeeld een correcte set instructies om een MP3'tje af te spelen en op te hangen wanneer het nummer ''300'' gebeld wordt:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,MP3Player(/tmp/Sad-Trombone.mp3)<br />
exten => 300,n,Hangup<br />
</pre><br />
<br />
Alle regels beginnen met "exten =>"; daarna volgt het telefoonnummer, het regelnummer (of "n" voor next, het vorige regelnummer plus één) en de instructie om uit te voeren. De instructies die je kunt gebruiken vind je (o.a.) in de console:<br />
<br />
<pre><br />
foo*CLI> core show applications<br />
-= Registered Asterisk Applications =-<br />
AddQueueMember: Dynamically adds queue members.<br />
[...]<br />
Zapateller: Block telemarketers with SIT.<br />
-= 176 Applications Registered =-<br />
foo*CLI> core show application Zapateller<br />
<br />
-= Info about application 'Zapateller' =- <br />
<br />
[Synopsis]<br />
Block telemarketers with SIT.<br />
[....]<br />
</pre><br />
<br />
Naast hele telefoonnummers kun je als extension ook nog patterns opgeven. Die beginnen met een underscore (_) en kunnen bepaalde characters matchen vanaf het begin (maar niet vanaf het eind). Zie voor meer informatie [http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns].<br />
<br />
Asterisk maakt in een extensionlijstje nooit vanzelf een sprong naar een regelnummer méér dan één hoger dan het huidige regelnummer. Dit werkt dus niet:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
[...]<br />
exten => 300,10,Nop<br />
exten => 300,100,HangUp<br />
</pre><br />
<br />
Om een sprong te maken, neem je een GoTo op (zie ook <tt>core show application goto</tt>). Dat kan direct naar een specifiek regelnummer, maar werkt wat overzichtelijker met labels:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,GoTo(ophangen)<br />
exten => 300,100(ophangen),HangUp<br />
</pre></div>SGielenhttps://secure.limesco.nl/w/index.php?title=Asterisk/Instellen&diff=1059Asterisk/Instellen2013-09-15T20:04:08Z<p>SGielen: </p>
<hr />
<div>[[Category:Asterisk]] [[Category:Howto]] [[Category:DIY]]<br />
Op deze pagina wordt uitgelegd hoe je je eigen Asterisk-server opzet en interconnect met Limesco/SpeakUp. Aanvullingen en wijzigingen op deze pagina zijn welkom: deze wiki is vrij wijzigbaar door geregistreerde gebruikers. Eventuele twijfels of vragen kun je stellen op de [[Overleg:Asterisk instellen|Overlegpagina]].<br />
<br />
'''Kom je afkortingen of woorden tegen die je niet kent? Kijk dan op de [[terminologie]]-pagina!'''<br />
<br />
=De infrastructuur=<br />
<br />
[http://www.speakup.nl/ SpeakUp] heeft de infrastructuur (via [http://www.elephanttalk.com/ Elephant Talk], de [[terminologie#MVNE|MVNE]]) met het [http://www.t-mobile.nl/corporate/htdocs/page/over-t-mobile/property-management/het-netwerk-van-t-mobile.aspx T-Mobilenetwerk] zo geregeld dat alle verkeer '''vanaf''' de mobiele telefoons van SpeakUp-klanten direct uitkomt bij de [[terminologie#PBX|PBX]] bij SpeakUp. Daar zal hun Asterisk-installatie controleren of er een alternatieve [[terminologie#SIP|SIP]]-server is ingesteld voor het telefoonnummer in kwestie, en zo ja de SIP-verbinding doorsturen. Je Asterisk-server kan dan kiezen wat er met dat uitgaande gesprek gebeurt. De meest waarschijnlijke optie voor de meeste nummers is het gewoon weer terug doorsturen naar SpeakUp, die dan een route zal kiezen naar dat nummer. Zodra een PBX het gesprek accepteert, zal vanaf dan een [[terminologie#RTP|RTP]]-stream worden opgezet tussen de servers van SpeakUp en de ontvanger (jouw server, een server bij SpeakUp, of een VoIP-eindpunt) waar de gespreksdata overheen kan gaan.<br />
<br />
Op deze pagina wordt uitgelegd hoe je die eigen Asterisk-server opzet. We zullen ervoor zorgen dat gesprekken uitkomen op je server, en dan een regel definiëren waarmee je server alles terugstuurt naar SpeakUp (je PBX is daardoor 'transparant'). Daarna zorgen we ervoor dat ook inkomende gesprekken correct naar je telefoon terug komen. En daarna geven we wat voorbeelden van leuke dingen om te proberen :)<br />
<br />
=Asterisk installeren=<br />
<br />
Dit hangt natuurlijk af van je distro, maar ik heb dit onder Debian Testing geprobeerd met Asterisk 1:1.8.11.1~dfsg-1. De configuratiebestanden staan dan onder /etc/asterisk. De server zelf runt als de user "asterisk". Om een volledige console-log te krijgen heb ik <tt>logger.conf</tt> aangepast en daar onder <tt>[logfiles]</tt> een console-regel veranderd naar:<br />
<br />
<pre><br />
console => debug,notice,warning,error,verbose,dtmf,fax<br />
</pre><br />
<br />
Onder de meeste distro's zal Asterisk vanzelf gestart zijn; anders moet je 'm nu zelf even starten (bijvoorbeeld met <tt>service asterisk start</tt>). Nu kunnen we verbinden naar Asterisk, met een <tt>asterisk -R</tt> (bij een "unable to connect" even opnieuw proberen als de user waarmee asterisk runt, b.v. <tt>sudo -u asterisk asterisk -R</tt>, of als je het wel gelooft gewoon als root).<br />
<br />
<pre><br />
sjors@foo:~$ sudo asterisk -R<br />
[...]<br />
Connected to asterisk 1.8.11.1~dfsg-1 currently running on foo (pid = 8051)<br />
Verbosity is at least 3<br />
foo*CLI> core show version<br />
Asterisk 1.8.11.1~dfsg-1 built by pbuilder @ boomtime on a x86_64 running Linux on 2012-04-25 17:59:19 UTC<br />
</pre><br />
<br />
= De SIM verbinden met Asterisk =<br />
<br />
SpeakUp heeft een gateway staan die de normale [[terminologie#PLMN|PLMN]]-signalen omzet naar SIP-signalen en vice versa. Die gateway verandert iedere mobiele telefoon in een SIP-softphone die verbindt naar je Asterisk-PBX. Kies zelf voor de telefoon een gebruikersnaam, wachtwoord en als je wil een intern nummer. Gebruikersnaam mag ook gelijk zijn aan een (intern/extern) nummer, of bijvoorbeeld aan het SIM-kaartnummer. '''Pak bij interne nummers liever niet de 1xx-range: daarin zitten ook de alarmnummers (112, 144) en die zijn special-cased: ze zullen nooit uitkomen bij je PBX maar bij de alarmcentrale.'''<br />
<br />
Schrijf nu in <tt>/etc/asterisk/sip.conf</tt> de volgende softphone-definitie, waarbij je %GEBRUIKER% en %WACHTWOORD% en %NUMMER% uiteraard verandert:<br />
<br />
<pre><br />
[%NUMMER%]<br />
type=friend ; toegang op basis van authenticatie ipv. IP-adres, voor terugbellen wordt SIP-registratie gebruikt<br />
callerid="Mijn mobiele telefoon" <%NUMMER%> ; caller-ID als je uitbelt, voor in het From-veld<br />
host=dynamic ; softphone verbindt naar ons toe<br />
username=%GEBRUIKER%<br />
secret=%WACHTWOORD%<br />
context=from-sim ; context in het dialplan waarin het gesprek binnenkomt<br />
mailbox=%NUMMER%@default<br />
insecure=invite,port<br />
canreinvite=yes<br />
</pre><br />
<br />
Herlaad nu in de Asterisk-console (zie hierboven) de SIP-configuratie: <tt>sip reload</tt>. Stel indien nodig je firewall in zodat IP-adressen 193.169.138.0/23 mogen registreren op de PBX.<br />
<br />
Het daadwerkelijk instellen van de PBX voor een mobiel nummer moet SpeakUp doen. Als het goed is heeft [[Support|Limesco Support]] je om een aantal van bovenstaande gegevens gevraagd; daar kun je nu een reply op sturen. Zodra de gegevens zijn ingeregeld door SpeakUp en je zet je telefoon aan of je maakt de eerste call, zie je in je Asterisk-logs iets als:<br />
<br />
<pre><br />
NOTICE[...]: chan_sip.c:20788 handle_response_peerpoke: Peer 'nummer' is now Reachable. (150ms / 2000ms)<br />
</pre><br />
<br />
Tevens zie je de SIM staan als je het commando <tt>sip show peers</tt> uitvoert:<br />
<br />
<pre><br />
Name/username Host Dyn Forcerport ACL Port Status <br />
%NUMMER%/%GEBRUIKER% 193.169... D N 8044 Unmonitored <br />
</pre><br />
<br />
Je kunt nu vanaf de SIM bellen en dat komt op je PBX uit -- maar die calls zijn nog niet routeerbaar: er zijn nog geen instructies om oproepen vanaf die telefoon af te handelen. Je kunt dit wel alvast testen: zet met <tt>sip set debug on</tt> debugging-informatie aan, en doe een oproep vanaf de telefoon, bijvoorbeeld naar het magische nummer [[0vast0]]1234. Je zou dan in je Asterisk-console iets moeten zien als:<br />
<br />
<pre><br />
<--- SIP read from UDP:193.169.[...]:8044 ---><br />
INVITE sip:1234@[...] SIP/2.0<br />
[...]<br />
Max-Forwards: 68<br />
From: <sip:[...jouw-sip-contact...]>;tag=...<br />
To: <sip:1234@switch2.sip.speakup.nl:5060><br />
</pre><br />
<br />
Met <tt>sip set debug off</tt> zet je debugging-informatie weer uit. Krijg je bovenstaande output niet in je Asterisk-console, ondanks dat je PBX al wel is ingeregeld door SpeakUp, ga dan naar de Troubleshooting-sectie hieronder.<br />
<br />
= Asterisk verbinden met het telefoonnetwerk =<br />
<br />
In het vorige kopje verbonden we Asterisk met de SIM-kaart zo dat de SIM naar Asterisk kan bellen en Asterisk naar de SIM. In dit kopje bekijken we de externe verbinding: Asterisk moet nationale en internationale telefoonnummers op het telefoonnet kunnen bellen, en als iemand daar je telefoonnummer belt moet dat bij Asterisk uitkomen.<br />
<br />
Om calls vanuit je PBX weer het telefoonnetwerk op te kunnen routeren, vertel je Asterisk eerst dat die servers bestaan (je voegt "peer"-definities toe). Daarvoor heb je je SpeakUp-gebruiker en -wachtwoord nodig, die je van [[Support|Limesco Support]] gekregen hebt. Dat doe je als volgt in <tt>sip.conf</tt>:<br />
<br />
<pre><br />
[to-speakup](!) ; een template voor een verbinding naar speakup toe<br />
type=friend<br />
insecure=invite<br />
pedantic=no<br />
canreinvite=no<br />
nat=no<br />
port=5060<br />
context=from-speakup<br />
qualify=4000<br />
username=%TRUNKUSER%<br />
secret=%TRUNKPASS%<br />
disallow=all<br />
allow=alaw<br />
allow=ulaw<br />
allow=gsm<br />
allow=g726<br />
<br />
[speakup01](to-speakup) ; instantie van de template, voor server #1<br />
host=proxy1.sip.speakup.nl<br />
<br />
[speakup02](to-speakup) ; instantie van de template, voor server #2<br />
host=proxy2.sip.speakup.nl<br />
</pre><br />
<br />
Als je nu in je Asterisk-console <tt>sip reload</tt> uitvoert voegt Asterisk definities toe voor deze twee servers, en kun je ze vervolgens in je dialplan gebruiken. Hoe je dat doet zien we straks. Eerst bevestigen we dat de servers inderdaad zijn toegevoegd, d.m.v. <tt>sip show peers</tt>:<br />
<br />
<pre><br />
Name/username Host Dyn Forcerport ACL Port Status <br />
%NUMMER%/%GEBRUIKER% 193.169... D N 8044 Unmonitored <br />
speakup01/%TRUNKUSER% 193.169... 5060 OK (16 ms) <br />
speakup02/%TRUNKUSER% 193.169... 5060 OK (15 ms) <br />
</pre><br />
<br />
Nu komt de laatste stap in het verbinding leggen met de buitenwereld: je PBX registreren bij SpeakUp. Daarvoor is slechts één regel nodig, die je helemaal bovenaan in de <tt>[general]</tt>-sectie van <tt>sip.conf</tt> toevoegt:<br />
<br />
<pre><br />
[general]<br />
...<br />
register => %TRUNKUSER%:%TRUNKPASS%@sip.speakup.nl<br />
</pre><br />
<br />
Als je nu <tt>sip reload</tt> uitvoert, voert Asterisk een registratie uit bij SpeakUp voor je account, en daarmee je nummer. Met <tt>sip set debug on</tt> kun je precies zien hoe dat gaat (na nog een <tt>sip reload</tt>). Je kunt controleren dat het goed is gegaan met <tt>sip show registry</tt>:<br />
<br />
<pre><br />
Host dnsmgr Username Refresh State Reg.Time <br />
sip.speakup.nl:5060 N %TRUNKUSER% 105 Registered Sun, 15 Sep 2013 20:35:12<br />
1 SIP registrations.<br />
</pre><br />
<br />
= Het dialplan =<br />
<br />
We hebben nu de volgende situatie:<br />
* Asterisk kent het adres om naar je SIM te bellen<br />
* Je SIM kan naar Asterisk bellen<br />
* Asterisk kent het adres om naar het telefoonnetwerk te bellen<br />
* Het telefoonnetwerk kan naar Asterisk bellen<br />
<br />
Oftewel: Asterisk heeft controle over het telefoonverkeer. Alleen: het programma is nog niet ingesteld, dus alle oproepen zullen eindigen in een <tt>SIP/2.0 404 Not Found</tt>: Asterisk kan geen instructies vinden voor het gebelde nummer. Die instructies gaan we nu toevoegen.<br />
<br />
In de twee peer-definities die je eerder hebt toegevoegd stond allebei een regel "context": die is "from-sim" voor de definitie van je SIM-kaart en "from-speakup" voor de definitie van de SpeakUp-trunk. Die contexts zijn startpunten in het dialplan dat Asterisk gebruikt om alle gesprekken bij het juiste eindpunt te laten komen. Dat dialplan staat gedefinieerd in <tt>extensions.conf</tt>. Laten we eerst de simpelste configuratie opnemen: een oproep naar je nummer eindigt bij je telefoon; een oproep van je telefoon eindigt bij de SpeakUp-trunk. Voeg daarvoor deze regels toe in <tt>extensions.conf</tt>:<br />
<br />
<pre><br />
[from-sim]<br />
exten => _X.,1,Verbose(Call from Limesco SIM [${CALLERID(num)}] to [${EXTEN}])<br />
exten => _X.,n,Dial(SIP/speakup01/${EXTEN})<br />
<br />
[from-speakup]<br />
exten => _X.,1,Verbose(Call from SpeakUp [${CALLERID(num)}] to [${EXTEN}])<br />
; Vervang ... door de rest van je DIY-nummer:<br />
exten => 316...,2,Dial(SIP/${EXTEN})<br />
exten => _X.,2,Hangup(1)<br />
</pre><br />
<br />
Voer nu <tt>dialplan reload</tt> in in de Asterisk-console om het bestand te herladen. Pak de telefoon met je DIY-SIM en bel een bekend nummer. Je ziet dan in de Asterisk-log een melding als <tt>Call from Limesco SIM [316...] to [316...]</tt> als je dialplan goed is opgepakt. De telefoon met het nummer moet nu overgaan: als je daar opneemt, hoor je elkaar. Andersom: bel met een bekend nummer het nummer van je DIY-SIM; er verschijnt weer een melding in je log en de DIY-SIM-telefoon moet overgaan. Je hebt nu een standaardconfiguratie.<br />
<br />
Voor meer informatie kun je ook kijken naar [http://support.speakup.nl/faq/Asterisk/dialplan/sipkoppeling/ de SpeakUp-pagina over SIP-koppeling].<br />
<br />
Eventuele andere uplinks kun je op een vergelijkbare manier instellen.<br />
<br />
=Een kleine extensions-tutorial=<br />
<br />
We hebben nu een Asterisk-server runnen die nog niets doet, en waar nooit naartoe verbonden zal worden. Hier volgt eerst een kleine tutorial in dialplans, zodat we er zometeen eentje kunnen schrijven.<br />
<br />
'''Waarschuwing''': Terwijl ik dit schrijf ben ik hier net twee dagen mee bezig, dus de kans is groot dat ik dingen verkeerd heb begrepen. Ik schrijf dit als een best-effort om mijn huidige begrip over te brengen. Als je zeker weet dat hier iets niet klopt, verbeter het dan alsjeblieft!<br />
<br />
Asterisk laadt bij het opstarten een "dial-plan" in het geheugen. Een dialplan is een set instructies voor een bepaald telefoonnummer (of ''extension''), die Asterisk zal uitvoeren zodra dat telefoonnummer wordt gebeld. Iedere instructie heeft een regelnummer; Asterisk zal beginnen bij regelnummer 1 van de juiste extension en regelnummers zullen in volgorde worden afgehandeld tot het eerstvolgende regelnummer niet meer bestaat. Als een telefoongesprek tegen het einde van een set instructies niet (succesvol) is doorgeschakeld, aangenomen of geweigerd, zal Asterisk zelf de juiste foutcode proberen te raden (b.v. aan de hand van een gefaalde operatie). Er bestaat een opdracht <tt>GoTo</tt> om naar een andere extension of een ander regelnummer te springen. Dit is bijvoorbeeld een correcte set instructies om een geluidje af te spelen en op te hangen bij het nummer ''300'':<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,MP3Player(/tmp/Sad-Trombone.mp3)<br />
exten => 300,n,Hangup<br />
</pre><br />
<br />
Alle regels beginnen met "exten =>" (of "exten ="); daarna volgt het telefoonnummer, daarna het regelnummer (of "n" voor next, het vorige regelnummer plus één), en daarna de instructie om uit te voeren. De instructies die je kunt gebruiken vind je (o.a.) in de console:<br />
<br />
<pre><br />
foo*CLI> core show applications<br />
-= Registered Asterisk Applications =-<br />
AddQueueMember: Dynamically adds queue members.<br />
[...]<br />
Zapateller: Block telemarketers with SIT.<br />
-= 176 Applications Registered =-<br />
foo*CLI> core show application Zapateller<br />
<br />
-= Info about application 'Zapateller' =- <br />
<br />
[Synopsis]<br />
Block telemarketers with SIT.<br />
[....]<br />
</pre><br />
<br />
Naast telefoonnummers kun je als extension ook nog patterns opgeven. Die beginnen met een underscore (_) en kunnen bepaalde characters matchen vanaf het begin (maar niet vanaf het eind). Zie voor meer informatie [http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns].<br />
<br />
Asterisk maakt in een extensionlijstje nooit vanzelf een sprong naar een regelnummer méér dan één hoger dan het huidige regelnummer. Dit werkt dus niet:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
[...]<br />
exten => 300,10,<br />
exten => 300,100,HangUp<br />
</pre><br />
<br />
Om een sprong te maken, neem je een GoTo op (zie ook <tt>core show application goto</tt>). Dat kan direct naar een specifiek regelnummer, maar werkt wat overzichtelijker met labels:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,GoTo(hangMaarOp)<br />
exten => 300,100(hangMaarOp),HangUp<br />
</pre></div>SGielenhttps://secure.limesco.nl/w/index.php?title=Asterisk/Instellen&diff=1058Asterisk/Instellen2013-09-15T18:37:16Z<p>SGielen: </p>
<hr />
<div>[[Category:Asterisk]] [[Category:Howto]] [[Category:DIY]]<br />
Op deze pagina wordt uitgelegd hoe je je eigen Asterisk-server opzet en interconnect met Limesco/SpeakUp. Aanvullingen en wijzigingen op deze pagina zijn welkom: deze wiki is vrij wijzigbaar door geregistreerde gebruikers. Eventuele twijfels of vragen kun je stellen op de [[Overleg:Asterisk instellen|Overlegpagina]].<br />
<br />
'''Kom je afkortingen of woorden tegen die je niet kent? Kijk dan op de [[terminologie]]-pagina!'''<br />
<br />
=De infrastructuur=<br />
<br />
[http://www.speakup.nl/ SpeakUp] heeft de infrastructuur (via [http://www.elephanttalk.com/ Elephant Talk], de [[terminologie#MVNE|MVNE]]) met het [http://www.t-mobile.nl/corporate/htdocs/page/over-t-mobile/property-management/het-netwerk-van-t-mobile.aspx T-Mobilenetwerk] zo geregeld dat alle verkeer '''vanaf''' de mobiele telefoons van SpeakUp-klanten direct uitkomt bij de [[terminologie#PBX|PBX]] bij SpeakUp. Daar zal hun Asterisk-installatie controleren of er een alternatieve [[terminologie#SIP|SIP]]-server is ingesteld voor het telefoonnummer in kwestie, en zo ja de SIP-verbinding doorsturen. Je Asterisk-server kan dan kiezen wat er met dat uitgaande gesprek gebeurt. De meest waarschijnlijke optie voor de meeste nummers is het gewoon weer terug doorsturen naar SpeakUp, die dan een route zal kiezen naar dat nummer. Zodra een PBX het gesprek accepteert, zal vanaf dan een [[terminologie#RTP|RTP]]-stream worden opgezet tussen de servers van SpeakUp en de ontvanger (jouw server, een server bij SpeakUp, of een VoIP-eindpunt) waar de gespreksdata overheen kan gaan.<br />
<br />
Op deze pagina wordt uitgelegd hoe je die eigen Asterisk-server opzet. We zullen ervoor zorgen dat gesprekken uitkomen op je server, en dan een regel definiëren waarmee je server alles terugstuurt naar SpeakUp (je PBX is daardoor 'transparant'). Daarna zorgen we ervoor dat ook inkomende gesprekken correct naar je telefoon terug komen. En daarna geven we wat voorbeelden van leuke dingen om te proberen :)<br />
<br />
=Asterisk installeren=<br />
<br />
Dit hangt natuurlijk af van je distro, maar ik heb dit onder Debian Testing geprobeerd met Asterisk 1:1.8.11.1~dfsg-1. De configuratiebestanden staan dan onder /etc/asterisk. De server zelf runt als de user "asterisk". Om een volledige console-log te krijgen heb ik <tt>logger.conf</tt> aangepast en daar onder <tt>[logfiles]</tt> een console-regel veranderd naar:<br />
<br />
<pre><br />
console => debug,notice,warning,error,verbose,dtmf,fax<br />
</pre><br />
<br />
Onder de meeste distro's zal Asterisk vanzelf gestart zijn; anders moet je 'm nu zelf even starten (bijvoorbeeld met <tt>service asterisk start</tt>). Nu kunnen we verbinden naar Asterisk, met een <tt>asterisk -R</tt> (bij een "unable to connect" even opnieuw proberen als de user waarmee asterisk runt, b.v. <tt>sudo -u asterisk asterisk -R</tt>, of als je het wel gelooft gewoon als root).<br />
<br />
<pre><br />
sjors@foo:~$ sudo asterisk -R<br />
[...]<br />
Connected to asterisk 1.8.11.1~dfsg-1 currently running on foo (pid = 8051)<br />
Verbosity is at least 3<br />
foo*CLI> core show version<br />
Asterisk 1.8.11.1~dfsg-1 built by pbuilder @ boomtime on a x86_64 running Linux on 2012-04-25 17:59:19 UTC<br />
</pre><br />
<br />
= De SIM verbinden met Asterisk =<br />
<br />
SpeakUp heeft een gateway staan die de normale [[terminologie#PLMN|PLMN]]-signalen omzet naar SIP-signalen en vice versa. Die gateway verandert iedere mobiele telefoon in een SIP-softphone die verbindt naar je Asterisk-PBX. Kies zelf voor de telefoon een gebruikersnaam, wachtwoord en als je wil een intern nummer. Gebruikersnaam mag ook gelijk zijn aan een (intern/extern) nummer, of bijvoorbeeld aan het SIM-kaartnummer. '''Pak bij interne nummers liever niet de 1xx-range: daarin zitten ook de alarmnummers (112, 144) en die zijn special-cased: ze zullen nooit uitkomen bij je PBX maar bij de alarmcentrale.'''<br />
<br />
Schrijf nu in <tt>/etc/asterisk/sip.conf</tt> de volgende softphone-definitie, waarbij je %GEBRUIKER% en %WACHTWOORD% en %NUMMER% uiteraard verandert:<br />
<br />
<pre><br />
[%NUMMER%]<br />
type=friend ; toegang op basis van authenticatie ipv. IP-adres, voor terugbellen wordt SIP-registratie gebruikt<br />
callerid="Mijn mobiele telefoon" <%NUMMER%> ; caller-ID als je uitbelt, voor in het From-veld<br />
host=dynamic ; softphone verbindt naar ons toe<br />
username=%GEBRUIKER%<br />
secret=%WACHTWOORD%<br />
context=from-sim ; context in het dialplan waarin het gesprek binnenkomt<br />
mailbox=%NUMMER%@default<br />
insecure=invite,port<br />
canreinvite=yes<br />
</pre><br />
<br />
Herlaad nu in de Asterisk-console (zie hierboven) de SIP-configuratie: <tt>sip reload</tt>. Stel indien nodig je firewall in zodat IP-adressen 193.169.138.0/23 mogen registreren op de PBX.<br />
<br />
Het daadwerkelijk instellen van de PBX voor een mobiel nummer moet SpeakUp doen. Als het goed is heeft [[Support|Limesco Support]] je om een aantal van bovenstaande gegevens gevraagd; daar kun je nu een reply op sturen. Zodra de gegevens zijn ingeregeld door SpeakUp en je zet je telefoon aan of je maakt de eerste call, zie je in je Asterisk-logs iets als:<br />
<br />
<pre><br />
NOTICE[...]: chan_sip.c:20788 handle_response_peerpoke: Peer 'nummer' is now Reachable. (150ms / 2000ms)<br />
</pre><br />
<br />
Tevens zie je de SIM staan als je het commando <tt>sip show peers</tt> uitvoert:<br />
<br />
<pre><br />
Name/username Host Dyn Forcerport ACL Port Status <br />
%NUMMER%/%GEBRUIKER% 193.169... D N 8044 Unmonitored <br />
</pre><br />
<br />
Je kunt nu vanaf de SIM bellen en dat komt op je PBX uit -- maar die calls zijn nog niet routeerbaar: er zijn nog geen instructies om oproepen vanaf die telefoon af te handelen. Je kunt dit wel alvast testen: zet met <tt>sip set debug on</tt> debugging-informatie aan, en doe een oproep vanaf de telefoon, bijvoorbeeld naar het magische nummer [[0vast0]]1234. Je zou dan in je Asterisk-console iets moeten zien als:<br />
<br />
<pre><br />
<--- SIP read from UDP:193.169.[...]:8044 ---><br />
INVITE sip:1234@[...] SIP/2.0<br />
[...]<br />
Max-Forwards: 68<br />
From: <sip:[...jouw-sip-contact...]>;tag=...<br />
To: <sip:1234@switch2.sip.speakup.nl:5060><br />
</pre><br />
<br />
Met <tt>sip set debug off</tt> zet je debugging-informatie weer uit. Krijg je bovenstaande output niet in je Asterisk-console, ondanks dat je PBX al wel is ingeregeld door SpeakUp, ga dan naar de Troubleshooting-sectie hieronder.<br />
<br />
= Asterisk verbinden met het telefoonnetwerk =<br />
<br />
In het vorige kopje verbonden we Asterisk met de SIM-kaart zo dat de SIM naar Asterisk kan bellen en Asterisk naar de SIM. In dit kopje bekijken we de externe verbinding: Asterisk moet nationale en internationale telefoonnummers op het telefoonnet kunnen bellen, en als iemand daar je telefoonnummer belt moet dat bij Asterisk uitkomen.<br />
<br />
Om calls vanuit je PBX weer het telefoonnetwerk op te kunnen routeren, vertel je Asterisk eerst dat die servers bestaan (je voegt "peer"-definities toe). Daarvoor heb je je SpeakUp-gebruiker en -wachtwoord nodig, die je van [[Support|Limesco Support]] gekregen hebt. Dat doe je als volgt in <tt>sip.conf</tt>:<br />
<br />
<pre><br />
[to-speakup](!) ; een template voor een verbinding naar speakup toe<br />
type=friend<br />
insecure=invite<br />
pedantic=no<br />
canreinvite=no<br />
nat=no<br />
port=5060<br />
context=from-speakup<br />
qualify=4000<br />
username=%TRUNKUSER%<br />
secret=%TRUNKPASS%<br />
disallow=all<br />
allow=alaw<br />
allow=ulaw<br />
allow=gsm<br />
allow=g726<br />
<br />
[speakup01](to-speakup) ; instantie van de template, voor server #1<br />
host=proxy1.sip.speakup.nl<br />
<br />
[speakup02](to-speakup) ; instantie van de template, voor server #2<br />
host=proxy2.sip.speakup.nl<br />
</pre><br />
<br />
Als je nu in je Asterisk-console <tt>sip reload</tt> uitvoert voegt Asterisk definities toe voor deze twee servers, en kun je ze vervolgens in je dialplan gebruiken. Hoe je dat doet zien we straks. Eerst bevestigen we dat de servers inderdaad zijn toegevoegd, d.m.v. <tt>sip show peers</tt>:<br />
<br />
<pre><br />
Name/username Host Dyn Forcerport ACL Port Status <br />
%NUMMER%/%GEBRUIKER% 193.169... D N 8044 Unmonitored <br />
speakup01/%TRUNKUSER% 193.169... 5060 OK (16 ms) <br />
speakup02/%TRUNKUSER% 193.169... 5060 OK (15 ms) <br />
</pre><br />
<br />
Nu komt de laatste stap in het verbinding leggen met de buitenwereld: je PBX registreren bij SpeakUp. Daarvoor is slechts één regel nodig, die je helemaal bovenaan in de <tt>[general]</tt>-sectie van <tt>sip.conf</tt> toevoegt:<br />
<br />
<pre><br />
[general]<br />
...<br />
register => %TRUNKUSER%:%TRUNKPASS%@sip.speakup.nl<br />
</pre><br />
<br />
Als je nu <tt>sip reload</tt> uitvoert, voert Asterisk een registratie uit bij SpeakUp voor je account, en daarmee je nummer. Met <tt>sip set debug on</tt> kun je precies zien hoe dat gaat (na nog een <tt>sip reload</tt>). Je kunt controleren dat het goed is gegaan met <tt>sip show registry</tt>:<br />
<br />
<pre><br />
Host dnsmgr Username Refresh State Reg.Time <br />
sip.speakup.nl:5060 N %TRUNKUSER% 105 Registered Sun, 15 Sep 2013 20:35:12<br />
1 SIP registrations.<br />
</pre><br />
<br />
= Het dialplan =<br />
<br />
Om nu een outbound call te doen, kun je de volgende macro definiëren in <tt>extensions.conf</tt>:<br />
<br />
<pre><br />
[to-speakup]<br />
exten = _X.,100,Verbose(Outbound call from [${CALLERID(num)}] to [${EXTEN}] via SpeakUp)<br />
exten = _X.,n,Set(CALLERID(num)=316%JENUMMER%)<br />
; exten = _X.,n,Set(CALLERID(name)=Anonymous) ; Uncommenten voor nummeronderdrukking<br />
exten = _X.,n,Macro(load-balancer,SIP/speakup01/${EXTEN}#SIP/speakup02/${EXTEN},,,)<br />
</pre><br />
<br />
De macro die in de laatste regel gebruikt wordt is [http://support.speakup.nl/faq/Asterisk/dialplan/loadbalancing/ hier] te vinden op SpeakUp's eigen website. Voor meer informatie kun je ook kijken naar [http://support.speakup.nl/faq/Asterisk/dialplan/sipkoppeling/ hun pagina over SIP-koppeling].<br />
<br />
Eventuele andere uplinks kun je op een vergelijkbare manier instellen.<br />
<br />
=Een kleine extensions-tutorial=<br />
<br />
We hebben nu een Asterisk-server runnen die nog niets doet, en waar nooit naartoe verbonden zal worden. Hier volgt eerst een kleine tutorial in dialplans, zodat we er zometeen eentje kunnen schrijven.<br />
<br />
'''Waarschuwing''': Terwijl ik dit schrijf ben ik hier net twee dagen mee bezig, dus de kans is groot dat ik dingen verkeerd heb begrepen. Ik schrijf dit als een best-effort om mijn huidige begrip over te brengen. Als je zeker weet dat hier iets niet klopt, verbeter het dan alsjeblieft!<br />
<br />
Asterisk laadt bij het opstarten een "dial-plan" in het geheugen. Een dialplan is een set instructies voor een bepaald telefoonnummer (of ''extension''), die Asterisk zal uitvoeren zodra dat telefoonnummer wordt gebeld. Iedere instructie heeft een regelnummer; Asterisk zal beginnen bij regelnummer 1 van de juiste extension en regelnummers zullen in volgorde worden afgehandeld tot het eerstvolgende regelnummer niet meer bestaat. Als een telefoongesprek tegen het einde van een set instructies niet (succesvol) is doorgeschakeld, aangenomen of geweigerd, zal Asterisk zelf de juiste foutcode proberen te raden (b.v. aan de hand van een gefaalde operatie). Er bestaat een opdracht <tt>GoTo</tt> om naar een andere extension of een ander regelnummer te springen. Dit is bijvoorbeeld een correcte set instructies om een geluidje af te spelen en op te hangen bij het nummer ''300'':<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,MP3Player(/tmp/Sad-Trombone.mp3)<br />
exten => 300,n,Hangup<br />
</pre><br />
<br />
Alle regels beginnen met "exten =>" (of "exten ="); daarna volgt het telefoonnummer, daarna het regelnummer (of "n" voor next, het vorige regelnummer plus één), en daarna de instructie om uit te voeren. De instructies die je kunt gebruiken vind je (o.a.) in de console:<br />
<br />
<pre><br />
foo*CLI> core show applications<br />
-= Registered Asterisk Applications =-<br />
AddQueueMember: Dynamically adds queue members.<br />
[...]<br />
Zapateller: Block telemarketers with SIT.<br />
-= 176 Applications Registered =-<br />
foo*CLI> core show application Zapateller<br />
<br />
-= Info about application 'Zapateller' =- <br />
<br />
[Synopsis]<br />
Block telemarketers with SIT.<br />
[....]<br />
</pre><br />
<br />
Naast telefoonnummers kun je als extension ook nog patterns opgeven. Die beginnen met een underscore (_) en kunnen bepaalde characters matchen vanaf het begin (maar niet vanaf het eind). Zie voor meer informatie [http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns].<br />
<br />
Asterisk maakt in een extensionlijstje nooit vanzelf een sprong naar een regelnummer méér dan één hoger dan het huidige regelnummer. Dit werkt dus niet:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
[...]<br />
exten => 300,10,<br />
exten => 300,100,HangUp<br />
</pre><br />
<br />
Om een sprong te maken, neem je een GoTo op (zie ook <tt>core show application goto</tt>). Dat kan direct naar een specifiek regelnummer, maar werkt wat overzichtelijker met labels:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,GoTo(hangMaarOp)<br />
exten => 300,100(hangMaarOp),HangUp<br />
</pre></div>SGielenhttps://secure.limesco.nl/w/index.php?title=Asterisk/Instellen&diff=1057Asterisk/Instellen2013-09-15T18:18:36Z<p>SGielen: </p>
<hr />
<div>[[Category:Asterisk]] [[Category:Howto]] [[Category:DIY]]<br />
Op deze pagina wordt uitgelegd hoe je je eigen Asterisk-server opzet en interconnect met Limesco/SpeakUp. Aanvullingen en wijzigingen op deze pagina zijn welkom: deze wiki is vrij wijzigbaar door geregistreerde gebruikers. Eventuele twijfels of vragen kun je stellen op de [[Overleg:Asterisk instellen|Overlegpagina]].<br />
<br />
'''Kom je afkortingen of woorden tegen die je niet kent? Kijk dan op de [[terminologie]]-pagina!'''<br />
<br />
=De infrastructuur=<br />
<br />
[http://www.speakup.nl/ SpeakUp] heeft de infrastructuur (via [http://www.elephanttalk.com/ Elephant Talk], de [[terminologie#MVNE|MVNE]]) met het [http://www.t-mobile.nl/corporate/htdocs/page/over-t-mobile/property-management/het-netwerk-van-t-mobile.aspx T-Mobilenetwerk] zo geregeld dat alle verkeer '''vanaf''' de mobiele telefoons van SpeakUp-klanten direct uitkomt bij de [[terminologie#PBX|PBX]] bij SpeakUp. Daar zal hun Asterisk-installatie controleren of er een alternatieve [[terminologie#SIP|SIP]]-server is ingesteld voor het telefoonnummer in kwestie, en zo ja de SIP-verbinding doorsturen. Je Asterisk-server kan dan kiezen wat er met dat uitgaande gesprek gebeurt. De meest waarschijnlijke optie voor de meeste nummers is het gewoon weer terug doorsturen naar SpeakUp, die dan een route zal kiezen naar dat nummer. Zodra een PBX het gesprek accepteert, zal vanaf dan een [[terminologie#RTP|RTP]]-stream worden opgezet tussen de servers van SpeakUp en de ontvanger (jouw server, een server bij SpeakUp, of een VoIP-eindpunt) waar de gespreksdata overheen kan gaan.<br />
<br />
Op deze pagina wordt uitgelegd hoe je die eigen Asterisk-server opzet. We zullen ervoor zorgen dat gesprekken uitkomen op je server, en dan een regel definiëren waarmee je server alles terugstuurt naar SpeakUp (je PBX is daardoor 'transparant'). Daarna zorgen we ervoor dat ook inkomende gesprekken correct naar je telefoon terug komen. En daarna geven we wat voorbeelden van leuke dingen om te proberen :)<br />
<br />
=Asterisk installeren=<br />
<br />
Dit hangt natuurlijk af van je distro, maar ik heb dit onder Debian Testing geprobeerd met Asterisk 1:1.8.11.1~dfsg-1. De configuratiebestanden staan dan onder /etc/asterisk. De server zelf runt als de user "asterisk". Om een volledige console-log te krijgen heb ik <tt>logger.conf</tt> aangepast en daar onder <tt>[logfiles]</tt> een console-regel veranderd naar:<br />
<br />
<pre><br />
console => debug,notice,warning,error,verbose,dtmf,fax<br />
</pre><br />
<br />
Onder de meeste distro's zal Asterisk vanzelf gestart zijn; anders moet je 'm nu zelf even starten (bijvoorbeeld met <tt>service asterisk start</tt>). Nu kunnen we verbinden naar Asterisk, met een <tt>asterisk -R</tt> (bij een "unable to connect" even opnieuw proberen als de user waarmee asterisk runt, b.v. <tt>sudo -u asterisk asterisk -R</tt>, of als je het wel gelooft gewoon als root).<br />
<br />
<pre><br />
sjors@foo:~$ sudo asterisk -R<br />
[...]<br />
Connected to asterisk 1.8.11.1~dfsg-1 currently running on foo (pid = 8051)<br />
Verbosity is at least 3<br />
foo*CLI> core show version<br />
Asterisk 1.8.11.1~dfsg-1 built by pbuilder @ boomtime on a x86_64 running Linux on 2012-04-25 17:59:19 UTC<br />
</pre><br />
<br />
= De SIM verbinden met Asterisk =<br />
<br />
SpeakUp heeft een gateway staan die de normale [[terminologie#PLMN|PLMN]]-signalen omzet naar SIP-signalen en vice versa. Die gateway verandert iedere mobiele telefoon in een SIP-softphone die verbindt naar je Asterisk-PBX. Kies zelf voor de telefoon een gebruikersnaam, wachtwoord en als je wil een intern nummer. Gebruikersnaam mag ook gelijk zijn aan een (intern/extern) nummer, of bijvoorbeeld aan het SIM-kaartnummer. '''Pak bij interne nummers liever niet de 1xx-range: daarin zitten ook de alarmnummers (112, 144) en die zijn special-cased: ze zullen nooit uitkomen bij je PBX maar bij de alarmcentrale.'''<br />
<br />
Schrijf nu in <tt>/etc/asterisk/sip.conf</tt> de volgende softphone-definitie, waarbij je %GEBRUIKER% en %WACHTWOORD% en %NUMMER% uiteraard verandert:<br />
<br />
<pre><br />
[%NUMMER%]<br />
type=friend ; toegang op basis van authenticatie ipv. IP-adres, voor terugbellen wordt SIP-registratie gebruikt<br />
callerid="Mijn mobiele telefoon" <%NUMMER%> ; caller-ID als je uitbelt, voor in het From-veld<br />
host=dynamic ; softphone verbindt naar ons toe<br />
username=%GEBRUIKER%<br />
secret=%WACHTWOORD%<br />
context=from-sim ; context in het dialplan waarin het gesprek binnenkomt<br />
mailbox=%NUMMER%@default<br />
insecure=invite,port<br />
canreinvite=yes<br />
</pre><br />
<br />
Herlaad nu in de Asterisk-console (zie hierboven) de SIP-configuratie: <tt>sip reload</tt>. Stel indien nodig je firewall in zodat IP-adressen 193.169.138.0/23 mogen registreren op de PBX.<br />
<br />
Het daadwerkelijk instellen van de PBX voor een mobiel nummer moet SpeakUp doen. Als het goed is heeft [[Support|Limesco Support]] je om een aantal van bovenstaande gegevens gevraagd; daar kun je nu een reply op sturen. Zodra de gegevens zijn ingeregeld door SpeakUp en je zet je telefoon aan of je maakt de eerste call, zie je in je Asterisk-logs iets als:<br />
<br />
<pre><br />
NOTICE[...]: chan_sip.c:20788 handle_response_peerpoke: Peer 'nummer' is now Reachable. (150ms / 2000ms)<br />
</pre><br />
<br />
Tevens zie je de SIM staan als je het commando <tt>sip show peers</tt> uitvoert:<br />
<br />
<pre><br />
Name/username Host Dyn Forcerport ACL Port Status <br />
%NUMMER%/%GEBRUIKER% 193.169... D N 8044 Unmonitored <br />
</pre><br />
<br />
Je kunt nu vanaf de SIM bellen en dat komt op je PBX uit -- maar die calls zijn nog niet routeerbaar: er zijn nog geen instructies om oproepen vanaf die telefoon af te handelen. Je kunt dit wel alvast testen: zet met <tt>sip set debug on</tt> debugging-informatie aan, en doe een oproep vanaf de telefoon, bijvoorbeeld naar het magische nummer [[0vast0]]1234. Je zou dan in je Asterisk-console iets moeten zien als:<br />
<br />
<pre><br />
<--- SIP read from UDP:193.169.[...]:8044 ---><br />
INVITE sip:1234@[...] SIP/2.0<br />
[...]<br />
Max-Forwards: 68<br />
From: <sip:[...jouw-sip-contact...]>;tag=...<br />
To: <sip:1234@switch2.sip.speakup.nl:5060><br />
</pre><br />
<br />
Met <tt>sip set debug off</tt> zet je debugging-informatie weer uit. Krijg je bovenstaande output niet in je Asterisk-console, ondanks dat je PBX al wel is ingeregeld door SpeakUp, ga dan naar de Troubleshooting-sectie hieronder.<br />
<br />
=De uplink via SpeakUp instellen=<br />
<br />
Om calls vanuit je PBX weer terug te routeren het netwerk op, via je mobiele telefoonnummer, gebruik je de aansluiting bij SpeakUp die je krijgt bij het activeren van je account. Hiervoor voeg je de volgende code toe aan <tt>sip.conf</tt>:<br />
<br />
<pre><br />
[to-speakup](!) ; een template voor een verbinding naar speakup toe<br />
type=friend<br />
insecure=invite<br />
pedantic=no<br />
canreinvite=no<br />
nat=no<br />
port=5060<br />
context=default<br />
qualify=4000<br />
username=%USERNAME%<br />
secret=%PASSWORD%<br />
disallow=all<br />
allow=alaw<br />
allow=ulaw<br />
allow=gsm<br />
allow=g726<br />
<br />
[speakup01](to-speakup) ; instantie van de template, voor server #1<br />
host=switch1.sip.speakup.nl<br />
<br />
[speakup02](to-speakup) ; instantie van de template, voor server #2<br />
host=switch2.sip.speakup.nl<br />
</pre><br />
<br />
Om nu een outbound call te doen, kun je de volgende macro definiëren in <tt>extensions.conf</tt>:<br />
<br />
<pre><br />
[to-speakup]<br />
exten = _X.,100,Verbose(Outbound call from [${CALLERID(num)}] to [${EXTEN}] via SpeakUp)<br />
exten = _X.,n,Set(CALLERID(num)=316%JENUMMER%)<br />
; exten = _X.,n,Set(CALLERID(name)=Anonymous) ; Uncommenten voor nummeronderdrukking<br />
exten = _X.,n,Macro(load-balancer,SIP/speakup01/${EXTEN}#SIP/speakup02/${EXTEN},,,)<br />
</pre><br />
<br />
De macro die in de laatste regel gebruikt wordt is [http://support.speakup.nl/faq/Asterisk/dialplan/loadbalancing/ hier] te vinden op SpeakUp's eigen website. Voor meer informatie kun je ook kijken naar [http://support.speakup.nl/faq/Asterisk/dialplan/sipkoppeling/ hun pagina over SIP-koppeling].<br />
<br />
Eventuele andere uplinks kun je op een vergelijkbare manier instellen.<br />
<br />
=Een kleine extensions-tutorial=<br />
<br />
We hebben nu een Asterisk-server runnen die nog niets doet, en waar nooit naartoe verbonden zal worden. Hier volgt eerst een kleine tutorial in dialplans, zodat we er zometeen eentje kunnen schrijven.<br />
<br />
'''Waarschuwing''': Terwijl ik dit schrijf ben ik hier net twee dagen mee bezig, dus de kans is groot dat ik dingen verkeerd heb begrepen. Ik schrijf dit als een best-effort om mijn huidige begrip over te brengen. Als je zeker weet dat hier iets niet klopt, verbeter het dan alsjeblieft!<br />
<br />
Asterisk laadt bij het opstarten een "dial-plan" in het geheugen. Een dialplan is een set instructies voor een bepaald telefoonnummer (of ''extension''), die Asterisk zal uitvoeren zodra dat telefoonnummer wordt gebeld. Iedere instructie heeft een regelnummer; Asterisk zal beginnen bij regelnummer 1 van de juiste extension en regelnummers zullen in volgorde worden afgehandeld tot het eerstvolgende regelnummer niet meer bestaat. Als een telefoongesprek tegen het einde van een set instructies niet (succesvol) is doorgeschakeld, aangenomen of geweigerd, zal Asterisk zelf de juiste foutcode proberen te raden (b.v. aan de hand van een gefaalde operatie). Er bestaat een opdracht <tt>GoTo</tt> om naar een andere extension of een ander regelnummer te springen. Dit is bijvoorbeeld een correcte set instructies om een geluidje af te spelen en op te hangen bij het nummer ''300'':<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,MP3Player(/tmp/Sad-Trombone.mp3)<br />
exten => 300,n,Hangup<br />
</pre><br />
<br />
Alle regels beginnen met "exten =>" (of "exten ="); daarna volgt het telefoonnummer, daarna het regelnummer (of "n" voor next, het vorige regelnummer plus één), en daarna de instructie om uit te voeren. De instructies die je kunt gebruiken vind je (o.a.) in de console:<br />
<br />
<pre><br />
foo*CLI> core show applications<br />
-= Registered Asterisk Applications =-<br />
AddQueueMember: Dynamically adds queue members.<br />
[...]<br />
Zapateller: Block telemarketers with SIT.<br />
-= 176 Applications Registered =-<br />
foo*CLI> core show application Zapateller<br />
<br />
-= Info about application 'Zapateller' =- <br />
<br />
[Synopsis]<br />
Block telemarketers with SIT.<br />
[....]<br />
</pre><br />
<br />
Naast telefoonnummers kun je als extension ook nog patterns opgeven. Die beginnen met een underscore (_) en kunnen bepaalde characters matchen vanaf het begin (maar niet vanaf het eind). Zie voor meer informatie [http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns].<br />
<br />
Asterisk maakt in een extensionlijstje nooit vanzelf een sprong naar een regelnummer méér dan één hoger dan het huidige regelnummer. Dit werkt dus niet:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
[...]<br />
exten => 300,10,<br />
exten => 300,100,HangUp<br />
</pre><br />
<br />
Om een sprong te maken, neem je een GoTo op (zie ook <tt>core show application goto</tt>). Dat kan direct naar een specifiek regelnummer, maar werkt wat overzichtelijker met labels:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,GoTo(hangMaarOp)<br />
exten => 300,100(hangMaarOp),HangUp<br />
</pre></div>SGielenhttps://secure.limesco.nl/w/index.php?title=Asterisk/Instellen&diff=1056Asterisk/Instellen2013-07-25T21:08:17Z<p>SGielen: Regexten en regcontext hebben alleen in specifieke situaties nut en ze worden dan voor die situaties wel uitgelegd</p>
<hr />
<div>[[Category:Asterisk]] [[Category:Howto]] [[Category:DIY]]<br />
Op deze pagina wordt uitgelegd hoe je je eigen Asterisk-server opzet en interconnect met Limesco/SpeakUp. Aanvullingen en wijzigingen op deze pagina zijn welkom: deze wiki is vrij wijzigbaar door leden. Eventuele twijfels of vragen kun je stellen op de [[Overleg:Asterisk instellen|Overlegpagina]].<br />
<br />
'''Waarschuwing''': De informatie op deze pagina is nog lang niet af. Ga er nog niet vanuit dat iets op deze pagina werkt, er kunnen nog grote wijzigingen plaatsvinden terwijl de infrastructuur zich vormt.<br />
<br />
'''Kom je afkortingen of woorden tegen die je niet kent? Kijk dan op de [[terminologie]]-pagina!'''<br />
<br />
=De infrastructuur=<br />
<br />
[http://www.speakup.nl/ SpeakUp] heeft de infrastructuur (via [http://www.elephanttalk.com/ Elephant Talk], de [[terminologie#MVNE|MVNE]]) met het [http://www.t-mobile.nl/corporate/htdocs/page/over-t-mobile/property-management/het-netwerk-van-t-mobile.aspx T-Mobilenetwerk] zo geregeld dat alle verkeer '''vanaf''' de mobiele telefoons van SpeakUp-klanten direct uitkomt bij de [[terminologie#PBX|PBX]] bij SpeakUp. Daar zal hun Asterisk-installatie controleren of er een alternatieve [[terminologie#SIP|SIP]]-server is ingesteld voor het telefoonnummer in kwestie, en zo ja de SIP-verbinding doorsturen. Je Asterisk-server kan dan kiezen wat er met dat uitgaande gesprek gebeurt. De meest waarschijnlijke optie voor de meeste nummers is het gewoon weer terug doorsturen naar SpeakUp, die dan een route zal kiezen naar dat nummer. Zodra een PBX het gesprek accepteert, zal vanaf dan een [[terminologie#RTP|RTP]]-stream worden opgezet tussen de servers van SpeakUp en de ontvanger (jouw server, een server bij SpeakUp, of een VoIP-eindpunt) waar de gespreksdata overheen kan gaan.<br />
<br />
Op deze pagina wordt uitgelegd hoe je die eigen Asterisk-server opzet. We zullen ervoor zorgen dat gesprekken uitkomen op je server, en dan een regel definiëren waarmee je server alles terugstuurt naar SpeakUp (je PBX is daardoor 'transparant'). Daarna zorgen we ervoor dat ook inkomende gesprekken correct naar je telefoon terug komen. En daarna geven we wat voorbeelden van leuke dingen om te proberen :)<br />
<br />
=Asterisk installeren=<br />
<br />
Dit hangt natuurlijk af van je distro, maar ik heb dit onder Debian Testing geprobeerd met Asterisk 1:1.8.11.1~dfsg-1. De configuratiebestanden staan dan onder /etc/asterisk. De server zelf runt als de user "asterisk". Om een volledige console-log te krijgen heb ik <tt>logger.conf</tt> aangepast en daar onder <tt>[logfiles]</tt> een console-regel veranderd naar:<br />
<br />
<pre><br />
console => debug,notice,warning,error,verbose,dtmf,fax<br />
</pre><br />
<br />
Onder de meeste distro's zal Asterisk vanzelf gestart zijn; anders moet je 'm nu zelf even starten (bijvoorbeeld met <tt>service asterisk start</tt>). Nu kunnen we verbinden naar Asterisk, met een <tt>asterisk -R</tt> (bij een "unable to connect" even opnieuw proberen als de user waarmee asterisk runt, b.v. <tt>sudo -u asterisk asterisk -R</tt>, of als je het wel gelooft gewoon als root).<br />
<br />
<pre><br />
sjors@foo:~$ sudo asterisk -R<br />
[...]<br />
Connected to asterisk 1.8.11.1~dfsg-1 currently running on foo (pid = 8051)<br />
Verbosity is at least 3<br />
foo*CLI> core show version<br />
Asterisk 1.8.11.1~dfsg-1 built by pbuilder @ boomtime on a x86_64 running Linux on 2012-04-25 17:59:19 UTC<br />
</pre><br />
<br />
=Asterisk instellen voor je mobiele nummer=<br />
<br />
SpeakUp heeft een gateway staan die de normale [[terminologie#PLMN|PLMN]]-signalen omzet naar SIP-signalen en vice versa. Die gateway verandert iedere mobiele telefoon in een SIP-softphone die verbindt naar je Asterisk-PBX. Kies zelf voor de telefoon een gebruikersnaam, wachtwoord en als je wil een intern nummer. Gebruikersnaam mag ook gelijk zijn aan een (intern/extern) nummer, of bijvoorbeeld aan het SIM-kaartnummer. '''Pak bij interne nummers liever niet de 1xx-range: daarin zitten ook de alarmnummers (112, 144) en die zijn special-cased: ze zullen nooit uitkomen bij je PBX maar bij de alarmcentrale.'''<br />
<br />
Schrijf nu in <tt>/etc/asterisk/sip.conf</tt> de volgende softphone-definitie, waarbij je %GEBRUIKER% en %WACHTWOORD% en %NUMMER% uiteraard verandert:<br />
<br />
<pre><br />
[%NUMMER%]<br />
type=friend ; toegang op basis van authenticatie ipv. IP-adres, voor terugbellen wordt SIP-registratie gebruikt<br />
callerid="Mijn mobiele telefoon" <%NUMMER%> ; caller-ID als je uitbelt, voor in het From-veld<br />
host=dynamic ; softphone verbindt naar ons toe<br />
username=%GEBRUIKER%<br />
secret=%WACHTWOORD%<br />
context=default ; context in het dialplan waarin het gesprek binnenkomt<br />
mailbox=%NUMMER%@default<br />
insecure=invite,port<br />
canreinvite=yes<br />
</pre><br />
<br />
Herlaad nu in de Asterisk-console (zie hierboven) de SIP-configuratie: <tt>sip reload</tt>. Stel indien nodig je firewall in zodat IP-adressen 193.169.138.0/23 mogen registreren op de PBX.<br />
<br />
Het daadwerkelijk instellen van de PBX voor een mobiel nummer moet SpeakUp doen. Als het goed is heeft [[Support|Limesco Support]] je om een aantal van bovenstaande gegevens gevraagd; daar kun je nu een reply op sturen. Zodra de gegevens zijn ingeregeld door SpeakUp en je zet je telefoon aan of je maakt de eerste call, zie je in je Asterisk-logs iets als:<br />
<br />
<pre><br />
NOTICE[...]: chan_sip.c:20788 handle_response_peerpoke: Peer 'nummer' is now Reachable. (150ms / 2000ms)<br />
</pre><br />
<br />
Je kunt nu vanaf de SIM bellen en dat komt op je PBX uit -- maar die calls zijn nog niet routeerbaar: er zijn verder nog geen interne nummers, geen mogelijke interne oproepen, en er is nog geen uplink terug naar externe nummers. Probeer eens 1234 te bellen, dan krijg je bij standaardconfiguratie de demo-modus van Asterisk.<br />
<br />
'''Als je alles hebt opgezet maar je krijgt "oproep geweigerd" of "reageert niet" en geen logging-informatie in Asterisk, probeer dan [[0vast0]]1234 (0827801234) te bellen. Werkt dat ook niet, ga dan naar de Troubleshooting-sectie hieronder.'''<br />
<br />
=De uplink via SpeakUp instellen=<br />
<br />
Om calls vanuit je PBX weer terug te routeren het netwerk op, via je mobiele telefoonnummer, gebruik je de aansluiting bij SpeakUp die je krijgt bij het activeren van je account. Hiervoor voeg je de volgende code toe aan <tt>sip.conf</tt>:<br />
<br />
<pre><br />
[to-speakup](!) ; een template voor een verbinding naar speakup toe<br />
type=friend<br />
insecure=invite<br />
pedantic=no<br />
canreinvite=no<br />
nat=no<br />
port=5060<br />
context=default<br />
qualify=4000<br />
username=%USERNAME%<br />
secret=%PASSWORD%<br />
disallow=all<br />
allow=alaw<br />
allow=ulaw<br />
allow=gsm<br />
allow=g726<br />
<br />
[speakup01](to-speakup) ; instantie van de template, voor server #1<br />
host=switch1.sip.speakup.nl<br />
<br />
[speakup02](to-speakup) ; instantie van de template, voor server #2<br />
host=switch2.sip.speakup.nl<br />
</pre><br />
<br />
Om nu een outbound call te doen, kun je de volgende macro definiëren in <tt>extensions.conf</tt>:<br />
<br />
<pre><br />
[to-speakup]<br />
exten = _X.,100,Verbose(Outbound call from [${CALLERID(num)}] to [${EXTEN}] via SpeakUp)<br />
exten = _X.,n,Set(CALLERID(num)=316%JENUMMER%)<br />
; exten = _X.,n,Set(CALLERID(name)=Anonymous) ; Uncommenten voor nummeronderdrukking<br />
exten = _X.,n,Macro(load-balancer,SIP/speakup01/${EXTEN}#SIP/speakup02/${EXTEN},,,)<br />
</pre><br />
<br />
De macro die in de laatste regel gebruikt wordt is [http://support.speakup.nl/faq/Asterisk/dialplan/loadbalancing/ hier] te vinden op SpeakUp's eigen website. Voor meer informatie kun je ook kijken naar [http://support.speakup.nl/faq/Asterisk/dialplan/sipkoppeling/ hun pagina over SIP-koppeling].<br />
<br />
Eventuele andere uplinks kun je op een vergelijkbare manier instellen.<br />
<br />
=Een kleine extensions-tutorial=<br />
<br />
We hebben nu een Asterisk-server runnen die nog niets doet, en waar nooit naartoe verbonden zal worden. Hier volgt eerst een kleine tutorial in dialplans, zodat we er zometeen eentje kunnen schrijven.<br />
<br />
'''Waarschuwing''': Terwijl ik dit schrijf ben ik hier net twee dagen mee bezig, dus de kans is groot dat ik dingen verkeerd heb begrepen. Ik schrijf dit als een best-effort om mijn huidige begrip over te brengen. Als je zeker weet dat hier iets niet klopt, verbeter het dan alsjeblieft!<br />
<br />
Asterisk laadt bij het opstarten een "dial-plan" in het geheugen. Een dialplan is een set instructies voor een bepaald telefoonnummer (of ''extension''), die Asterisk zal uitvoeren zodra dat telefoonnummer wordt gebeld. Iedere instructie heeft een regelnummer; Asterisk zal beginnen bij regelnummer 1 van de juiste extension en regelnummers zullen in volgorde worden afgehandeld tot het eerstvolgende regelnummer niet meer bestaat. Als een telefoongesprek tegen het einde van een set instructies niet (succesvol) is doorgeschakeld, aangenomen of geweigerd, zal Asterisk zelf de juiste foutcode proberen te raden (b.v. aan de hand van een gefaalde operatie). Er bestaat een opdracht <tt>GoTo</tt> om naar een andere extension of een ander regelnummer te springen. Dit is bijvoorbeeld een correcte set instructies om een geluidje af te spelen en op te hangen bij het nummer ''300'':<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,MP3Player(/tmp/Sad-Trombone.mp3)<br />
exten => 300,n,Hangup<br />
</pre><br />
<br />
Alle regels beginnen met "exten =>" (of "exten ="); daarna volgt het telefoonnummer, daarna het regelnummer (of "n" voor next, het vorige regelnummer plus één), en daarna de instructie om uit te voeren. De instructies die je kunt gebruiken vind je (o.a.) in de console:<br />
<br />
<pre><br />
foo*CLI> core show applications<br />
-= Registered Asterisk Applications =-<br />
AddQueueMember: Dynamically adds queue members.<br />
[...]<br />
Zapateller: Block telemarketers with SIT.<br />
-= 176 Applications Registered =-<br />
foo*CLI> core show application Zapateller<br />
<br />
-= Info about application 'Zapateller' =- <br />
<br />
[Synopsis]<br />
Block telemarketers with SIT.<br />
[....]<br />
</pre><br />
<br />
Naast telefoonnummers kun je als extension ook nog patterns opgeven. Die beginnen met een underscore (_) en kunnen bepaalde characters matchen vanaf het begin (maar niet vanaf het eind). Zie voor meer informatie [http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns].<br />
<br />
Asterisk maakt in een extensionlijstje nooit vanzelf een sprong naar een regelnummer méér dan één hoger dan het huidige regelnummer. Dit werkt dus niet:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
[...]<br />
exten => 300,10,<br />
exten => 300,100,HangUp<br />
</pre><br />
<br />
Om een sprong te maken, neem je een GoTo op (zie ook <tt>core show application goto</tt>). Dat kan direct naar een specifiek regelnummer, maar werkt wat overzichtelijker met labels:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,GoTo(hangMaarOp)<br />
exten => 300,100(hangMaarOp),HangUp<br />
</pre></div>SGielenhttps://secure.limesco.nl/w/index.php?title=Asterisk/Instellen&diff=1055Asterisk/Instellen2013-07-25T19:41:18Z<p>SGielen: /* Asterisk instellen voor je mobiele nummer */</p>
<hr />
<div>[[Category:Asterisk]] [[Category:Howto]] [[Category:DIY]]<br />
Op deze pagina wordt uitgelegd hoe je je eigen Asterisk-server opzet en interconnect met Limesco/SpeakUp. Aanvullingen en wijzigingen op deze pagina zijn welkom: deze wiki is vrij wijzigbaar door leden. Eventuele twijfels of vragen kun je stellen op de [[Overleg:Asterisk instellen|Overlegpagina]].<br />
<br />
'''Waarschuwing''': De informatie op deze pagina is nog lang niet af. Ga er nog niet vanuit dat iets op deze pagina werkt, er kunnen nog grote wijzigingen plaatsvinden terwijl de infrastructuur zich vormt.<br />
<br />
'''Kom je afkortingen of woorden tegen die je niet kent? Kijk dan op de [[terminologie]]-pagina!'''<br />
<br />
=De infrastructuur=<br />
<br />
[http://www.speakup.nl/ SpeakUp] heeft de infrastructuur (via [http://www.elephanttalk.com/ Elephant Talk], de [[terminologie#MVNE|MVNE]]) met het [http://www.t-mobile.nl/corporate/htdocs/page/over-t-mobile/property-management/het-netwerk-van-t-mobile.aspx T-Mobilenetwerk] zo geregeld dat alle verkeer '''vanaf''' de mobiele telefoons van SpeakUp-klanten direct uitkomt bij de [[terminologie#PBX|PBX]] bij SpeakUp. Daar zal hun Asterisk-installatie controleren of er een alternatieve [[terminologie#SIP|SIP]]-server is ingesteld voor het telefoonnummer in kwestie, en zo ja de SIP-verbinding doorsturen. Je Asterisk-server kan dan kiezen wat er met dat uitgaande gesprek gebeurt. De meest waarschijnlijke optie voor de meeste nummers is het gewoon weer terug doorsturen naar SpeakUp, die dan een route zal kiezen naar dat nummer. Zodra een PBX het gesprek accepteert, zal vanaf dan een [[terminologie#RTP|RTP]]-stream worden opgezet tussen de servers van SpeakUp en de ontvanger (jouw server, een server bij SpeakUp, of een VoIP-eindpunt) waar de gespreksdata overheen kan gaan.<br />
<br />
Op deze pagina wordt uitgelegd hoe je die eigen Asterisk-server opzet. We zullen ervoor zorgen dat gesprekken uitkomen op je server, en dan een regel definiëren waarmee je server alles terugstuurt naar SpeakUp (je PBX is daardoor 'transparant'). Daarna zorgen we ervoor dat ook inkomende gesprekken correct naar je telefoon terug komen. En daarna geven we wat voorbeelden van leuke dingen om te proberen :)<br />
<br />
=Asterisk installeren=<br />
<br />
Dit hangt natuurlijk af van je distro, maar ik heb dit onder Debian Testing geprobeerd met Asterisk 1:1.8.11.1~dfsg-1. De configuratiebestanden staan dan onder /etc/asterisk. De server zelf runt als de user "asterisk". Om een volledige console-log te krijgen heb ik <tt>logger.conf</tt> aangepast en daar onder <tt>[logfiles]</tt> een console-regel veranderd naar:<br />
<br />
<pre><br />
console => debug,notice,warning,error,verbose,dtmf,fax<br />
</pre><br />
<br />
Onder de meeste distro's zal Asterisk vanzelf gestart zijn; anders moet je 'm nu zelf even starten (bijvoorbeeld met <tt>service asterisk start</tt>). Nu kunnen we verbinden naar Asterisk, met een <tt>asterisk -R</tt> (bij een "unable to connect" even opnieuw proberen als de user waarmee asterisk runt, b.v. <tt>sudo -u asterisk asterisk -R</tt>, of als je het wel gelooft gewoon als root).<br />
<br />
<pre><br />
sjors@foo:~$ sudo asterisk -R<br />
[...]<br />
Connected to asterisk 1.8.11.1~dfsg-1 currently running on foo (pid = 8051)<br />
Verbosity is at least 3<br />
foo*CLI> core show version<br />
Asterisk 1.8.11.1~dfsg-1 built by pbuilder @ boomtime on a x86_64 running Linux on 2012-04-25 17:59:19 UTC<br />
</pre><br />
<br />
=Asterisk instellen voor je mobiele nummer=<br />
<br />
SpeakUp heeft een gateway staan die de normale [[terminologie#PLMN|PLMN]]-signalen omzet naar SIP-signalen en vice versa. Die gateway verandert iedere mobiele telefoon in een SIP-softphone die verbindt naar je Asterisk-PBX. Kies zelf voor de telefoon een gebruikersnaam, wachtwoord en als je wil een intern nummer. Gebruikersnaam mag ook gelijk zijn aan een (intern/extern) nummer, of bijvoorbeeld aan het SIM-kaartnummer. '''Pak bij interne nummers liever niet de 1xx-range: daarin zitten ook de alarmnummers (112, 144) en die zijn special-cased: ze zullen nooit uitkomen bij je PBX maar bij de alarmcentrale.'''<br />
<br />
Schrijf nu in <tt>/etc/asterisk/sip.conf</tt> de volgende softphone-definitie, waarbij je %GEBRUIKER% en %WACHTWOORD% en %NUMMER% uiteraard verandert:<br />
<br />
<pre><br />
[%NUMMER%]<br />
type=friend ; toegang op basis van authenticatie ipv. IP-adres, voor terugbellen wordt SIP-registratie gebruikt<br />
callerid="Mijn mobiele telefoon" <%NUMMER%> ; caller-ID als je uitbelt, voor in het From-veld<br />
host=dynamic ; softphone verbindt naar ons toe<br />
username=%GEBRUIKER%<br />
secret=%WACHTWOORD%<br />
context=default ; context in het dialplan waarin het gesprek binnenkomt<br />
mailbox=%NUMMER%@default<br />
regcontext=default<br />
regexten=%NUMMER%<br />
insecure=invite,port<br />
canreinvite=yes<br />
</pre><br />
<br />
Herlaad nu in de Asterisk-console (zie hierboven) de SIP-configuratie: <tt>sip reload</tt>. Stel indien nodig je firewall in zodat IP-adressen 193.169.138.0/23 mogen registreren op de PBX.<br />
<br />
Het daadwerkelijk instellen van de PBX voor een mobiel nummer moet SpeakUp doen. Als het goed is heeft [[Support|Limesco Support]] je om een aantal van bovenstaande gegevens gevraagd; daar kun je nu een reply op sturen. Zodra de gegevens zijn ingeregeld door SpeakUp en je zet je telefoon aan of je maakt de eerste call, zie je in je Asterisk-logs iets als:<br />
<br />
<pre><br />
NOTICE[...]: chan_sip.c:20788 handle_response_peerpoke: Peer 'nummer' is now Reachable. (150ms / 2000ms)<br />
</pre><br />
<br />
Je kunt nu vanaf de SIM bellen en dat komt op je PBX uit -- maar die calls zijn nog niet routeerbaar: er zijn verder nog geen interne nummers, geen mogelijke interne oproepen, en er is nog geen uplink terug naar externe nummers. Probeer eens 1234 te bellen, dan krijg je bij standaardconfiguratie de demo-modus van Asterisk.<br />
<br />
'''Als je alles hebt opgezet maar je krijgt "oproep geweigerd" of "reageert niet" en geen logging-informatie in Asterisk, probeer dan [[0vast0]]1234 (0827801234) te bellen. Werkt dat ook niet, ga dan naar de Troubleshooting-sectie hieronder.'''<br />
<br />
=De uplink via SpeakUp instellen=<br />
<br />
Om calls vanuit je PBX weer terug te routeren het netwerk op, via je mobiele telefoonnummer, gebruik je de aansluiting bij SpeakUp die je krijgt bij het activeren van je account. Hiervoor voeg je de volgende code toe aan <tt>sip.conf</tt>:<br />
<br />
<pre><br />
[to-speakup](!) ; een template voor een verbinding naar speakup toe<br />
type=friend<br />
insecure=invite<br />
pedantic=no<br />
canreinvite=no<br />
nat=no<br />
port=5060<br />
context=default<br />
qualify=4000<br />
username=%USERNAME%<br />
secret=%PASSWORD%<br />
disallow=all<br />
allow=alaw<br />
allow=ulaw<br />
allow=gsm<br />
allow=g726<br />
<br />
[speakup01](to-speakup) ; instantie van de template, voor server #1<br />
host=switch1.sip.speakup.nl<br />
<br />
[speakup02](to-speakup) ; instantie van de template, voor server #2<br />
host=switch2.sip.speakup.nl<br />
</pre><br />
<br />
Om nu een outbound call te doen, kun je de volgende macro definiëren in <tt>extensions.conf</tt>:<br />
<br />
<pre><br />
[to-speakup]<br />
exten = _X.,100,Verbose(Outbound call from [${CALLERID(num)}] to [${EXTEN}] via SpeakUp)<br />
exten = _X.,n,Set(CALLERID(num)=316%JENUMMER%)<br />
; exten = _X.,n,Set(CALLERID(name)=Anonymous) ; Uncommenten voor nummeronderdrukking<br />
exten = _X.,n,Macro(load-balancer,SIP/speakup01/${EXTEN}#SIP/speakup02/${EXTEN},,,)<br />
</pre><br />
<br />
De macro die in de laatste regel gebruikt wordt is [http://support.speakup.nl/faq/Asterisk/dialplan/loadbalancing/ hier] te vinden op SpeakUp's eigen website. Voor meer informatie kun je ook kijken naar [http://support.speakup.nl/faq/Asterisk/dialplan/sipkoppeling/ hun pagina over SIP-koppeling].<br />
<br />
Eventuele andere uplinks kun je op een vergelijkbare manier instellen.<br />
<br />
=Een kleine extensions-tutorial=<br />
<br />
We hebben nu een Asterisk-server runnen die nog niets doet, en waar nooit naartoe verbonden zal worden. Hier volgt eerst een kleine tutorial in dialplans, zodat we er zometeen eentje kunnen schrijven.<br />
<br />
'''Waarschuwing''': Terwijl ik dit schrijf ben ik hier net twee dagen mee bezig, dus de kans is groot dat ik dingen verkeerd heb begrepen. Ik schrijf dit als een best-effort om mijn huidige begrip over te brengen. Als je zeker weet dat hier iets niet klopt, verbeter het dan alsjeblieft!<br />
<br />
Asterisk laadt bij het opstarten een "dial-plan" in het geheugen. Een dialplan is een set instructies voor een bepaald telefoonnummer (of ''extension''), die Asterisk zal uitvoeren zodra dat telefoonnummer wordt gebeld. Iedere instructie heeft een regelnummer; Asterisk zal beginnen bij regelnummer 1 van de juiste extension en regelnummers zullen in volgorde worden afgehandeld tot het eerstvolgende regelnummer niet meer bestaat. Als een telefoongesprek tegen het einde van een set instructies niet (succesvol) is doorgeschakeld, aangenomen of geweigerd, zal Asterisk zelf de juiste foutcode proberen te raden (b.v. aan de hand van een gefaalde operatie). Er bestaat een opdracht <tt>GoTo</tt> om naar een andere extension of een ander regelnummer te springen. Dit is bijvoorbeeld een correcte set instructies om een geluidje af te spelen en op te hangen bij het nummer ''300'':<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,MP3Player(/tmp/Sad-Trombone.mp3)<br />
exten => 300,n,Hangup<br />
</pre><br />
<br />
Alle regels beginnen met "exten =>" (of "exten ="); daarna volgt het telefoonnummer, daarna het regelnummer (of "n" voor next, het vorige regelnummer plus één), en daarna de instructie om uit te voeren. De instructies die je kunt gebruiken vind je (o.a.) in de console:<br />
<br />
<pre><br />
foo*CLI> core show applications<br />
-= Registered Asterisk Applications =-<br />
AddQueueMember: Dynamically adds queue members.<br />
[...]<br />
Zapateller: Block telemarketers with SIT.<br />
-= 176 Applications Registered =-<br />
foo*CLI> core show application Zapateller<br />
<br />
-= Info about application 'Zapateller' =- <br />
<br />
[Synopsis]<br />
Block telemarketers with SIT.<br />
[....]<br />
</pre><br />
<br />
Naast telefoonnummers kun je als extension ook nog patterns opgeven. Die beginnen met een underscore (_) en kunnen bepaalde characters matchen vanaf het begin (maar niet vanaf het eind). Zie voor meer informatie [http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns].<br />
<br />
Asterisk maakt in een extensionlijstje nooit vanzelf een sprong naar een regelnummer méér dan één hoger dan het huidige regelnummer. Dit werkt dus niet:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
[...]<br />
exten => 300,10,<br />
exten => 300,100,HangUp<br />
</pre><br />
<br />
Om een sprong te maken, neem je een GoTo op (zie ook <tt>core show application goto</tt>). Dat kan direct naar een specifiek regelnummer, maar werkt wat overzichtelijker met labels:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,GoTo(hangMaarOp)<br />
exten => 300,100(hangMaarOp),HangUp<br />
</pre></div>SGielenhttps://secure.limesco.nl/w/index.php?title=Beveiliging&diff=1033Beveiliging2013-04-06T09:07:02Z<p>SGielen: Huidige beveiliging van de administratie</p>
<hr />
<div>Deze pagina bevat informatie over de beveiliging van de Limesco-infrastructuur, om toetsing mogelijk te maken.<br />
<br />
De centrale Limesco-administratie wordt bijgehouden door [https://github.com/limesco/cserv CServ], een Java-applicatie die een REST-interface aanbiedt. CServ gebruikt MongoDB voor data-opslag. De machine waar CServ op draait staat bij één van de directieleden thuis -- dit was een bewuste keuze om de kosten van een dedicated server te voorkomen, zonder de risico's van een virtualisatieprovider.<br />
<br />
De machine draait Debian Wheezy en staat achter een firewall die direct verkeer van het Internet naar die server onmogelijk maakt. Zijn disk is versleuteld en wordt ontsleuteld door het handmatig invoeren van een passphrase tijdens boot. Het bereiken van de machine vanaf het Internet gaat in twee stappen: verbinden via SSH met de firewall, en daarna naar de juiste machine. Voor beide verbindingen is een SSH-key vereist waar ook een passphrase op staat. Binnen fysiek bereik is een wachtwoord voor het WPA2-netwerk vereist, of toegang tot een ethernetkabel; daarna is wederom een SSH-key met passphrase vereist voor het leggen van een verbinding. Er is een item op een TODO-list om directe verbinding met de CServ-machine ook binnen het fysieke netwerk onmogelijk te maken; verbinding maken zou dan slechts nog mogelijk zijn door een OpenVPN-tunnel, ongeacht de plek waarvan vandaan verbonden wordt. Ook na het maken van een SSH-verbinding zijn nog wachtwoorden nodig om te escaleren naar de juiste privileges binnen het UNIX-systeem en CServ zelf.<br />
<br />
Backups van de database worden op dit moment nog handmatig gemaakt: er wordt een tarball gemaakt van de Mongo-database, die wordt met PGP versleuteld tegen de keys van Mark, Gerdriaan en Sjors en offsite neergezet.</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Getting_started&diff=1028Getting started2013-02-28T16:09:22Z<p>SGielen: Support-emailadres fixen</p>
<hr />
<div>Je inschrijving bij Limesco is voltooid. Je hebt een SIM ontvangen, waarop een nummer is geactiveerd (al dan niet tijdelijk, in afwachting van een portering). Wat nu?<br />
<br />
* Als je een data-abonnement hebt afgesloten, moet je op je telefoon nog de juiste APN instellen: [[Telefooninstellingen]]<br />
* Als je voor Limesco Do-It-Yourself bent gegaan, moet je nog je PBX instellen, bijv. bij [[Asterisk/Instellen|Asterisk Instellen]] of [[FreeSWITCH/Instellen|FreeSWITCH Instellen]]<br />
* Vragen, opmerkingen of suggesties? Stuur een mailtje naar [mailto:support@limesco.nl support@limesco.nl] :)</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Asterisk/Instellen&diff=1027Asterisk/Instellen2013-02-20T15:46:36Z<p>SGielen: /* Asterisk instellen voor je mobiele nummer */</p>
<hr />
<div>[[Category:Asterisk]] [[Category:Howto]] [[Category:DIY]]<br />
Op deze pagina wordt uitgelegd hoe je je eigen Asterisk-server opzet en interconnect met Limesco/SpeakUp. Aanvullingen en wijzigingen op deze pagina zijn welkom: deze wiki is vrij wijzigbaar door leden. Eventuele twijfels of vragen kun je stellen op de [[Overleg:Asterisk instellen|Overlegpagina]].<br />
<br />
'''Waarschuwing''': De informatie op deze pagina is nog lang niet af. Ga er nog niet vanuit dat iets op deze pagina werkt, er kunnen nog grote wijzigingen plaatsvinden terwijl de infrastructuur zich vormt.<br />
<br />
'''Kom je afkortingen of woorden tegen die je niet kent? Kijk dan op de [[terminologie]]-pagina!'''<br />
<br />
=De infrastructuur=<br />
<br />
[http://www.speakup.nl/ SpeakUp] heeft de infrastructuur (via [http://www.elephanttalk.com/ Elephant Talk], de [[terminologie#MVNE|MVNE]]) met het [http://www.t-mobile.nl/corporate/htdocs/page/over-t-mobile/property-management/het-netwerk-van-t-mobile.aspx T-Mobilenetwerk] zo geregeld dat alle verkeer '''vanaf''' de mobiele telefoons van SpeakUp-klanten direct uitkomt bij de [[terminologie#PBX|PBX]] bij SpeakUp. Daar zal hun Asterisk-installatie controleren of er een alternatieve [[terminologie#SIP|SIP]]-server is ingesteld voor het telefoonnummer in kwestie, en zo ja de SIP-verbinding doorsturen. Je Asterisk-server kan dan kiezen wat er met dat uitgaande gesprek gebeurt. De meest waarschijnlijke optie voor de meeste nummers is het gewoon weer terug doorsturen naar SpeakUp, die dan een route zal kiezen naar dat nummer. Zodra een PBX het gesprek accepteert, zal vanaf dan een [[terminologie#RTP|RTP]]-stream worden opgezet tussen de servers van SpeakUp en de ontvanger (jouw server, een server bij SpeakUp, of een VoIP-eindpunt) waar de gespreksdata overheen kan gaan.<br />
<br />
Op deze pagina wordt uitgelegd hoe je die eigen Asterisk-server opzet. We zullen ervoor zorgen dat gesprekken uitkomen op je server, en dan een regel definiëren waarmee je server alles terugstuurt naar SpeakUp (je PBX is daardoor 'transparant'). Daarna zorgen we ervoor dat ook inkomende gesprekken correct naar je telefoon terug komen. En daarna geven we wat voorbeelden van leuke dingen om te proberen :)<br />
<br />
=Asterisk installeren=<br />
<br />
Dit hangt natuurlijk af van je distro, maar ik heb dit onder Debian Testing geprobeerd met Asterisk 1:1.8.11.1~dfsg-1. De configuratiebestanden staan dan onder /etc/asterisk. De server zelf runt als de user "asterisk". Om een volledige console-log te krijgen heb ik <tt>logger.conf</tt> aangepast en daar onder <tt>[logfiles]</tt> een console-regel veranderd naar:<br />
<br />
<pre><br />
console => debug,notice,warning,error,verbose,dtmf,fax<br />
</pre><br />
<br />
Onder de meeste distro's zal Asterisk vanzelf gestart zijn; anders moet je 'm nu zelf even starten (bijvoorbeeld met <tt>service asterisk start</tt>). Nu kunnen we verbinden naar Asterisk, met een <tt>asterisk -R</tt> (bij een "unable to connect" even opnieuw proberen als de user waarmee asterisk runt, b.v. <tt>sudo -u asterisk asterisk -R</tt>, of als je het wel gelooft gewoon als root).<br />
<br />
<pre><br />
sjors@foo:~$ sudo asterisk -R<br />
[...]<br />
Connected to asterisk 1.8.11.1~dfsg-1 currently running on foo (pid = 8051)<br />
Verbosity is at least 3<br />
foo*CLI> core show version<br />
Asterisk 1.8.11.1~dfsg-1 built by pbuilder @ boomtime on a x86_64 running Linux on 2012-04-25 17:59:19 UTC<br />
</pre><br />
<br />
=Asterisk instellen voor je mobiele nummer=<br />
<br />
SpeakUp heeft een gateway staan die de normale [[terminologie#PLMN|PLMN]]-signalen omzet naar SIP-signalen en vice versa. Die gateway verandert iedere mobiele telefoon in een SIP-client die verbindt naar je Asterisk-machine. Kies zelf voor de telefoon een gebruikersnaam, wachtwoord en als je wil een intern nummer. Gebruikersnaam mag ook gelijk zijn aan een intern nummer, en je mag ook simpelweg zijn externe nummer gebruiken. De eerste telefoon bij mij had als gebruikersnaam "speakup" en als intern nummer "300", maar je mag dus ook als gebruikersnaam en intern nummer "31612345678" pakken. '''Pak bij interne nummers liever niet de 1xx-range: daarin zitten ook de alarmnummers (112, 144) en die zijn special-cased: ze zullen nooit uitkomen bij je PBX maar bij de alarmcentrale.'''<br />
<br />
Schrijf nu in <tt>/etc/asterisk/sip.conf</tt> de volgende regels, waarbij je %GEBRUIKER% en %WACHTWOORD% en %NUMMER% uiteraard verandert:<br />
<br />
<pre><br />
[%NUMMER%]<br />
type=friend<br />
callerid="Mijn mobiele telefoon" <%NUMMER%> ; SIP-naam als je uitbelt<br />
host=dynamic ; verbindt altijd naar ons toe, want ip-adres is niet constant<br />
username=%GEBRUIKER%<br />
secret=%WACHTWOORD%<br />
context=default<br />
mailbox=%NUMMER%@default<br />
regcontext=default<br />
regexten=%NUMMER%<br />
insecure=invite,port<br />
canreinvite=yes<br />
</pre><br />
<br />
Herlaad nu in de Asterisk-console (zie hierboven) de SIP-configuratie: <tt>sip reload</tt>. Stel indien nodig je firewall in zodat IP-adressen 193.169.138.0/23 mogen registreren op de PBX.<br />
<br />
Het daadwerkelijk instellen van de PBX voor een mobiel nummer moet SpeakUp doen. Als het goed is heeft [[Support|Limesco Support]] je om een aantal van bovenstaande gegevens gevraagd; daar kun je nu een reply op sturen. Zodra de gegevens zijn ingesteld krijg je een mailtje en komen alle oproepen vanaf de telefoon dus uit bij je SIP-server. Ze zijn alleen nog niet routeerbaar: er zijn verder nog geen interne nummers, geen mogelijke interne oproepen, en er is nog geen uplink terug naar externe nummers.<br />
<br />
Je kunt dit wel alvast testen: zodra de PBX is ingesteld en de SIP-configuratie voor je mobiele telefoon (hierboven) is correct, kan je telefoon zich via SIP aanmelden op je server. Als je de telefoon aanzet / de eerste call maakt, zou de Asterisk-server iets moeten loggen als:<br />
<br />
<pre><br />
NOTICE[...]: chan_sip.c:20788 handle_response_peerpoke: Peer 'nummer' is now Reachable. (150ms / 2000ms)<br />
</pre><br />
<br />
Nu komen calls vanaf je telefoon uit bij je server. Asterisk heeft standaard een demo-modus, die je kunt bereiken door (zodra alles hierboven goed is ingesteld) op je mobiele telefoon 1234 te bellen. '''Als je alles hebt opgezet maar je krijgt "oproep geweigerd" of "reageert niet" en geen logging-informatie in Asterisk, probeer dan [[0vast0]]1234 (0827801234) te bellen. Werkt dat ook niet, ga dan naar de Troubleshooting-sectie hieronder.'''<br />
<br />
=De uplink via SpeakUp instellen=<br />
<br />
Om calls vanuit je PBX weer terug te routeren het netwerk op, via je mobiele telefoonnummer, gebruik je de aansluiting bij SpeakUp die je krijgt bij het activeren van je account. Hiervoor voeg je de volgende code toe aan <tt>sip.conf</tt>:<br />
<br />
<pre><br />
[to-speakup](!) ; een template voor een verbinding naar speakup toe<br />
type=friend<br />
insecure=invite<br />
pedantic=no<br />
canreinvite=no<br />
nat=no<br />
port=5060<br />
context=default<br />
qualify=4000<br />
username=%USERNAME%<br />
secret=%PASSWORD%<br />
disallow=all<br />
allow=alaw<br />
allow=ulaw<br />
allow=gsm<br />
allow=g726<br />
<br />
[speakup01](to-speakup) ; instantie van de template, voor server #1<br />
host=switch1.sip.speakup.nl<br />
<br />
[speakup02](to-speakup) ; instantie van de template, voor server #2<br />
host=switch2.sip.speakup.nl<br />
</pre><br />
<br />
Om nu een outbound call te doen, kun je de volgende macro definiëren in <tt>extensions.conf</tt>:<br />
<br />
<pre><br />
[to-speakup]<br />
exten = _X.,100,Verbose(Outbound call from [${CALLERID(num)}] to [${EXTEN}] via SpeakUp)<br />
exten = _X.,n,Set(CALLERID(num)=316%JENUMMER%)<br />
; exten = _X.,n,Set(CALLERID(name)=Anonymous) ; Uncommenten voor nummeronderdrukking<br />
exten = _X.,n,Macro(load-balancer,SIP/speakup01/${EXTEN}#SIP/speakup02/${EXTEN},,,)<br />
</pre><br />
<br />
De macro die in de laatste regel gebruikt wordt is [http://support.speakup.nl/faq/Asterisk/dialplan/loadbalancing/ hier] te vinden op SpeakUp's eigen website. Voor meer informatie kun je ook kijken naar [http://support.speakup.nl/faq/Asterisk/dialplan/sipkoppeling/ hun pagina over SIP-koppeling].<br />
<br />
Eventuele andere uplinks kun je op een vergelijkbare manier instellen.<br />
<br />
=Een kleine extensions-tutorial=<br />
<br />
We hebben nu een Asterisk-server runnen die nog niets doet, en waar nooit naartoe verbonden zal worden. Hier volgt eerst een kleine tutorial in dialplans, zodat we er zometeen eentje kunnen schrijven.<br />
<br />
'''Waarschuwing''': Terwijl ik dit schrijf ben ik hier net twee dagen mee bezig, dus de kans is groot dat ik dingen verkeerd heb begrepen. Ik schrijf dit als een best-effort om mijn huidige begrip over te brengen. Als je zeker weet dat hier iets niet klopt, verbeter het dan alsjeblieft!<br />
<br />
Asterisk laadt bij het opstarten een "dial-plan" in het geheugen. Een dialplan is een set instructies voor een bepaald telefoonnummer (of ''extension''), die Asterisk zal uitvoeren zodra dat telefoonnummer wordt gebeld. Iedere instructie heeft een regelnummer; Asterisk zal beginnen bij regelnummer 1 van de juiste extension en regelnummers zullen in volgorde worden afgehandeld tot het eerstvolgende regelnummer niet meer bestaat. Als een telefoongesprek tegen het einde van een set instructies niet (succesvol) is doorgeschakeld, aangenomen of geweigerd, zal Asterisk zelf de juiste foutcode proberen te raden (b.v. aan de hand van een gefaalde operatie). Er bestaat een opdracht <tt>GoTo</tt> om naar een andere extension of een ander regelnummer te springen. Dit is bijvoorbeeld een correcte set instructies om een geluidje af te spelen en op te hangen bij het nummer ''300'':<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,MP3Player(/tmp/Sad-Trombone.mp3)<br />
exten => 300,n,Hangup<br />
</pre><br />
<br />
Alle regels beginnen met "exten =>" (of "exten ="); daarna volgt het telefoonnummer, daarna het regelnummer (of "n" voor next, het vorige regelnummer plus één), en daarna de instructie om uit te voeren. De instructies die je kunt gebruiken vind je (o.a.) in de console:<br />
<br />
<pre><br />
foo*CLI> core show applications<br />
-= Registered Asterisk Applications =-<br />
AddQueueMember: Dynamically adds queue members.<br />
[...]<br />
Zapateller: Block telemarketers with SIT.<br />
-= 176 Applications Registered =-<br />
foo*CLI> core show application Zapateller<br />
<br />
-= Info about application 'Zapateller' =- <br />
<br />
[Synopsis]<br />
Block telemarketers with SIT.<br />
[....]<br />
</pre><br />
<br />
Naast telefoonnummers kun je als extension ook nog patterns opgeven. Die beginnen met een underscore (_) en kunnen bepaalde characters matchen vanaf het begin (maar niet vanaf het eind). Zie voor meer informatie [http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns].<br />
<br />
Asterisk maakt in een extensionlijstje nooit vanzelf een sprong naar een regelnummer méér dan één hoger dan het huidige regelnummer. Dit werkt dus niet:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
[...]<br />
exten => 300,10,<br />
exten => 300,100,HangUp<br />
</pre><br />
<br />
Om een sprong te maken, neem je een GoTo op (zie ook <tt>core show application goto</tt>). Dat kan direct naar een specifiek regelnummer, maar werkt wat overzichtelijker met labels:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,GoTo(hangMaarOp)<br />
exten => 300,100(hangMaarOp),HangUp<br />
</pre></div>SGielenhttps://secure.limesco.nl/w/index.php?title=Asterisk/Instellen&diff=1026Asterisk/Instellen2013-02-20T15:23:10Z<p>SGielen: /* Asterisk instellen voor je mobiele nummer */</p>
<hr />
<div>[[Category:Asterisk]] [[Category:Howto]] [[Category:DIY]]<br />
Op deze pagina wordt uitgelegd hoe je je eigen Asterisk-server opzet en interconnect met Limesco/SpeakUp. Aanvullingen en wijzigingen op deze pagina zijn welkom: deze wiki is vrij wijzigbaar door leden. Eventuele twijfels of vragen kun je stellen op de [[Overleg:Asterisk instellen|Overlegpagina]].<br />
<br />
'''Waarschuwing''': De informatie op deze pagina is nog lang niet af. Ga er nog niet vanuit dat iets op deze pagina werkt, er kunnen nog grote wijzigingen plaatsvinden terwijl de infrastructuur zich vormt.<br />
<br />
'''Kom je afkortingen of woorden tegen die je niet kent? Kijk dan op de [[terminologie]]-pagina!'''<br />
<br />
=De infrastructuur=<br />
<br />
[http://www.speakup.nl/ SpeakUp] heeft de infrastructuur (via [http://www.elephanttalk.com/ Elephant Talk], de [[terminologie#MVNE|MVNE]]) met het [http://www.t-mobile.nl/corporate/htdocs/page/over-t-mobile/property-management/het-netwerk-van-t-mobile.aspx T-Mobilenetwerk] zo geregeld dat alle verkeer '''vanaf''' de mobiele telefoons van SpeakUp-klanten direct uitkomt bij de [[terminologie#PBX|PBX]] bij SpeakUp. Daar zal hun Asterisk-installatie controleren of er een alternatieve [[terminologie#SIP|SIP]]-server is ingesteld voor het telefoonnummer in kwestie, en zo ja de SIP-verbinding doorsturen. Je Asterisk-server kan dan kiezen wat er met dat uitgaande gesprek gebeurt. De meest waarschijnlijke optie voor de meeste nummers is het gewoon weer terug doorsturen naar SpeakUp, die dan een route zal kiezen naar dat nummer. Zodra een PBX het gesprek accepteert, zal vanaf dan een [[terminologie#RTP|RTP]]-stream worden opgezet tussen de servers van SpeakUp en de ontvanger (jouw server, een server bij SpeakUp, of een VoIP-eindpunt) waar de gespreksdata overheen kan gaan.<br />
<br />
Op deze pagina wordt uitgelegd hoe je die eigen Asterisk-server opzet. We zullen ervoor zorgen dat gesprekken uitkomen op je server, en dan een regel definiëren waarmee je server alles terugstuurt naar SpeakUp (je PBX is daardoor 'transparant'). Daarna zorgen we ervoor dat ook inkomende gesprekken correct naar je telefoon terug komen. En daarna geven we wat voorbeelden van leuke dingen om te proberen :)<br />
<br />
=Asterisk installeren=<br />
<br />
Dit hangt natuurlijk af van je distro, maar ik heb dit onder Debian Testing geprobeerd met Asterisk 1:1.8.11.1~dfsg-1. De configuratiebestanden staan dan onder /etc/asterisk. De server zelf runt als de user "asterisk". Om een volledige console-log te krijgen heb ik <tt>logger.conf</tt> aangepast en daar onder <tt>[logfiles]</tt> een console-regel veranderd naar:<br />
<br />
<pre><br />
console => debug,notice,warning,error,verbose,dtmf,fax<br />
</pre><br />
<br />
Onder de meeste distro's zal Asterisk vanzelf gestart zijn; anders moet je 'm nu zelf even starten (bijvoorbeeld met <tt>service asterisk start</tt>). Nu kunnen we verbinden naar Asterisk, met een <tt>asterisk -R</tt> (bij een "unable to connect" even opnieuw proberen als de user waarmee asterisk runt, b.v. <tt>sudo -u asterisk asterisk -R</tt>, of als je het wel gelooft gewoon als root).<br />
<br />
<pre><br />
sjors@foo:~$ sudo asterisk -R<br />
[...]<br />
Connected to asterisk 1.8.11.1~dfsg-1 currently running on foo (pid = 8051)<br />
Verbosity is at least 3<br />
foo*CLI> core show version<br />
Asterisk 1.8.11.1~dfsg-1 built by pbuilder @ boomtime on a x86_64 running Linux on 2012-04-25 17:59:19 UTC<br />
</pre><br />
<br />
=Asterisk instellen voor je mobiele nummer=<br />
<br />
SpeakUp heeft een gateway staan die de normale [[terminologie#PLMN|PLMN]]-signalen omzet naar SIP-signalen en vice versa. Die gateway verandert iedere mobiele telefoon in een SIP-client die verbindt naar je Asterisk-machine. Kies zelf voor de telefoon een gebruikersnaam, wachtwoord en als je wil een intern nummer. Gebruikersnaam mag ook gelijk zijn aan een intern nummer, en je mag ook simpelweg zijn externe nummer gebruiken. De eerste telefoon bij mij had als gebruikersnaam "speakup" en als intern nummer "300", maar je mag dus ook als gebruikersnaam en intern nummer "31612345678" pakken. '''Pak bij interne nummers liever niet de 1xx-range: daarin zitten ook de alarmnummers (112, 144) en die zijn special-cased: ze zullen nooit uitkomen bij je PBX maar bij de alarmcentrale.'''<br />
<br />
Schrijf nu in <tt>/etc/asterisk/sip.conf</tt> de volgende regels, waarbij je %GEBRUIKER% en %WACHTWOORD% en %NUMMER% uiteraard verandert:<br />
<br />
<pre><br />
[%NUMMER%]<br />
type=friend<br />
callerid="Mijn mobiele telefoon" <%NUMMER%> ; SIP-naam als je uitbelt<br />
host=dynamic ; verbindt altijd naar ons toe, want ip-adres is niet constant<br />
username=%GEBRUIKER%<br />
secret=%WACHTWOORD%<br />
context=default<br />
mailbox=%NUMMER%@default<br />
regcontext=default<br />
regexten=%NUMMER%<br />
insecure=invite,port<br />
canreinvite=yes<br />
</pre><br />
<br />
Herlaad nu in de Asterisk-console (zie hierboven) de SIP-configuratie: <tt>sip reload</tt>. Stel indien nodig je firewall in zodat IP-adressen 193.169.138.0/23 mogen registreren op de PBX.<br />
<br />
Het daadwerkelijk instellen van de PBX voor een mobiel nummer moet SpeakUp doen. Daarvoor hebben we binnenkort een [[API's|API]]. Die API direct toegankelijk maken voor leden staat op de [[Actiepunten Limesco B.V.|actiepuntenlijst]] van de B.V. Zodra dit is ingesteld, komen alle oproepen vanaf de telefoon dus uit bij je SIP-server. Ze zijn alleen nog niet routeerbaar: er zijn verder nog geen interne nummers, geen mogelijke interne oproepen, en er is nog geen uplink terug naar externe nummers.<br />
<br />
Je kunt dit wel alvast testen: zodra de PBX is ingesteld en de SIP-configuratie voor je mobiele telefoon (hierboven) is correct, kan je telefoon zich via SIP aanmelden op je server. Als je de telefoon aanzet / de eerste call maakt, zou de Asterisk-server iets moeten loggen als:<br />
<br />
<pre><br />
NOTICE[...]: chan_sip.c:20788 handle_response_peerpoke: Peer 'nummer' is now Reachable. (150ms / 2000ms)<br />
</pre><br />
<br />
Nu komen calls vanaf je telefoon uit bij je server. Asterisk heeft standaard een demo-modus, die je kunt bereiken door (zodra alles hierboven goed is ingesteld) op je mobiele telefoon 1234 te bellen. '''Als je alles hebt opgezet maar je krijgt "oproep geweigerd" of "reageert niet" en geen logging-informatie in Asterisk, probeer dan [[0vast0]]1234 (0827801234) te bellen. Werkt dat ook niet, ga dan naar de Troubleshooting-sectie hieronder.'''<br />
<br />
=De uplink via SpeakUp instellen=<br />
<br />
Om calls vanuit je PBX weer terug te routeren het netwerk op, via je mobiele telefoonnummer, gebruik je de aansluiting bij SpeakUp die je krijgt bij het activeren van je account. Hiervoor voeg je de volgende code toe aan <tt>sip.conf</tt>:<br />
<br />
<pre><br />
[to-speakup](!) ; een template voor een verbinding naar speakup toe<br />
type=friend<br />
insecure=invite<br />
pedantic=no<br />
canreinvite=no<br />
nat=no<br />
port=5060<br />
context=default<br />
qualify=4000<br />
username=%USERNAME%<br />
secret=%PASSWORD%<br />
disallow=all<br />
allow=alaw<br />
allow=ulaw<br />
allow=gsm<br />
allow=g726<br />
<br />
[speakup01](to-speakup) ; instantie van de template, voor server #1<br />
host=switch1.sip.speakup.nl<br />
<br />
[speakup02](to-speakup) ; instantie van de template, voor server #2<br />
host=switch2.sip.speakup.nl<br />
</pre><br />
<br />
Om nu een outbound call te doen, kun je de volgende macro definiëren in <tt>extensions.conf</tt>:<br />
<br />
<pre><br />
[to-speakup]<br />
exten = _X.,100,Verbose(Outbound call from [${CALLERID(num)}] to [${EXTEN}] via SpeakUp)<br />
exten = _X.,n,Set(CALLERID(num)=316%JENUMMER%)<br />
; exten = _X.,n,Set(CALLERID(name)=Anonymous) ; Uncommenten voor nummeronderdrukking<br />
exten = _X.,n,Macro(load-balancer,SIP/speakup01/${EXTEN}#SIP/speakup02/${EXTEN},,,)<br />
</pre><br />
<br />
De macro die in de laatste regel gebruikt wordt is [http://support.speakup.nl/faq/Asterisk/dialplan/loadbalancing/ hier] te vinden op SpeakUp's eigen website. Voor meer informatie kun je ook kijken naar [http://support.speakup.nl/faq/Asterisk/dialplan/sipkoppeling/ hun pagina over SIP-koppeling].<br />
<br />
Eventuele andere uplinks kun je op een vergelijkbare manier instellen.<br />
<br />
=Een kleine extensions-tutorial=<br />
<br />
We hebben nu een Asterisk-server runnen die nog niets doet, en waar nooit naartoe verbonden zal worden. Hier volgt eerst een kleine tutorial in dialplans, zodat we er zometeen eentje kunnen schrijven.<br />
<br />
'''Waarschuwing''': Terwijl ik dit schrijf ben ik hier net twee dagen mee bezig, dus de kans is groot dat ik dingen verkeerd heb begrepen. Ik schrijf dit als een best-effort om mijn huidige begrip over te brengen. Als je zeker weet dat hier iets niet klopt, verbeter het dan alsjeblieft!<br />
<br />
Asterisk laadt bij het opstarten een "dial-plan" in het geheugen. Een dialplan is een set instructies voor een bepaald telefoonnummer (of ''extension''), die Asterisk zal uitvoeren zodra dat telefoonnummer wordt gebeld. Iedere instructie heeft een regelnummer; Asterisk zal beginnen bij regelnummer 1 van de juiste extension en regelnummers zullen in volgorde worden afgehandeld tot het eerstvolgende regelnummer niet meer bestaat. Als een telefoongesprek tegen het einde van een set instructies niet (succesvol) is doorgeschakeld, aangenomen of geweigerd, zal Asterisk zelf de juiste foutcode proberen te raden (b.v. aan de hand van een gefaalde operatie). Er bestaat een opdracht <tt>GoTo</tt> om naar een andere extension of een ander regelnummer te springen. Dit is bijvoorbeeld een correcte set instructies om een geluidje af te spelen en op te hangen bij het nummer ''300'':<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,MP3Player(/tmp/Sad-Trombone.mp3)<br />
exten => 300,n,Hangup<br />
</pre><br />
<br />
Alle regels beginnen met "exten =>" (of "exten ="); daarna volgt het telefoonnummer, daarna het regelnummer (of "n" voor next, het vorige regelnummer plus één), en daarna de instructie om uit te voeren. De instructies die je kunt gebruiken vind je (o.a.) in de console:<br />
<br />
<pre><br />
foo*CLI> core show applications<br />
-= Registered Asterisk Applications =-<br />
AddQueueMember: Dynamically adds queue members.<br />
[...]<br />
Zapateller: Block telemarketers with SIT.<br />
-= 176 Applications Registered =-<br />
foo*CLI> core show application Zapateller<br />
<br />
-= Info about application 'Zapateller' =- <br />
<br />
[Synopsis]<br />
Block telemarketers with SIT.<br />
[....]<br />
</pre><br />
<br />
Naast telefoonnummers kun je als extension ook nog patterns opgeven. Die beginnen met een underscore (_) en kunnen bepaalde characters matchen vanaf het begin (maar niet vanaf het eind). Zie voor meer informatie [http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns].<br />
<br />
Asterisk maakt in een extensionlijstje nooit vanzelf een sprong naar een regelnummer méér dan één hoger dan het huidige regelnummer. Dit werkt dus niet:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
[...]<br />
exten => 300,10,<br />
exten => 300,100,HangUp<br />
</pre><br />
<br />
Om een sprong te maken, neem je een GoTo op (zie ook <tt>core show application goto</tt>). Dat kan direct naar een specifiek regelnummer, maar werkt wat overzichtelijker met labels:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,GoTo(hangMaarOp)<br />
exten => 300,100(hangMaarOp),HangUp<br />
</pre></div>SGielenhttps://secure.limesco.nl/w/index.php?title=Asterisk/Instellen&diff=1025Asterisk/Instellen2013-02-20T15:21:14Z<p>SGielen: Extensions-tutorial naar onderen verplaatsen</p>
<hr />
<div>[[Category:Asterisk]] [[Category:Howto]] [[Category:DIY]]<br />
Op deze pagina wordt uitgelegd hoe je je eigen Asterisk-server opzet en interconnect met Limesco/SpeakUp. Aanvullingen en wijzigingen op deze pagina zijn welkom: deze wiki is vrij wijzigbaar door leden. Eventuele twijfels of vragen kun je stellen op de [[Overleg:Asterisk instellen|Overlegpagina]].<br />
<br />
'''Waarschuwing''': De informatie op deze pagina is nog lang niet af. Ga er nog niet vanuit dat iets op deze pagina werkt, er kunnen nog grote wijzigingen plaatsvinden terwijl de infrastructuur zich vormt.<br />
<br />
'''Kom je afkortingen of woorden tegen die je niet kent? Kijk dan op de [[terminologie]]-pagina!'''<br />
<br />
=De infrastructuur=<br />
<br />
[http://www.speakup.nl/ SpeakUp] heeft de infrastructuur (via [http://www.elephanttalk.com/ Elephant Talk], de [[terminologie#MVNE|MVNE]]) met het [http://www.t-mobile.nl/corporate/htdocs/page/over-t-mobile/property-management/het-netwerk-van-t-mobile.aspx T-Mobilenetwerk] zo geregeld dat alle verkeer '''vanaf''' de mobiele telefoons van SpeakUp-klanten direct uitkomt bij de [[terminologie#PBX|PBX]] bij SpeakUp. Daar zal hun Asterisk-installatie controleren of er een alternatieve [[terminologie#SIP|SIP]]-server is ingesteld voor het telefoonnummer in kwestie, en zo ja de SIP-verbinding doorsturen. Je Asterisk-server kan dan kiezen wat er met dat uitgaande gesprek gebeurt. De meest waarschijnlijke optie voor de meeste nummers is het gewoon weer terug doorsturen naar SpeakUp, die dan een route zal kiezen naar dat nummer. Zodra een PBX het gesprek accepteert, zal vanaf dan een [[terminologie#RTP|RTP]]-stream worden opgezet tussen de servers van SpeakUp en de ontvanger (jouw server, een server bij SpeakUp, of een VoIP-eindpunt) waar de gespreksdata overheen kan gaan.<br />
<br />
Op deze pagina wordt uitgelegd hoe je die eigen Asterisk-server opzet. We zullen ervoor zorgen dat gesprekken uitkomen op je server, en dan een regel definiëren waarmee je server alles terugstuurt naar SpeakUp (je PBX is daardoor 'transparant'). Daarna zorgen we ervoor dat ook inkomende gesprekken correct naar je telefoon terug komen. En daarna geven we wat voorbeelden van leuke dingen om te proberen :)<br />
<br />
=Asterisk installeren=<br />
<br />
Dit hangt natuurlijk af van je distro, maar ik heb dit onder Debian Testing geprobeerd met Asterisk 1:1.8.11.1~dfsg-1. De configuratiebestanden staan dan onder /etc/asterisk. De server zelf runt als de user "asterisk". Om een volledige console-log te krijgen heb ik <tt>logger.conf</tt> aangepast en daar onder <tt>[logfiles]</tt> een console-regel veranderd naar:<br />
<br />
<pre><br />
console => debug,notice,warning,error,verbose,dtmf,fax<br />
</pre><br />
<br />
Onder de meeste distro's zal Asterisk vanzelf gestart zijn; anders moet je 'm nu zelf even starten (bijvoorbeeld met <tt>service asterisk start</tt>). Nu kunnen we verbinden naar Asterisk, met een <tt>asterisk -R</tt> (bij een "unable to connect" even opnieuw proberen als de user waarmee asterisk runt, b.v. <tt>sudo -u asterisk asterisk -R</tt>, of als je het wel gelooft gewoon als root).<br />
<br />
<pre><br />
sjors@foo:~$ sudo asterisk -R<br />
[...]<br />
Connected to asterisk 1.8.11.1~dfsg-1 currently running on foo (pid = 8051)<br />
Verbosity is at least 3<br />
foo*CLI> core show version<br />
Asterisk 1.8.11.1~dfsg-1 built by pbuilder @ boomtime on a x86_64 running Linux on 2012-04-25 17:59:19 UTC<br />
</pre><br />
<br />
=Asterisk instellen voor je mobiele nummer=<br />
<br />
SpeakUp heeft een gateway staan die de normale [[terminologie#PLMN|PLMN]]-signalen omzet naar SIP-signalen en vice versa. Die gateway verandert iedere mobiele telefoon in een SIP-client die verbindt naar je Asterisk-machine. Kies voor de telefoon een gebruikersnaam, wachtwoord en als je wil een intern nummer. Gebruikersnaam mag ook gelijk zijn aan een intern nummer, en je mag ook simpelweg zijn externe nummer gebruiken. De eerste telefoon bij mij had als gebruikersnaam "speakup" en als intern nummer "300", maar je mag dus ook als gebruikersnaam en intern nummer "31612345678" pakken. '''Pak bij interne nummers liever niet de 1xx-range: daarin zitten ook de alarmnummers (112, 144) en die zijn special-cased: ze zullen nooit uitkomen bij je PBX maar bij de alarmcentrale.'''<br />
<br />
Schrijf nu in <tt>/etc/asterisk/sip.conf</tt> de volgende regels, waarbij je %GEBRUIKER% en %WACHTWOORD% en %NUMMER% uiteraard verandert:<br />
<br />
<pre><br />
[%NUMMER%]<br />
type=friend<br />
callerid="Mijn mobiele telefoon" <%NUMMER%> ; SIP-naam als je uitbelt<br />
host=dynamic ; verbindt altijd naar ons toe, want ip-adres is niet constant<br />
username=%GEBRUIKER%<br />
secret=%WACHTWOORD%<br />
context=default<br />
mailbox=%NUMMER%@default<br />
regcontext=default<br />
regexten=%NUMMER%<br />
insecure=invite,port<br />
canreinvite=yes<br />
</pre><br />
<br />
Herlaad nu in de Asterisk-console (zie hierboven) de SIP-configuratie: <tt>sip reload</tt>. Stel indien nodig je firewall in zodat IP-adressen 193.169.138.0/23 mogen registreren op de PBX.<br />
<br />
Het daadwerkelijk instellen van de PBX voor een mobiel nummer moet SpeakUp doen. Daarvoor hebben we binnenkort een [[API's|API]]. Die API direct toegankelijk maken voor leden staat op de [[Actiepunten Limesco B.V.|actiepuntenlijst]] van de B.V. Zodra dit is ingesteld, komen alle oproepen vanaf de telefoon dus uit bij je SIP-server. Ze zijn alleen nog niet routeerbaar: er zijn verder nog geen interne nummers, geen mogelijke interne oproepen, en er is nog geen uplink terug naar externe nummers.<br />
<br />
Je kunt dit wel alvast testen: zodra de PBX is ingesteld en de SIP-configuratie voor je mobiele telefoon (hierboven) is correct, kan je telefoon zich via SIP aanmelden op je server. Als je de telefoon aanzet / de eerste call maakt, zou de Asterisk-server iets moeten loggen als:<br />
<br />
<pre><br />
NOTICE[...]: chan_sip.c:20788 handle_response_peerpoke: Peer 'nummer' is now Reachable. (150ms / 2000ms)<br />
</pre><br />
<br />
Nu komen calls vanaf je telefoon uit bij je server. Asterisk heeft standaard een demo-modus, die je kunt bereiken door (zodra alles hierboven goed is ingesteld) op je mobiele telefoon 1234 te bellen. '''Als je alles hebt opgezet maar je krijgt "oproep geweigerd" of "reageert niet" en geen logging-informatie in Asterisk, probeer dan [[0vast0]]1234 (0827801234) te bellen. Werkt dat ook niet, ga dan naar de Troubleshooting-sectie hieronder.'''<br />
<br />
=De uplink via SpeakUp instellen=<br />
<br />
Om calls vanuit je PBX weer terug te routeren het netwerk op, via je mobiele telefoonnummer, gebruik je de aansluiting bij SpeakUp die je krijgt bij het activeren van je account. Hiervoor voeg je de volgende code toe aan <tt>sip.conf</tt>:<br />
<br />
<pre><br />
[to-speakup](!) ; een template voor een verbinding naar speakup toe<br />
type=friend<br />
insecure=invite<br />
pedantic=no<br />
canreinvite=no<br />
nat=no<br />
port=5060<br />
context=default<br />
qualify=4000<br />
username=%USERNAME%<br />
secret=%PASSWORD%<br />
disallow=all<br />
allow=alaw<br />
allow=ulaw<br />
allow=gsm<br />
allow=g726<br />
<br />
[speakup01](to-speakup) ; instantie van de template, voor server #1<br />
host=switch1.sip.speakup.nl<br />
<br />
[speakup02](to-speakup) ; instantie van de template, voor server #2<br />
host=switch2.sip.speakup.nl<br />
</pre><br />
<br />
Om nu een outbound call te doen, kun je de volgende macro definiëren in <tt>extensions.conf</tt>:<br />
<br />
<pre><br />
[to-speakup]<br />
exten = _X.,100,Verbose(Outbound call from [${CALLERID(num)}] to [${EXTEN}] via SpeakUp)<br />
exten = _X.,n,Set(CALLERID(num)=316%JENUMMER%)<br />
; exten = _X.,n,Set(CALLERID(name)=Anonymous) ; Uncommenten voor nummeronderdrukking<br />
exten = _X.,n,Macro(load-balancer,SIP/speakup01/${EXTEN}#SIP/speakup02/${EXTEN},,,)<br />
</pre><br />
<br />
De macro die in de laatste regel gebruikt wordt is [http://support.speakup.nl/faq/Asterisk/dialplan/loadbalancing/ hier] te vinden op SpeakUp's eigen website. Voor meer informatie kun je ook kijken naar [http://support.speakup.nl/faq/Asterisk/dialplan/sipkoppeling/ hun pagina over SIP-koppeling].<br />
<br />
Eventuele andere uplinks kun je op een vergelijkbare manier instellen.<br />
<br />
=Een kleine extensions-tutorial=<br />
<br />
We hebben nu een Asterisk-server runnen die nog niets doet, en waar nooit naartoe verbonden zal worden. Hier volgt eerst een kleine tutorial in dialplans, zodat we er zometeen eentje kunnen schrijven.<br />
<br />
'''Waarschuwing''': Terwijl ik dit schrijf ben ik hier net twee dagen mee bezig, dus de kans is groot dat ik dingen verkeerd heb begrepen. Ik schrijf dit als een best-effort om mijn huidige begrip over te brengen. Als je zeker weet dat hier iets niet klopt, verbeter het dan alsjeblieft!<br />
<br />
Asterisk laadt bij het opstarten een "dial-plan" in het geheugen. Een dialplan is een set instructies voor een bepaald telefoonnummer (of ''extension''), die Asterisk zal uitvoeren zodra dat telefoonnummer wordt gebeld. Iedere instructie heeft een regelnummer; Asterisk zal beginnen bij regelnummer 1 van de juiste extension en regelnummers zullen in volgorde worden afgehandeld tot het eerstvolgende regelnummer niet meer bestaat. Als een telefoongesprek tegen het einde van een set instructies niet (succesvol) is doorgeschakeld, aangenomen of geweigerd, zal Asterisk zelf de juiste foutcode proberen te raden (b.v. aan de hand van een gefaalde operatie). Er bestaat een opdracht <tt>GoTo</tt> om naar een andere extension of een ander regelnummer te springen. Dit is bijvoorbeeld een correcte set instructies om een geluidje af te spelen en op te hangen bij het nummer ''300'':<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,MP3Player(/tmp/Sad-Trombone.mp3)<br />
exten => 300,n,Hangup<br />
</pre><br />
<br />
Alle regels beginnen met "exten =>" (of "exten ="); daarna volgt het telefoonnummer, daarna het regelnummer (of "n" voor next, het vorige regelnummer plus één), en daarna de instructie om uit te voeren. De instructies die je kunt gebruiken vind je (o.a.) in de console:<br />
<br />
<pre><br />
foo*CLI> core show applications<br />
-= Registered Asterisk Applications =-<br />
AddQueueMember: Dynamically adds queue members.<br />
[...]<br />
Zapateller: Block telemarketers with SIT.<br />
-= 176 Applications Registered =-<br />
foo*CLI> core show application Zapateller<br />
<br />
-= Info about application 'Zapateller' =- <br />
<br />
[Synopsis]<br />
Block telemarketers with SIT.<br />
[....]<br />
</pre><br />
<br />
Naast telefoonnummers kun je als extension ook nog patterns opgeven. Die beginnen met een underscore (_) en kunnen bepaalde characters matchen vanaf het begin (maar niet vanaf het eind). Zie voor meer informatie [http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns http://www.voip-info.org/wiki/view/Asterisk+Dialplan+Patterns].<br />
<br />
Asterisk maakt in een extensionlijstje nooit vanzelf een sprong naar een regelnummer méér dan één hoger dan het huidige regelnummer. Dit werkt dus niet:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
[...]<br />
exten => 300,10,<br />
exten => 300,100,HangUp<br />
</pre><br />
<br />
Om een sprong te maken, neem je een GoTo op (zie ook <tt>core show application goto</tt>). Dat kan direct naar een specifiek regelnummer, maar werkt wat overzichtelijker met labels:<br />
<br />
<pre><br />
exten => 300,1,Answer<br />
exten => 300,n,GoTo(hangMaarOp)<br />
exten => 300,100(hangMaarOp),HangUp<br />
</pre></div>SGielenhttps://secure.limesco.nl/w/index.php?title=internetinstellingen&diff=1024internetinstellingen2013-02-20T13:01:10Z<p>SGielen: iPhonegebruikers</p>
<hr />
<div>== APN ==<br />
<br />
De APN voor de 500 mb-bundel is <tt>silver.internet.spmb.data</tt>. De APN voor de 2000mb-bundel is <tt>platinum.internet.spmb.data</tt>. iPhone-gebruikers kunnen via Wifi surfen naar deze pagina en de instellingen downloaden voor de [http://www.speakup.nl/images/SPUPsilver.mobileconfig/ 500 mb-bundel] of de [http://www.speakup.nl/images/SPUPsilver.mobileconfig/ 2000 mb-bundel].</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Support-infrastructuur&diff=1023Support-infrastructuur2013-02-18T12:27:36Z<p>SGielen: /* Mails sturen bij reminders */</p>
<hr />
<div>Support@ is sinds het begin bemand geweest door Sjors, Gerdriaan en Mark, waarbij Sjors de meeste mails afhandelde. Omdat puur e-mail gebruiken tracken lastiger maakt, en er wel eens voor zorgde dat Sjors en Gerdriaan tegelijkertijd een antwoord stuurden, zijn we begin 2013 gaan kijken naar een ticketingsysteem. We hebben geëxperimenteerd met [http://bestpractical.com/rt/ Request Tracker] en hebben besloten dat we dat systeem als implementatie gaan gebruiken voor support-tickets.<br />
<br />
We hadden verschillende eisen voor dit systeem:<br />
<br />
# Het moet duidelijk zijn wie een ticket behandelt (eigenaar & claimfunctionaliteit)<br />
# We moeten wel alle tickets in kunnen zien, ongeacht eigenaar<br />
# Het systeem moet mailnotificaties sturen als er interessante dingen gebeuren<br />
# Alle communicatie in een ticket moet in 1 overzicht zichtbaar zijn<br />
# We willen extra properties kunnen zetten op een ticket, zodat een mail automatisch interessante informatie verzamelt (accountnaam, SIM-gegevens, eventuele SpeakUp-ticketnummers)<br />
# Tickets moeten via een commandline-interface in te zien en te wijzigen zijn<br />
# Voortgang van tickets moet snel zichtbaar zijn<br />
# Er moet een systeem voor reminders zijn, bijv. "over 2 dagen nog eens kijken hoe het staat" of "moet maximaal over 3 dagen opgelost zijn"<br />
# Dat systeem voor reminders moet ons ook kunnen e-mailen<br />
# We moeten vanaf de commandline mensen e-mail kunnen sturen, zo dat replies automatisch in dezelfde ticket komen<br />
<br />
Het bleek dat Request Tracker dit allemaal kon, of gemakkelijk aan te vullen was zodat het dit kon. Op deze pagina beschrijf ik hoe we de boel hebben geïmplementeerd, voor het geval we het nog eens moeten doen en in de hoop dat het nuttig is voor anderen.<br />
<br />
== Installatie ==<br />
<br />
De Request Tracker-installatie draait op de Debian-machine <tt>api.limesco.nl</tt>. Installatie op Debian is zo simpel als <tt>apt-get install request-tracker4</tt>. Tijdens de installatie wordt gevraagd om de naam van de Request Tracker-instance (de <tt>rtname</tt>); die wordt bijvoorbeeld gebruikt voor de subject tag in mailtjes. In ons geval is dat simpelweg <tt>Limesco</tt>.<br />
<br />
Request Tracker gaat uitgevoerd worden als de user <tt>www-data</tt> omdat er niets anders als de <tt>www-data</tt>-gebruiker uitgevoerd wordt. Zouden er al bestaande services gebruikmaken van die user, dan zouden we de voorkeur hebben een aparte gebruiker aan te maken voor RT. Op de vraag "Handle RT_SiteConfig.pm permissions?" antwoorden we nu dus ja. De databaseconfiguratie kan ook automatisch worden gedaan ("Yes") en voor het initial root password kiezen we een lang, onraadbaar wachtwoord. Zodra RT is geïnstalleerd maken we een setje accounts voor mensen; de root-account wordt dan alleen nog gebruikt voor geautomatiseerde scripts.<br />
<br />
Het instellen van Request Tracker zelf gaat via <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt>, daar staat het volgende:<br />
<br />
<pre><br />
# THE BASICS:<br />
<br />
Set($rtname, 'Limesco');<br />
Set($Organization, 'Limesco');<br />
<br />
Set($CorrespondAddress , 'support@limesco.nl');<br />
Set($CommentAddress , 'support-comment@rt.limesco.nl');<br />
<br />
# THE WEBSERVER:<br />
<br />
Set($WebPath , "/rt");<br />
Set($WebBaseURL , "https://api.limesco.nl");<br />
Set($WebPort, 443);<br />
Set($WebDomain, "api.limesco.nl");<br />
</pre><br />
<br />
Om deze configuratie bij te werken, voeren we <tt>update-rt-siteconfig-4</tt> uit.<br />
<br />
== Configuratie website ==<br />
<br />
Op <tt>api.limesco.nl</tt> gebruiken we nginx, een snelle lichte webserver met CGI-support. Om nginx en Request Tracker samen te laten werken is de package <tt>rt4-fcgi</tt> nodig. Die installeert een <tt>/etc/init.d/rt4-fcgi</tt> die Request Tracker via FastCGI bereikbaar maakt, en een <tt>/usr/share/doc/rt4-fcgi/examples/request-tracker4.conf</tt> die de interface naar Nginx maakt. Die<br />
interface gebruiken wij als opzetje voor de configuratie in nginx, die RT alleen bereikbaar maakt via SSL:<br />
<br />
<pre><br />
server {<br />
listen 443;<br />
server_name api.limesco.nl;<br />
<br />
root /var/www;<br />
index index.html index.htm;<br />
<br />
ssl on;<br />
ssl_certificate /etc/nginx/ssl/api.limesco.nl.bundle-primary-first.crt;<br />
ssl_certificate_key /etc/nginx/ssl/api.limesco.nl.key;<br />
<br />
ssl_session_timeout 5m;<br />
<br />
# request-tracker4 configuration for nginx<br />
# (belong to /etc/nginx/conf.d)<br />
location /rt {<br />
alias /usr/share/request-tracker4/html;<br />
<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
}<br />
<br />
# Bypass FastCGI for images<br />
location /rt/NoAuth/images {<br />
alias /usr/share/request-tracker4/html/NoAuth/images/;<br />
}<br />
<br />
# Limit mail gateway access to localhost by default<br />
location /rt/REST/1.0/NoAuth {<br />
alias /usr/share/request-tracker4/html/REST/1.0/NoAuth/;<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
<br />
allow 127.0.0.1;<br />
allow 93.191.131.63; # ons eigen IP-adres<br />
allow ::1/128;<br />
allow 2a02:348:9a:833f::1/128; # ons eigen v6-adres<br />
deny all;<br />
}<br />
}<br />
</pre><br />
<br />
Om de FastCGI-daemon aan te zetten verander je <tt>enabled=0</tt> in <tt>enabled=1</tt> in <tt>/etc/default/rt4-fcgi</tt>. Dan resteert ons nog het opstarten van de FastCGI-daemon en het herstarten van Nginx:<br />
<br />
<pre><br />
$ sudo ln -s /etc/nginx/sites-available/rt.conf /etc/nginx/sites-enabled/<br />
$ sudo /etc/init.d/rt4-fcgi start<br />
$ sudo /etc/init.d/nginx restart<br />
</pre><br />
<br />
En [https://api.limesco.nl/rt https://api.limesco.nl/rt] geeft netjes het loginscherm van Request Tracker weer.<br />
<br />
== Configuratie gebruikers ==<br />
<br />
Als eerste willen we users toevoegen. Dat kan in Tools → Configuration → Users → Create. Zet "let this user access RT" en "let this user be granted rights" aan. Maak ook een groep voor de administrators ("admin"): Tools → Configuration → Groups → Create; na het maken kun je rechtsboven bij "Members" members toevoegen. Deze groep geven we extra rechten: Tools → Configuration → Global → Group Rights; vul links onderin "admin" (de naam van de groep) in, klik op "Rights for Administrators", en tick "Do anything and everything".<br />
<br />
We kunnen nu uitloggen als root en inloggen als één van de users die we hebben gemaakt.<br />
<br />
== Nieuwe tickets via e-mail ==<br />
<br />
Zodra er een e-mail binnenkomt aan <tt>support@limesco.nl</tt> moet die e-mail in Request Tracker worden ingevoerd. Daarvoor gaan we de configuratie van Postfix in. E-mail aan <tt>support@limesco.nl</tt> (en andere supportadressen) wordt geforward naar <tt>support-rt@rt.limesco.nl</tt>, dus onze Postfix moet <tt>rt.limesco.nl</tt> als zijn destination zien. We voegen daarom dat adres toe aan <tt>mydestination</tt> in <tt>/etc/postfix/main.cf</tt> en herstarten Postfix.<br />
<br />
Daarnaast is het nog belangrijk dat er bij e-mail aan <tt>support-rt@rt.limesco.nl</tt> een programma van RT (<tt>rt-mailgate</tt>) wordt uitgevoerd. Daarvoor voegen we de volgende twee regels toe aan <tt>/etc/aliases</tt>:<br />
<br />
<pre><br />
support-rt: "|/usr/bin/rt-mailgate --queue 'General' --action correspond --url https://api.limesco.nl/rt"<br />
support-rt-comment: "|/usr/bin/rt-mailgate --queue 'General' --action comment --url https://api.limesco.nl/rt"<br />
</pre><br />
<br />
<tt>rt-mailgate</tt> zal dus nu uitgevoerd worden bij het ontvangen van zo'n e-mail; hij zal HTTP-requests doen aan het NoAuth-gedeelte van RT (dat alleen openstaat aan localhost door de configuratie hierboven). Voer <tt>sudo newaliases</tt> uit om de aliases-database bij te werken en e-mail zal nu netjes uitkomen bij Request Tracker.<br />
<br />
Echter, voordat Request Tracker nieuwe tickets mag aanmaken voor ongeauthoriseerde e-mailadressen moet die permissie nog gegeven worden. Dat gebeurt onder Tools → Configuration → Global → Group Rights; klik links op Everyone en tick "Create Tickets" en "Reply to tickets".<br />
<br />
== Iedereens tickets kunnen zien ==<br />
<br />
Volgens eis (2) moet iedereen iedereens tickets kunnen bekijken. Met name alle open tickets, ongeacht eigenaar, moeten op de voorpagina te zien zijn. Dat doen we door een Saved Search te maken (Tickets → New Search). Daar definiëren we:<br />
<br />
<pre><br />
Status != 'resolved'<br />
AND Status != 'rejected'<br />
</pre><br />
<br />
Gesorteerd op LastUpdated ASC, en dan rechts opslaan als Saved Search "Open Tickets" (onder RT System's saved searches). Er wordt nu een nieuwe entry gemaakt die toegevoegd kan worden aan het Dashboard ("RT At A Glance"). Door dan naar Tools → Configuration → Global → RT at a glance te gaan, kun je onder "Body" links "Open Tickets" selecteren, verplaatsen naar rechts, en schuiven naar waar hij moet verschijnen. Eventueel dan per account nog dezelfde wijziging uitvoeren of resetten naar default (usermenu → Settings → RT at a glance), en het lijstje open tickets staat erbij op de voorpagina.<br />
<br />
== Notificaties sturen vanaf RT ==<br />
<br />
Voor het versturen van de notificaties, voegen we het volgende toe aan <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt>:<br />
<br />
<pre><br />
# E-MAIL:<br />
<br />
Set($SendmailArguments, "-oi -t -f support@limesco.nl");<br />
Set($OwnerEmail, "postmaster@limesco.nl");<br />
</pre><br />
<br />
Voer weer <tt>update-rt-siteconfig-4</tt> uit om de veranderingen te verwerken. Maak nu een groep genaamd DefaultQueueAdminCc (Tools → Configuration → Groups → Create); ga naar Members en iedere user toe die e-mail moet ontvangen voor de default queue.<br />
<br />
We voegen nu de groep DefaultQueueAdminCc toe als AdminCc van de default queue: ga naar Tools → Configuration → Queues → Select, klik General en ga naar Watchers rechtsboven; "Find Groups whose Name matches DefaultQueueAdminCc", selecteer onder Groups "AdminCc" voor de groep, en klik op "Save Changes".<br />
<br />
Welke e-mail de AdminCc van een queue krijgt is aan te passen onder Tools → Configuration → Global → Scrips → Select: standaard gelden de volgende regels:<br />
<br />
* On Comment Notify AdminCcs as Comment<br />
* On Correspond Notify AdminCcs<br />
* On Create Notify AdminCcs<br />
<br />
Door bijv. de eerste twee regels weg te halen krijgen AdminCc's nog wel e-mail voor een nieuwe ticket, maar niet meer elkaars correspondentie op een ticket. (Dat doen wij hier niet.)<br />
<br />
== Mails sturen bij reminders ==<br />
<br />
In RT kun je reminders zetten op een ticket. Dat zijn zelf ook weer simpele tickets met een "due date" en een link naar het oorspronkelijke ticket. Als we willen dat er ook een mail wordt gestuurd als een reminder nadert, kunnen we <tt>rt-crontool</tt> in een crontab zetten.<br />
<br />
Eerst moet de UNIX-gebruiker "www-data" herkend worden door het RT-systeem, zodat hij toegang heeft, tickets kan bekijken en e-mail kan sturen. Daarvoor gaan we naar Tools → Configuration → Users → Select, selecteren we "root" en zetten we zijn UNIX login op "www-data" (of de gebruiker die gebruikt wordt voor RT). Je kunt hier ook de "Real name" aanpassen naar iets vriendelijkers. Je kunt ook een nieuwe gebruiker maken voor dit doel, maar "root" werd toch niet echt meer gebruikt.<br />
<br />
We maken nu een template voor de e-mail die <tt>rt-crontool</tt> gaat laten sturen, in Tools → Configuration → Global → Templates → Create. We noemen hem "Reminder due soon" en zetten het volgende erin:<br />
<br />
<pre><br />
To: { $Target = $Ticket->RefersTo->First->TargetObj; ($Argument eq 'TicketOwner' ? $Target : $Ticket)->OwnerObj->EmailAddress }<br />
Subject: {$Ticket->Subject} is due {$Ticket->DueAsString}<br />
<br />
Just a friendly heads up. This reminder is for ticket #{$Target->Id}.<br />
<br />
Original ticket: {RT->Config->Get('WebURL')}Ticket/Display.html?id={$Target->Id}<br />
</pre><br />
<br />
Daarna maken we een <tt>/etc/cron.daily/request-tracker4-reminders</tt>, executable, met de volgende inhoud:<br />
<br />
<pre><br />
#!/bin/sh<br />
sudo -H -u www-data rt-crontool \<br />
--search RT::Search::FromSQL \<br />
--search-arg 'Type = "reminder" and (Status = "open" or Status = "new")' \<br />
--condition RT::Condition::BeforeDue \<br />
--condition-arg 2d \<br />
--action RT::Action::RecordComment \<br />
--action-arg Owner \<br />
--transaction first \<br />
--template 'Reminder due soon'<br />
</pre><br />
<br />
Dit zal nu voor iedere reminder die binnen 2 dagen afloopt een comment plaatsen bij die reminder. De gebruiker die de reminder heeft geplaatst krijgt van comments een e-mail als je "Notificaties sturen vanaf RT" hierboven ook hebt gevolgd. Eventueel kun je de <tt>--action</tt> vervangen door <tt>RT::Action::SendEmail</tt> om direct een e-mail te versturen zonder een comment te plaatsen.<br />
<br />
== Andere kleine configuratie ==<br />
<br />
* Geen automatische mail meer sturen bij het sluiten van een ticket: Tools → Configuration → Global → Scrips → Select, On Resolve Notify Requestors, selecteer, Delete.<br />
* "Via RT" in de From weg: <tt>Set($FriendlyFromLineFormat, "\"%s\" <%s>");</tt> in <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt> en voer <tt>update-rt-siteconfig-4</tt> uit.<br />
* Nederlandse auto-replies: Tools → Configuration → Global → Templates → Select, klik Autoreply (2), verander het naar:<br />
<br />
<pre><br />
Subject: Ticket wordt in behandeling genomen: {$Ticket->Subject}<br />
<br />
L.S.,<br />
<br />
Dit is een automatisch gegenereerd bericht om te bevestigen dat uw e-mail is ontvangen en in behandeling wordt genomen. Wij zouden het waarderen als u "{ $Ticket->SubjectTag }" in het onderwerp van vervolg-e-mails laat staan.<br />
<br />
Met vriendelijke groet,<br />
Limesco<br />
<br />
De oorspronkelijke tekst van uw bericht volgt.<br />
-------------------------------------------------------------------------<br />
{$Transaction->Content()}<br />
</pre><br />
<br />
== Commandline-integratie ==<br />
<br />
Een belangrijk doel was ook om via de commandline met het ticketingsysteem te integreren. De one-stop go daarvoor is <tt>/usr/bin/rt</tt>, een tool die interfacet met heel Request Tracker.<br />
<br />
* Status zetten: <tt>rt edit ticket/20 set status=resolved</tt><br />
* Custom field zetten: <tt>rt edit ticket/20 set 'CF.{SpeakUp-Ticket}'=2468</tt><br />
** Zo'n custom field kun je toevoegen via Tools → Configuration → Custom Fields → Create en activeren op een queue via Tools → Configuration → Global → Custom Fields → Ticket<br />
* Een lege ticket maken: <tt>rt create -t ticket set id="ticket/new" queue="General" subject="Subject van de ticket" cc="Correspondentie wordt ook hierheen gestuurd"</tt><br />
* Correspondentie toevoegen: <tt>rt correspond -m "Het bericht staat hier" 4</tt> (4 is de ticket-id)<br />
* Voor gebruik van <tt>/usr/bin/rt</tt>, zie <tt>rt help conf</tt> en <tt>rt help usage</tt>.</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Support-infrastructuur&diff=1022Support-infrastructuur2013-02-18T03:25:34Z<p>SGielen: /* Andere kleine configuratie */</p>
<hr />
<div>Support@ is sinds het begin bemand geweest door Sjors, Gerdriaan en Mark, waarbij Sjors de meeste mails afhandelde. Omdat puur e-mail gebruiken tracken lastiger maakt, en er wel eens voor zorgde dat Sjors en Gerdriaan tegelijkertijd een antwoord stuurden, zijn we begin 2013 gaan kijken naar een ticketingsysteem. We hebben geëxperimenteerd met [http://bestpractical.com/rt/ Request Tracker] en hebben besloten dat we dat systeem als implementatie gaan gebruiken voor support-tickets.<br />
<br />
We hadden verschillende eisen voor dit systeem:<br />
<br />
# Het moet duidelijk zijn wie een ticket behandelt (eigenaar & claimfunctionaliteit)<br />
# We moeten wel alle tickets in kunnen zien, ongeacht eigenaar<br />
# Het systeem moet mailnotificaties sturen als er interessante dingen gebeuren<br />
# Alle communicatie in een ticket moet in 1 overzicht zichtbaar zijn<br />
# We willen extra properties kunnen zetten op een ticket, zodat een mail automatisch interessante informatie verzamelt (accountnaam, SIM-gegevens, eventuele SpeakUp-ticketnummers)<br />
# Tickets moeten via een commandline-interface in te zien en te wijzigen zijn<br />
# Voortgang van tickets moet snel zichtbaar zijn<br />
# Er moet een systeem voor reminders zijn, bijv. "over 2 dagen nog eens kijken hoe het staat" of "moet maximaal over 3 dagen opgelost zijn"<br />
# Dat systeem voor reminders moet ons ook kunnen e-mailen<br />
# We moeten vanaf de commandline mensen e-mail kunnen sturen, zo dat replies automatisch in dezelfde ticket komen<br />
<br />
Het bleek dat Request Tracker dit allemaal kon, of gemakkelijk aan te vullen was zodat het dit kon. Op deze pagina beschrijf ik hoe we de boel hebben geïmplementeerd, voor het geval we het nog eens moeten doen en in de hoop dat het nuttig is voor anderen.<br />
<br />
== Installatie ==<br />
<br />
De Request Tracker-installatie draait op de Debian-machine <tt>api.limesco.nl</tt>. Installatie op Debian is zo simpel als <tt>apt-get install request-tracker4</tt>. Tijdens de installatie wordt gevraagd om de naam van de Request Tracker-instance (de <tt>rtname</tt>); die wordt bijvoorbeeld gebruikt voor de subject tag in mailtjes. In ons geval is dat simpelweg <tt>Limesco</tt>.<br />
<br />
Request Tracker gaat uitgevoerd worden als de user <tt>www-data</tt> omdat er niets anders als de <tt>www-data</tt>-gebruiker uitgevoerd wordt. Zouden er al bestaande services gebruikmaken van die user, dan zouden we de voorkeur hebben een aparte gebruiker aan te maken voor RT. Op de vraag "Handle RT_SiteConfig.pm permissions?" antwoorden we nu dus ja. De databaseconfiguratie kan ook automatisch worden gedaan ("Yes") en voor het initial root password kiezen we een lang, onraadbaar wachtwoord. Zodra RT is geïnstalleerd maken we een setje accounts voor mensen; de root-account wordt dan alleen nog gebruikt voor geautomatiseerde scripts.<br />
<br />
Het instellen van Request Tracker zelf gaat via <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt>, daar staat het volgende:<br />
<br />
<pre><br />
# THE BASICS:<br />
<br />
Set($rtname, 'Limesco');<br />
Set($Organization, 'Limesco');<br />
<br />
Set($CorrespondAddress , 'support@limesco.nl');<br />
Set($CommentAddress , 'support-comment@rt.limesco.nl');<br />
<br />
# THE WEBSERVER:<br />
<br />
Set($WebPath , "/rt");<br />
Set($WebBaseURL , "https://api.limesco.nl");<br />
Set($WebPort, 443);<br />
Set($WebDomain, "api.limesco.nl");<br />
</pre><br />
<br />
Om deze configuratie bij te werken, voeren we <tt>update-rt-siteconfig-4</tt> uit.<br />
<br />
== Configuratie website ==<br />
<br />
Op <tt>api.limesco.nl</tt> gebruiken we nginx, een snelle lichte webserver met CGI-support. Om nginx en Request Tracker samen te laten werken is de package <tt>rt4-fcgi</tt> nodig. Die installeert een <tt>/etc/init.d/rt4-fcgi</tt> die Request Tracker via FastCGI bereikbaar maakt, en een <tt>/usr/share/doc/rt4-fcgi/examples/request-tracker4.conf</tt> die de interface naar Nginx maakt. Die<br />
interface gebruiken wij als opzetje voor de configuratie in nginx, die RT alleen bereikbaar maakt via SSL:<br />
<br />
<pre><br />
server {<br />
listen 443;<br />
server_name api.limesco.nl;<br />
<br />
root /var/www;<br />
index index.html index.htm;<br />
<br />
ssl on;<br />
ssl_certificate /etc/nginx/ssl/api.limesco.nl.bundle-primary-first.crt;<br />
ssl_certificate_key /etc/nginx/ssl/api.limesco.nl.key;<br />
<br />
ssl_session_timeout 5m;<br />
<br />
# request-tracker4 configuration for nginx<br />
# (belong to /etc/nginx/conf.d)<br />
location /rt {<br />
alias /usr/share/request-tracker4/html;<br />
<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
}<br />
<br />
# Bypass FastCGI for images<br />
location /rt/NoAuth/images {<br />
alias /usr/share/request-tracker4/html/NoAuth/images/;<br />
}<br />
<br />
# Limit mail gateway access to localhost by default<br />
location /rt/REST/1.0/NoAuth {<br />
alias /usr/share/request-tracker4/html/REST/1.0/NoAuth/;<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
<br />
allow 127.0.0.1;<br />
allow 93.191.131.63; # ons eigen IP-adres<br />
allow ::1/128;<br />
allow 2a02:348:9a:833f::1/128; # ons eigen v6-adres<br />
deny all;<br />
}<br />
}<br />
</pre><br />
<br />
Om de FastCGI-daemon aan te zetten verander je <tt>enabled=0</tt> in <tt>enabled=1</tt> in <tt>/etc/default/rt4-fcgi</tt>. Dan resteert ons nog het opstarten van de FastCGI-daemon en het herstarten van Nginx:<br />
<br />
<pre><br />
$ sudo ln -s /etc/nginx/sites-available/rt.conf /etc/nginx/sites-enabled/<br />
$ sudo /etc/init.d/rt4-fcgi start<br />
$ sudo /etc/init.d/nginx restart<br />
</pre><br />
<br />
En [https://api.limesco.nl/rt https://api.limesco.nl/rt] geeft netjes het loginscherm van Request Tracker weer.<br />
<br />
== Configuratie gebruikers ==<br />
<br />
Als eerste willen we users toevoegen. Dat kan in Tools → Configuration → Users → Create. Zet "let this user access RT" en "let this user be granted rights" aan. Maak ook een groep voor de administrators ("admin"): Tools → Configuration → Groups → Create; na het maken kun je rechtsboven bij "Members" members toevoegen. Deze groep geven we extra rechten: Tools → Configuration → Global → Group Rights; vul links onderin "admin" (de naam van de groep) in, klik op "Rights for Administrators", en tick "Do anything and everything".<br />
<br />
We kunnen nu uitloggen als root en inloggen als één van de users die we hebben gemaakt.<br />
<br />
== Nieuwe tickets via e-mail ==<br />
<br />
Zodra er een e-mail binnenkomt aan <tt>support@limesco.nl</tt> moet die e-mail in Request Tracker worden ingevoerd. Daarvoor gaan we de configuratie van Postfix in. E-mail aan <tt>support@limesco.nl</tt> (en andere supportadressen) wordt geforward naar <tt>support-rt@rt.limesco.nl</tt>, dus onze Postfix moet <tt>rt.limesco.nl</tt> als zijn destination zien. We voegen daarom dat adres toe aan <tt>mydestination</tt> in <tt>/etc/postfix/main.cf</tt> en herstarten Postfix.<br />
<br />
Daarnaast is het nog belangrijk dat er bij e-mail aan <tt>support-rt@rt.limesco.nl</tt> een programma van RT (<tt>rt-mailgate</tt>) wordt uitgevoerd. Daarvoor voegen we de volgende twee regels toe aan <tt>/etc/aliases</tt>:<br />
<br />
<pre><br />
support-rt: "|/usr/bin/rt-mailgate --queue 'General' --action correspond --url https://api.limesco.nl/rt"<br />
support-rt-comment: "|/usr/bin/rt-mailgate --queue 'General' --action comment --url https://api.limesco.nl/rt"<br />
</pre><br />
<br />
<tt>rt-mailgate</tt> zal dus nu uitgevoerd worden bij het ontvangen van zo'n e-mail; hij zal HTTP-requests doen aan het NoAuth-gedeelte van RT (dat alleen openstaat aan localhost door de configuratie hierboven). Voer <tt>sudo newaliases</tt> uit om de aliases-database bij te werken en e-mail zal nu netjes uitkomen bij Request Tracker.<br />
<br />
Echter, voordat Request Tracker nieuwe tickets mag aanmaken voor ongeauthoriseerde e-mailadressen moet die permissie nog gegeven worden. Dat gebeurt onder Tools → Configuration → Global → Group Rights; klik links op Everyone en tick "Create Tickets" en "Reply to tickets".<br />
<br />
== Iedereens tickets kunnen zien ==<br />
<br />
Volgens eis (2) moet iedereen iedereens tickets kunnen bekijken. Met name alle open tickets, ongeacht eigenaar, moeten op de voorpagina te zien zijn. Dat doen we door een Saved Search te maken (Tickets → New Search). Daar definiëren we:<br />
<br />
<pre><br />
Status != 'resolved'<br />
AND Status != 'rejected'<br />
</pre><br />
<br />
Gesorteerd op LastUpdated ASC, en dan rechts opslaan als Saved Search "Open Tickets" (onder RT System's saved searches). Er wordt nu een nieuwe entry gemaakt die toegevoegd kan worden aan het Dashboard ("RT At A Glance"). Door dan naar Tools → Configuration → Global → RT at a glance te gaan, kun je onder "Body" links "Open Tickets" selecteren, verplaatsen naar rechts, en schuiven naar waar hij moet verschijnen. Eventueel dan per account nog dezelfde wijziging uitvoeren of resetten naar default (usermenu → Settings → RT at a glance), en het lijstje open tickets staat erbij op de voorpagina.<br />
<br />
== Notificaties sturen vanaf RT ==<br />
<br />
Voor het versturen van de notificaties, voegen we het volgende toe aan <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt>:<br />
<br />
<pre><br />
# E-MAIL:<br />
<br />
Set($SendmailArguments, "-oi -t -f support@limesco.nl");<br />
Set($OwnerEmail, "postmaster@limesco.nl");<br />
</pre><br />
<br />
Voer weer <tt>update-rt-siteconfig-4</tt> uit om de veranderingen te verwerken. Maak nu een groep genaamd DefaultQueueAdminCc (Tools → Configuration → Groups → Create); ga naar Members en iedere user toe die e-mail moet ontvangen voor de default queue.<br />
<br />
We voegen nu de groep DefaultQueueAdminCc toe als AdminCc van de default queue: ga naar Tools → Configuration → Queues → Select, klik General en ga naar Watchers rechtsboven; "Find Groups whose Name matches DefaultQueueAdminCc", selecteer onder Groups "AdminCc" voor de groep, en klik op "Save Changes".<br />
<br />
Welke e-mail de AdminCc van een queue krijgt is aan te passen onder Tools → Configuration → Global → Scrips → Select: standaard gelden de volgende regels:<br />
<br />
* On Comment Notify AdminCcs as Comment<br />
* On Correspond Notify AdminCcs<br />
* On Create Notify AdminCcs<br />
<br />
Door bijv. de eerste twee regels weg te halen krijgen AdminCc's nog wel e-mail voor een nieuwe ticket, maar niet meer elkaars correspondentie op een ticket. (Dat doen wij hier niet.)<br />
<br />
== Mails sturen bij reminders ==<br />
<br />
In RT kun je reminders zetten op een ticket. Dat zijn zelf ook weer simpele tickets met een "due date" en een link naar het oorspronkelijke ticket. Als we willen dat er ook een mail wordt gestuurd als een reminder nadert, kunnen we <tt>rt-crontool</tt> in een crontab zetten.<br />
<br />
Eerst moet de UNIX-gebruiker "www-data" herkend worden door het RT-systeem, zodat hij toegang heeft, tickets kan bekijken en e-mail kan sturen. Daarvoor gaan we naar Tools → Configuration → Users → Select, selecteren we "root" en zetten we zijn UNIX login op "www-data" (of de gebruiker die gebruikt wordt voor RT). Je kunt hier ook de "Real name" aanpassen naar iets vriendelijkers. Je kunt ook een nieuwe gebruiker maken voor dit doel, maar "root" werd toch niet echt meer gebruikt.<br />
<br />
We maken nu een template voor de e-mail die <tt>rt-crontool</tt> gaat laten sturen, in Tools → Configuration → Global → Templates → Create. We noemen hem "Reminder due soon" en zetten het volgende erin:<br />
<br />
<pre><br />
To: { $Target = $Ticket->RefersTo->First->TargetObj; ($Argument eq 'TicketOwner' ? $Target : $Ticket)->OwnerObj->EmailAddress }<br />
Subject: {$Ticket->Subject} is due {$Ticket->DueAsString}<br />
<br />
Just a friendly heads up. This reminder is for ticket #{$Target->Id}.<br />
<br />
Original ticket: {RT->Config->Get('WebURL')}Ticket/Display.html?id={$Target->Id}<br />
</pre><br />
<br />
Daarna maken we een <tt>/etc/cron.daily/request-tracker4-reminders</tt>, executable, met de volgende inhoud:<br />
<br />
<pre><br />
sudo -H -u www-data rt-crontool \<br />
--search RT::Search::FromSQL \<br />
--search-arg 'Type = "reminder" and (Status = "open" or Status = "new")' \<br />
--condition RT::Condition::BeforeDue \<br />
--condition-arg 2d \<br />
--action RT::Action::RecordComment \<br />
--action-arg Owner \<br />
--transaction first \<br />
--template 'Reminder due soon'<br />
</pre><br />
<br />
Dit zal nu voor iedere reminder die binnen 2 dagen afloopt een comment plaatsen bij die reminder. De gebruiker die de reminder heeft geplaatst krijgt van comments een e-mail als je "Notificaties sturen vanaf RT" hierboven ook hebt gevolgd. Eventueel kun je de <tt>--action</tt> vervangen door <tt>RT::Action::SendEmail</tt> om direct een e-mail te versturen zonder een comment te plaatsen.<br />
<br />
== Andere kleine configuratie ==<br />
<br />
* Geen automatische mail meer sturen bij het sluiten van een ticket: Tools → Configuration → Global → Scrips → Select, On Resolve Notify Requestors, selecteer, Delete.<br />
* "Via RT" in de From weg: <tt>Set($FriendlyFromLineFormat, "\"%s\" <%s>");</tt> in <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt> en voer <tt>update-rt-siteconfig-4</tt> uit.<br />
* Nederlandse auto-replies: Tools → Configuration → Global → Templates → Select, klik Autoreply (2), verander het naar:<br />
<br />
<pre><br />
Subject: Ticket wordt in behandeling genomen: {$Ticket->Subject}<br />
<br />
L.S.,<br />
<br />
Dit is een automatisch gegenereerd bericht om te bevestigen dat uw e-mail is ontvangen en in behandeling wordt genomen. Wij zouden het waarderen als u "{ $Ticket->SubjectTag }" in het onderwerp van vervolg-e-mails laat staan.<br />
<br />
Met vriendelijke groet,<br />
Limesco<br />
<br />
De oorspronkelijke tekst van uw bericht volgt.<br />
-------------------------------------------------------------------------<br />
{$Transaction->Content()}<br />
</pre><br />
<br />
== Commandline-integratie ==<br />
<br />
Een belangrijk doel was ook om via de commandline met het ticketingsysteem te integreren. De one-stop go daarvoor is <tt>/usr/bin/rt</tt>, een tool die interfacet met heel Request Tracker.<br />
<br />
* Status zetten: <tt>rt edit ticket/20 set status=resolved</tt><br />
* Custom field zetten: <tt>rt edit ticket/20 set 'CF.{SpeakUp-Ticket}'=2468</tt><br />
** Zo'n custom field kun je toevoegen via Tools → Configuration → Custom Fields → Create en activeren op een queue via Tools → Configuration → Global → Custom Fields → Ticket<br />
* Een lege ticket maken: <tt>rt create -t ticket set id="ticket/new" queue="General" subject="Subject van de ticket" cc="Correspondentie wordt ook hierheen gestuurd"</tt><br />
* Correspondentie toevoegen: <tt>rt correspond -m "Het bericht staat hier" 4</tt> (4 is de ticket-id)<br />
* Voor gebruik van <tt>/usr/bin/rt</tt>, zie <tt>rt help conf</tt> en <tt>rt help usage</tt>.</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Support-infrastructuur&diff=1021Support-infrastructuur2013-02-18T03:20:48Z<p>SGielen: Commandline-integratie</p>
<hr />
<div>Support@ is sinds het begin bemand geweest door Sjors, Gerdriaan en Mark, waarbij Sjors de meeste mails afhandelde. Omdat puur e-mail gebruiken tracken lastiger maakt, en er wel eens voor zorgde dat Sjors en Gerdriaan tegelijkertijd een antwoord stuurden, zijn we begin 2013 gaan kijken naar een ticketingsysteem. We hebben geëxperimenteerd met [http://bestpractical.com/rt/ Request Tracker] en hebben besloten dat we dat systeem als implementatie gaan gebruiken voor support-tickets.<br />
<br />
We hadden verschillende eisen voor dit systeem:<br />
<br />
# Het moet duidelijk zijn wie een ticket behandelt (eigenaar & claimfunctionaliteit)<br />
# We moeten wel alle tickets in kunnen zien, ongeacht eigenaar<br />
# Het systeem moet mailnotificaties sturen als er interessante dingen gebeuren<br />
# Alle communicatie in een ticket moet in 1 overzicht zichtbaar zijn<br />
# We willen extra properties kunnen zetten op een ticket, zodat een mail automatisch interessante informatie verzamelt (accountnaam, SIM-gegevens, eventuele SpeakUp-ticketnummers)<br />
# Tickets moeten via een commandline-interface in te zien en te wijzigen zijn<br />
# Voortgang van tickets moet snel zichtbaar zijn<br />
# Er moet een systeem voor reminders zijn, bijv. "over 2 dagen nog eens kijken hoe het staat" of "moet maximaal over 3 dagen opgelost zijn"<br />
# Dat systeem voor reminders moet ons ook kunnen e-mailen<br />
# We moeten vanaf de commandline mensen e-mail kunnen sturen, zo dat replies automatisch in dezelfde ticket komen<br />
<br />
Het bleek dat Request Tracker dit allemaal kon, of gemakkelijk aan te vullen was zodat het dit kon. Op deze pagina beschrijf ik hoe we de boel hebben geïmplementeerd, voor het geval we het nog eens moeten doen en in de hoop dat het nuttig is voor anderen.<br />
<br />
== Installatie ==<br />
<br />
De Request Tracker-installatie draait op de Debian-machine <tt>api.limesco.nl</tt>. Installatie op Debian is zo simpel als <tt>apt-get install request-tracker4</tt>. Tijdens de installatie wordt gevraagd om de naam van de Request Tracker-instance (de <tt>rtname</tt>); die wordt bijvoorbeeld gebruikt voor de subject tag in mailtjes. In ons geval is dat simpelweg <tt>Limesco</tt>.<br />
<br />
Request Tracker gaat uitgevoerd worden als de user <tt>www-data</tt> omdat er niets anders als de <tt>www-data</tt>-gebruiker uitgevoerd wordt. Zouden er al bestaande services gebruikmaken van die user, dan zouden we de voorkeur hebben een aparte gebruiker aan te maken voor RT. Op de vraag "Handle RT_SiteConfig.pm permissions?" antwoorden we nu dus ja. De databaseconfiguratie kan ook automatisch worden gedaan ("Yes") en voor het initial root password kiezen we een lang, onraadbaar wachtwoord. Zodra RT is geïnstalleerd maken we een setje accounts voor mensen; de root-account wordt dan alleen nog gebruikt voor geautomatiseerde scripts.<br />
<br />
Het instellen van Request Tracker zelf gaat via <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt>, daar staat het volgende:<br />
<br />
<pre><br />
# THE BASICS:<br />
<br />
Set($rtname, 'Limesco');<br />
Set($Organization, 'Limesco');<br />
<br />
Set($CorrespondAddress , 'support@limesco.nl');<br />
Set($CommentAddress , 'support-comment@rt.limesco.nl');<br />
<br />
# THE WEBSERVER:<br />
<br />
Set($WebPath , "/rt");<br />
Set($WebBaseURL , "https://api.limesco.nl");<br />
Set($WebPort, 443);<br />
Set($WebDomain, "api.limesco.nl");<br />
</pre><br />
<br />
Om deze configuratie bij te werken, voeren we <tt>update-rt-siteconfig-4</tt> uit.<br />
<br />
== Configuratie website ==<br />
<br />
Op <tt>api.limesco.nl</tt> gebruiken we nginx, een snelle lichte webserver met CGI-support. Om nginx en Request Tracker samen te laten werken is de package <tt>rt4-fcgi</tt> nodig. Die installeert een <tt>/etc/init.d/rt4-fcgi</tt> die Request Tracker via FastCGI bereikbaar maakt, en een <tt>/usr/share/doc/rt4-fcgi/examples/request-tracker4.conf</tt> die de interface naar Nginx maakt. Die<br />
interface gebruiken wij als opzetje voor de configuratie in nginx, die RT alleen bereikbaar maakt via SSL:<br />
<br />
<pre><br />
server {<br />
listen 443;<br />
server_name api.limesco.nl;<br />
<br />
root /var/www;<br />
index index.html index.htm;<br />
<br />
ssl on;<br />
ssl_certificate /etc/nginx/ssl/api.limesco.nl.bundle-primary-first.crt;<br />
ssl_certificate_key /etc/nginx/ssl/api.limesco.nl.key;<br />
<br />
ssl_session_timeout 5m;<br />
<br />
# request-tracker4 configuration for nginx<br />
# (belong to /etc/nginx/conf.d)<br />
location /rt {<br />
alias /usr/share/request-tracker4/html;<br />
<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
}<br />
<br />
# Bypass FastCGI for images<br />
location /rt/NoAuth/images {<br />
alias /usr/share/request-tracker4/html/NoAuth/images/;<br />
}<br />
<br />
# Limit mail gateway access to localhost by default<br />
location /rt/REST/1.0/NoAuth {<br />
alias /usr/share/request-tracker4/html/REST/1.0/NoAuth/;<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
<br />
allow 127.0.0.1;<br />
allow 93.191.131.63; # ons eigen IP-adres<br />
allow ::1/128;<br />
allow 2a02:348:9a:833f::1/128; # ons eigen v6-adres<br />
deny all;<br />
}<br />
}<br />
</pre><br />
<br />
Om de FastCGI-daemon aan te zetten verander je <tt>enabled=0</tt> in <tt>enabled=1</tt> in <tt>/etc/default/rt4-fcgi</tt>. Dan resteert ons nog het opstarten van de FastCGI-daemon en het herstarten van Nginx:<br />
<br />
<pre><br />
$ sudo ln -s /etc/nginx/sites-available/rt.conf /etc/nginx/sites-enabled/<br />
$ sudo /etc/init.d/rt4-fcgi start<br />
$ sudo /etc/init.d/nginx restart<br />
</pre><br />
<br />
En [https://api.limesco.nl/rt https://api.limesco.nl/rt] geeft netjes het loginscherm van Request Tracker weer.<br />
<br />
== Configuratie gebruikers ==<br />
<br />
Als eerste willen we users toevoegen. Dat kan in Tools → Configuration → Users → Create. Zet "let this user access RT" en "let this user be granted rights" aan. Maak ook een groep voor de administrators ("admin"): Tools → Configuration → Groups → Create; na het maken kun je rechtsboven bij "Members" members toevoegen. Deze groep geven we extra rechten: Tools → Configuration → Global → Group Rights; vul links onderin "admin" (de naam van de groep) in, klik op "Rights for Administrators", en tick "Do anything and everything".<br />
<br />
We kunnen nu uitloggen als root en inloggen als één van de users die we hebben gemaakt.<br />
<br />
== Nieuwe tickets via e-mail ==<br />
<br />
Zodra er een e-mail binnenkomt aan <tt>support@limesco.nl</tt> moet die e-mail in Request Tracker worden ingevoerd. Daarvoor gaan we de configuratie van Postfix in. E-mail aan <tt>support@limesco.nl</tt> (en andere supportadressen) wordt geforward naar <tt>support-rt@rt.limesco.nl</tt>, dus onze Postfix moet <tt>rt.limesco.nl</tt> als zijn destination zien. We voegen daarom dat adres toe aan <tt>mydestination</tt> in <tt>/etc/postfix/main.cf</tt> en herstarten Postfix.<br />
<br />
Daarnaast is het nog belangrijk dat er bij e-mail aan <tt>support-rt@rt.limesco.nl</tt> een programma van RT (<tt>rt-mailgate</tt>) wordt uitgevoerd. Daarvoor voegen we de volgende twee regels toe aan <tt>/etc/aliases</tt>:<br />
<br />
<pre><br />
support-rt: "|/usr/bin/rt-mailgate --queue 'General' --action correspond --url https://api.limesco.nl/rt"<br />
support-rt-comment: "|/usr/bin/rt-mailgate --queue 'General' --action comment --url https://api.limesco.nl/rt"<br />
</pre><br />
<br />
<tt>rt-mailgate</tt> zal dus nu uitgevoerd worden bij het ontvangen van zo'n e-mail; hij zal HTTP-requests doen aan het NoAuth-gedeelte van RT (dat alleen openstaat aan localhost door de configuratie hierboven). Voer <tt>sudo newaliases</tt> uit om de aliases-database bij te werken en e-mail zal nu netjes uitkomen bij Request Tracker.<br />
<br />
Echter, voordat Request Tracker nieuwe tickets mag aanmaken voor ongeauthoriseerde e-mailadressen moet die permissie nog gegeven worden. Dat gebeurt onder Tools → Configuration → Global → Group Rights; klik links op Everyone en tick "Create Tickets" en "Reply to tickets".<br />
<br />
== Iedereens tickets kunnen zien ==<br />
<br />
Volgens eis (2) moet iedereen iedereens tickets kunnen bekijken. Met name alle open tickets, ongeacht eigenaar, moeten op de voorpagina te zien zijn. Dat doen we door een Saved Search te maken (Tickets → New Search). Daar definiëren we:<br />
<br />
<pre><br />
Status != 'resolved'<br />
AND Status != 'rejected'<br />
</pre><br />
<br />
Gesorteerd op LastUpdated ASC, en dan rechts opslaan als Saved Search "Open Tickets" (onder RT System's saved searches). Er wordt nu een nieuwe entry gemaakt die toegevoegd kan worden aan het Dashboard ("RT At A Glance"). Door dan naar Tools → Configuration → Global → RT at a glance te gaan, kun je onder "Body" links "Open Tickets" selecteren, verplaatsen naar rechts, en schuiven naar waar hij moet verschijnen. Eventueel dan per account nog dezelfde wijziging uitvoeren of resetten naar default (usermenu → Settings → RT at a glance), en het lijstje open tickets staat erbij op de voorpagina.<br />
<br />
== Notificaties sturen vanaf RT ==<br />
<br />
Voor het versturen van de notificaties, voegen we het volgende toe aan <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt>:<br />
<br />
<pre><br />
# E-MAIL:<br />
<br />
Set($SendmailArguments, "-oi -t -f support@limesco.nl");<br />
Set($OwnerEmail, "postmaster@limesco.nl");<br />
</pre><br />
<br />
Voer weer <tt>update-rt-siteconfig-4</tt> uit om de veranderingen te verwerken. Maak nu een groep genaamd DefaultQueueAdminCc (Tools → Configuration → Groups → Create); ga naar Members en iedere user toe die e-mail moet ontvangen voor de default queue.<br />
<br />
We voegen nu de groep DefaultQueueAdminCc toe als AdminCc van de default queue: ga naar Tools → Configuration → Queues → Select, klik General en ga naar Watchers rechtsboven; "Find Groups whose Name matches DefaultQueueAdminCc", selecteer onder Groups "AdminCc" voor de groep, en klik op "Save Changes".<br />
<br />
Welke e-mail de AdminCc van een queue krijgt is aan te passen onder Tools → Configuration → Global → Scrips → Select: standaard gelden de volgende regels:<br />
<br />
* On Comment Notify AdminCcs as Comment<br />
* On Correspond Notify AdminCcs<br />
* On Create Notify AdminCcs<br />
<br />
Door bijv. de eerste twee regels weg te halen krijgen AdminCc's nog wel e-mail voor een nieuwe ticket, maar niet meer elkaars correspondentie op een ticket. (Dat doen wij hier niet.)<br />
<br />
== Mails sturen bij reminders ==<br />
<br />
In RT kun je reminders zetten op een ticket. Dat zijn zelf ook weer simpele tickets met een "due date" en een link naar het oorspronkelijke ticket. Als we willen dat er ook een mail wordt gestuurd als een reminder nadert, kunnen we <tt>rt-crontool</tt> in een crontab zetten.<br />
<br />
Eerst moet de UNIX-gebruiker "www-data" herkend worden door het RT-systeem, zodat hij toegang heeft, tickets kan bekijken en e-mail kan sturen. Daarvoor gaan we naar Tools → Configuration → Users → Select, selecteren we "root" en zetten we zijn UNIX login op "www-data" (of de gebruiker die gebruikt wordt voor RT). Je kunt hier ook de "Real name" aanpassen naar iets vriendelijkers. Je kunt ook een nieuwe gebruiker maken voor dit doel, maar "root" werd toch niet echt meer gebruikt.<br />
<br />
We maken nu een template voor de e-mail die <tt>rt-crontool</tt> gaat laten sturen, in Tools → Configuration → Global → Templates → Create. We noemen hem "Reminder due soon" en zetten het volgende erin:<br />
<br />
<pre><br />
To: { $Target = $Ticket->RefersTo->First->TargetObj; ($Argument eq 'TicketOwner' ? $Target : $Ticket)->OwnerObj->EmailAddress }<br />
Subject: {$Ticket->Subject} is due {$Ticket->DueAsString}<br />
<br />
Just a friendly heads up. This reminder is for ticket #{$Target->Id}.<br />
<br />
Original ticket: {RT->Config->Get('WebURL')}Ticket/Display.html?id={$Target->Id}<br />
</pre><br />
<br />
Daarna maken we een <tt>/etc/cron.daily/request-tracker4-reminders</tt>, executable, met de volgende inhoud:<br />
<br />
<pre><br />
sudo -H -u www-data rt-crontool \<br />
--search RT::Search::FromSQL \<br />
--search-arg 'Type = "reminder" and (Status = "open" or Status = "new")' \<br />
--condition RT::Condition::BeforeDue \<br />
--condition-arg 2d \<br />
--action RT::Action::RecordComment \<br />
--action-arg Owner \<br />
--transaction first \<br />
--template 'Reminder due soon'<br />
</pre><br />
<br />
Dit zal nu voor iedere reminder die binnen 2 dagen afloopt een comment plaatsen bij die reminder. De gebruiker die de reminder heeft geplaatst krijgt van comments een e-mail als je "Notificaties sturen vanaf RT" hierboven ook hebt gevolgd. Eventueel kun je de <tt>--action</tt> vervangen door <tt>RT::Action::SendEmail</tt> om direct een e-mail te versturen zonder een comment te plaatsen.<br />
<br />
== Andere kleine configuratie ==<br />
<br />
* Geen automatische mail meer sturen bij het sluiten van een ticket: Tools → Configuration → Global → Scrips → Select, On Resolve Notify Requestors, selecteer, Delete.<br />
* Nederlandse auto-replies: Tools → Configuration → Global → Templates → Select, klik Autoreply (2), verander het naar:<br />
<br />
<pre><br />
Subject: Ticket wordt in behandeling genomen: {$Ticket->Subject}<br />
<br />
L.S.,<br />
<br />
Dit is een automatisch gegenereerd bericht om te bevestigen dat uw e-mail is ontvangen en in behandeling wordt genomen. Wij zouden het waarderen als u "{ $Ticket->SubjectTag }" in het onderwerp van vervolg-e-mails laat staan.<br />
<br />
Met vriendelijke groet,<br />
Limesco<br />
<br />
De oorspronkelijke tekst van uw bericht volgt.<br />
-------------------------------------------------------------------------<br />
{$Transaction->Content()}<br />
</pre><br />
<br />
== Commandline-integratie ==<br />
<br />
Een belangrijk doel was ook om via de commandline met het ticketingsysteem te integreren. De one-stop go daarvoor is <tt>/usr/bin/rt</tt>, een tool die interfacet met heel Request Tracker.<br />
<br />
* Status zetten: <tt>rt edit ticket/20 set status=resolved</tt><br />
* Custom field zetten: <tt>rt edit ticket/20 set 'CF.{SpeakUp-Ticket}'=2468</tt><br />
** Zo'n custom field kun je toevoegen via Tools → Configuration → Custom Fields → Create en activeren op een queue via Tools → Configuration → Global → Custom Fields → Ticket<br />
* Een lege ticket maken: <tt>rt create -t ticket set id="ticket/new" queue="General" subject="Subject van de ticket" cc="Correspondentie wordt ook hierheen gestuurd"</tt><br />
* Correspondentie toevoegen: <tt>rt correspond -m "Het bericht staat hier" 4</tt> (4 is de ticket-id)<br />
* Voor gebruik van <tt>/usr/bin/rt</tt>, zie <tt>rt help conf</tt> en <tt>rt help usage</tt>.</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Support-infrastructuur&diff=1020Support-infrastructuur2013-02-18T03:08:24Z<p>SGielen: Andere kleine configuratie</p>
<hr />
<div>Support@ is sinds het begin bemand geweest door Sjors, Gerdriaan en Mark, waarbij Sjors de meeste mails afhandelde. Omdat puur e-mail gebruiken tracken lastiger maakt, en er wel eens voor zorgde dat Sjors en Gerdriaan tegelijkertijd een antwoord stuurden, zijn we begin 2013 gaan kijken naar een ticketingsysteem. We hebben geëxperimenteerd met [http://bestpractical.com/rt/ Request Tracker] en hebben besloten dat we dat systeem als implementatie gaan gebruiken voor support-tickets.<br />
<br />
We hadden verschillende eisen voor dit systeem:<br />
<br />
# Het moet duidelijk zijn wie een ticket behandelt (eigenaar & claimfunctionaliteit)<br />
# We moeten wel alle tickets in kunnen zien, ongeacht eigenaar<br />
# Het systeem moet mailnotificaties sturen als er interessante dingen gebeuren<br />
# Alle communicatie in een ticket moet in 1 overzicht zichtbaar zijn<br />
# We willen extra properties kunnen zetten op een ticket, zodat een mail automatisch interessante informatie verzamelt (accountnaam, SIM-gegevens, eventuele SpeakUp-ticketnummers)<br />
# Tickets moeten via een commandline-interface in te zien en te wijzigen zijn<br />
# Voortgang van tickets moet snel zichtbaar zijn<br />
# Er moet een systeem voor reminders zijn, bijv. "over 2 dagen nog eens kijken hoe het staat" of "moet maximaal over 3 dagen opgelost zijn"<br />
# Dat systeem voor reminders moet ons ook kunnen e-mailen<br />
# We moeten vanaf de commandline mensen e-mail kunnen sturen, zo dat replies automatisch in dezelfde ticket komen<br />
<br />
Het bleek dat Request Tracker dit allemaal kon, of gemakkelijk aan te vullen was zodat het dit kon. Op deze pagina beschrijf ik hoe we de boel hebben geïmplementeerd, voor het geval we het nog eens moeten doen en in de hoop dat het nuttig is voor anderen.<br />
<br />
== Installatie ==<br />
<br />
De Request Tracker-installatie draait op de Debian-machine <tt>api.limesco.nl</tt>. Installatie op Debian is zo simpel als <tt>apt-get install request-tracker4</tt>. Tijdens de installatie wordt gevraagd om de naam van de Request Tracker-instance (de <tt>rtname</tt>); die wordt bijvoorbeeld gebruikt voor de subject tag in mailtjes. In ons geval is dat simpelweg <tt>Limesco</tt>.<br />
<br />
Request Tracker gaat uitgevoerd worden als de user <tt>www-data</tt> omdat er niets anders als de <tt>www-data</tt>-gebruiker uitgevoerd wordt. Zouden er al bestaande services gebruikmaken van die user, dan zouden we de voorkeur hebben een aparte gebruiker aan te maken voor RT. Op de vraag "Handle RT_SiteConfig.pm permissions?" antwoorden we nu dus ja. De databaseconfiguratie kan ook automatisch worden gedaan ("Yes") en voor het initial root password kiezen we een lang, onraadbaar wachtwoord. Zodra RT is geïnstalleerd maken we een setje accounts voor mensen; de root-account wordt dan alleen nog gebruikt voor geautomatiseerde scripts.<br />
<br />
Het instellen van Request Tracker zelf gaat via <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt>, daar staat het volgende:<br />
<br />
<pre><br />
# THE BASICS:<br />
<br />
Set($rtname, 'Limesco');<br />
Set($Organization, 'Limesco');<br />
<br />
Set($CorrespondAddress , 'support@limesco.nl');<br />
Set($CommentAddress , 'support-comment@rt.limesco.nl');<br />
<br />
# THE WEBSERVER:<br />
<br />
Set($WebPath , "/rt");<br />
Set($WebBaseURL , "https://api.limesco.nl");<br />
Set($WebPort, 443);<br />
Set($WebDomain, "api.limesco.nl");<br />
</pre><br />
<br />
Om deze configuratie bij te werken, voeren we <tt>update-rt-siteconfig-4</tt> uit.<br />
<br />
== Configuratie website ==<br />
<br />
Op <tt>api.limesco.nl</tt> gebruiken we nginx, een snelle lichte webserver met CGI-support. Om nginx en Request Tracker samen te laten werken is de package <tt>rt4-fcgi</tt> nodig. Die installeert een <tt>/etc/init.d/rt4-fcgi</tt> die Request Tracker via FastCGI bereikbaar maakt, en een <tt>/usr/share/doc/rt4-fcgi/examples/request-tracker4.conf</tt> die de interface naar Nginx maakt. Die<br />
interface gebruiken wij als opzetje voor de configuratie in nginx, die RT alleen bereikbaar maakt via SSL:<br />
<br />
<pre><br />
server {<br />
listen 443;<br />
server_name api.limesco.nl;<br />
<br />
root /var/www;<br />
index index.html index.htm;<br />
<br />
ssl on;<br />
ssl_certificate /etc/nginx/ssl/api.limesco.nl.bundle-primary-first.crt;<br />
ssl_certificate_key /etc/nginx/ssl/api.limesco.nl.key;<br />
<br />
ssl_session_timeout 5m;<br />
<br />
# request-tracker4 configuration for nginx<br />
# (belong to /etc/nginx/conf.d)<br />
location /rt {<br />
alias /usr/share/request-tracker4/html;<br />
<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
}<br />
<br />
# Bypass FastCGI for images<br />
location /rt/NoAuth/images {<br />
alias /usr/share/request-tracker4/html/NoAuth/images/;<br />
}<br />
<br />
# Limit mail gateway access to localhost by default<br />
location /rt/REST/1.0/NoAuth {<br />
alias /usr/share/request-tracker4/html/REST/1.0/NoAuth/;<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
<br />
allow 127.0.0.1;<br />
allow 93.191.131.63; # ons eigen IP-adres<br />
allow ::1/128;<br />
allow 2a02:348:9a:833f::1/128; # ons eigen v6-adres<br />
deny all;<br />
}<br />
}<br />
</pre><br />
<br />
Om de FastCGI-daemon aan te zetten verander je <tt>enabled=0</tt> in <tt>enabled=1</tt> in <tt>/etc/default/rt4-fcgi</tt>. Dan resteert ons nog het opstarten van de FastCGI-daemon en het herstarten van Nginx:<br />
<br />
<pre><br />
$ sudo ln -s /etc/nginx/sites-available/rt.conf /etc/nginx/sites-enabled/<br />
$ sudo /etc/init.d/rt4-fcgi start<br />
$ sudo /etc/init.d/nginx restart<br />
</pre><br />
<br />
En [https://api.limesco.nl/rt https://api.limesco.nl/rt] geeft netjes het loginscherm van Request Tracker weer.<br />
<br />
== Configuratie gebruikers ==<br />
<br />
Als eerste willen we users toevoegen. Dat kan in Tools → Configuration → Users → Create. Zet "let this user access RT" en "let this user be granted rights" aan. Maak ook een groep voor de administrators ("admin"): Tools → Configuration → Groups → Create; na het maken kun je rechtsboven bij "Members" members toevoegen. Deze groep geven we extra rechten: Tools → Configuration → Global → Group Rights; vul links onderin "admin" (de naam van de groep) in, klik op "Rights for Administrators", en tick "Do anything and everything".<br />
<br />
We kunnen nu uitloggen als root en inloggen als één van de users die we hebben gemaakt.<br />
<br />
== Nieuwe tickets via e-mail ==<br />
<br />
Zodra er een e-mail binnenkomt aan <tt>support@limesco.nl</tt> moet die e-mail in Request Tracker worden ingevoerd. Daarvoor gaan we de configuratie van Postfix in. E-mail aan <tt>support@limesco.nl</tt> (en andere supportadressen) wordt geforward naar <tt>support-rt@rt.limesco.nl</tt>, dus onze Postfix moet <tt>rt.limesco.nl</tt> als zijn destination zien. We voegen daarom dat adres toe aan <tt>mydestination</tt> in <tt>/etc/postfix/main.cf</tt> en herstarten Postfix.<br />
<br />
Daarnaast is het nog belangrijk dat er bij e-mail aan <tt>support-rt@rt.limesco.nl</tt> een programma van RT (<tt>rt-mailgate</tt>) wordt uitgevoerd. Daarvoor voegen we de volgende twee regels toe aan <tt>/etc/aliases</tt>:<br />
<br />
<pre><br />
support-rt: "|/usr/bin/rt-mailgate --queue 'General' --action correspond --url https://api.limesco.nl/rt"<br />
support-rt-comment: "|/usr/bin/rt-mailgate --queue 'General' --action comment --url https://api.limesco.nl/rt"<br />
</pre><br />
<br />
<tt>rt-mailgate</tt> zal dus nu uitgevoerd worden bij het ontvangen van zo'n e-mail; hij zal HTTP-requests doen aan het NoAuth-gedeelte van RT (dat alleen openstaat aan localhost door de configuratie hierboven). Voer <tt>sudo newaliases</tt> uit om de aliases-database bij te werken en e-mail zal nu netjes uitkomen bij Request Tracker.<br />
<br />
Echter, voordat Request Tracker nieuwe tickets mag aanmaken voor ongeauthoriseerde e-mailadressen moet die permissie nog gegeven worden. Dat gebeurt onder Tools → Configuration → Global → Group Rights; klik links op Everyone en tick "Create Tickets" en "Reply to tickets".<br />
<br />
== Iedereens tickets kunnen zien ==<br />
<br />
Volgens eis (2) moet iedereen iedereens tickets kunnen bekijken. Met name alle open tickets, ongeacht eigenaar, moeten op de voorpagina te zien zijn. Dat doen we door een Saved Search te maken (Tickets → New Search). Daar definiëren we:<br />
<br />
<pre><br />
Status != 'resolved'<br />
AND Status != 'rejected'<br />
</pre><br />
<br />
Gesorteerd op LastUpdated ASC, en dan rechts opslaan als Saved Search "Open Tickets" (onder RT System's saved searches). Er wordt nu een nieuwe entry gemaakt die toegevoegd kan worden aan het Dashboard ("RT At A Glance"). Door dan naar Tools → Configuration → Global → RT at a glance te gaan, kun je onder "Body" links "Open Tickets" selecteren, verplaatsen naar rechts, en schuiven naar waar hij moet verschijnen. Eventueel dan per account nog dezelfde wijziging uitvoeren of resetten naar default (usermenu → Settings → RT at a glance), en het lijstje open tickets staat erbij op de voorpagina.<br />
<br />
== Notificaties sturen vanaf RT ==<br />
<br />
Voor het versturen van de notificaties, voegen we het volgende toe aan <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt>:<br />
<br />
<pre><br />
# E-MAIL:<br />
<br />
Set($SendmailArguments, "-oi -t -f support@limesco.nl");<br />
Set($OwnerEmail, "postmaster@limesco.nl");<br />
</pre><br />
<br />
Voer weer <tt>update-rt-siteconfig-4</tt> uit om de veranderingen te verwerken. Maak nu een groep genaamd DefaultQueueAdminCc (Tools → Configuration → Groups → Create); ga naar Members en iedere user toe die e-mail moet ontvangen voor de default queue.<br />
<br />
We voegen nu de groep DefaultQueueAdminCc toe als AdminCc van de default queue: ga naar Tools → Configuration → Queues → Select, klik General en ga naar Watchers rechtsboven; "Find Groups whose Name matches DefaultQueueAdminCc", selecteer onder Groups "AdminCc" voor de groep, en klik op "Save Changes".<br />
<br />
Welke e-mail de AdminCc van een queue krijgt is aan te passen onder Tools → Configuration → Global → Scrips → Select: standaard gelden de volgende regels:<br />
<br />
* On Comment Notify AdminCcs as Comment<br />
* On Correspond Notify AdminCcs<br />
* On Create Notify AdminCcs<br />
<br />
Door bijv. de eerste twee regels weg te halen krijgen AdminCc's nog wel e-mail voor een nieuwe ticket, maar niet meer elkaars correspondentie op een ticket. (Dat doen wij hier niet.)<br />
<br />
== Mails sturen bij reminders ==<br />
<br />
In RT kun je reminders zetten op een ticket. Dat zijn zelf ook weer simpele tickets met een "due date" en een link naar het oorspronkelijke ticket. Als we willen dat er ook een mail wordt gestuurd als een reminder nadert, kunnen we <tt>rt-crontool</tt> in een crontab zetten.<br />
<br />
Eerst moet de UNIX-gebruiker "www-data" herkend worden door het RT-systeem, zodat hij toegang heeft, tickets kan bekijken en e-mail kan sturen. Daarvoor gaan we naar Tools → Configuration → Users → Select, selecteren we "root" en zetten we zijn UNIX login op "www-data" (of de gebruiker die gebruikt wordt voor RT). Je kunt hier ook de "Real name" aanpassen naar iets vriendelijkers. Je kunt ook een nieuwe gebruiker maken voor dit doel, maar "root" werd toch niet echt meer gebruikt.<br />
<br />
We maken nu een template voor de e-mail die <tt>rt-crontool</tt> gaat laten sturen, in Tools → Configuration → Global → Templates → Create. We noemen hem "Reminder due soon" en zetten het volgende erin:<br />
<br />
<pre><br />
To: { $Target = $Ticket->RefersTo->First->TargetObj; ($Argument eq 'TicketOwner' ? $Target : $Ticket)->OwnerObj->EmailAddress }<br />
Subject: {$Ticket->Subject} is due {$Ticket->DueAsString}<br />
<br />
Just a friendly heads up. This reminder is for ticket #{$Target->Id}.<br />
<br />
Original ticket: {RT->Config->Get('WebURL')}Ticket/Display.html?id={$Target->Id}<br />
</pre><br />
<br />
Daarna maken we een <tt>/etc/cron.daily/request-tracker4-reminders</tt>, executable, met de volgende inhoud:<br />
<br />
<pre><br />
sudo -H -u www-data rt-crontool \<br />
--search RT::Search::FromSQL \<br />
--search-arg 'Type = "reminder" and (Status = "open" or Status = "new")' \<br />
--condition RT::Condition::BeforeDue \<br />
--condition-arg 2d \<br />
--action RT::Action::RecordComment \<br />
--action-arg Owner \<br />
--transaction first \<br />
--template 'Reminder due soon'<br />
</pre><br />
<br />
Dit zal nu voor iedere reminder die binnen 2 dagen afloopt een comment plaatsen bij die reminder. De gebruiker die de reminder heeft geplaatst krijgt van comments een e-mail als je "Notificaties sturen vanaf RT" hierboven ook hebt gevolgd. Eventueel kun je de <tt>--action</tt> vervangen door <tt>RT::Action::SendEmail</tt> om direct een e-mail te versturen zonder een comment te plaatsen.<br />
<br />
== Andere kleine configuratie ==<br />
<br />
* Geen automatische mail meer sturen bij het sluiten van een ticket: Tools → Configuration → Global → Scrips → Select, On Resolve Notify Requestors, selecteer, Delete.<br />
* Nederlandse auto-replies: Tools → Configuration → Global → Templates → Select, klik Autoreply (2), verander het naar:<br />
<br />
<pre><br />
Subject: Ticket wordt in behandeling genomen: {$Ticket->Subject}<br />
<br />
L.S.,<br />
<br />
Dit is een automatisch gegenereerd bericht om te bevestigen dat uw e-mail is ontvangen en in behandeling wordt genomen. Wij zouden het waarderen als u "{ $Ticket->SubjectTag }" in het onderwerp van vervolg-e-mails laat staan.<br />
<br />
Met vriendelijke groet,<br />
Limesco<br />
<br />
De oorspronkelijke tekst van uw bericht volgt.<br />
-------------------------------------------------------------------------<br />
{$Transaction->Content()}<br />
</pre></div>SGielenhttps://secure.limesco.nl/w/index.php?title=Support-infrastructuur&diff=1019Support-infrastructuur2013-02-18T03:05:19Z<p>SGielen: Mails sturen bij reminders</p>
<hr />
<div>Support@ is sinds het begin bemand geweest door Sjors, Gerdriaan en Mark, waarbij Sjors de meeste mails afhandelde. Omdat puur e-mail gebruiken tracken lastiger maakt, en er wel eens voor zorgde dat Sjors en Gerdriaan tegelijkertijd een antwoord stuurden, zijn we begin 2013 gaan kijken naar een ticketingsysteem. We hebben geëxperimenteerd met [http://bestpractical.com/rt/ Request Tracker] en hebben besloten dat we dat systeem als implementatie gaan gebruiken voor support-tickets.<br />
<br />
We hadden verschillende eisen voor dit systeem:<br />
<br />
# Het moet duidelijk zijn wie een ticket behandelt (eigenaar & claimfunctionaliteit)<br />
# We moeten wel alle tickets in kunnen zien, ongeacht eigenaar<br />
# Het systeem moet mailnotificaties sturen als er interessante dingen gebeuren<br />
# Alle communicatie in een ticket moet in 1 overzicht zichtbaar zijn<br />
# We willen extra properties kunnen zetten op een ticket, zodat een mail automatisch interessante informatie verzamelt (accountnaam, SIM-gegevens, eventuele SpeakUp-ticketnummers)<br />
# Tickets moeten via een commandline-interface in te zien en te wijzigen zijn<br />
# Voortgang van tickets moet snel zichtbaar zijn<br />
# Er moet een systeem voor reminders zijn, bijv. "over 2 dagen nog eens kijken hoe het staat" of "moet maximaal over 3 dagen opgelost zijn"<br />
# Dat systeem voor reminders moet ons ook kunnen e-mailen<br />
# We moeten vanaf de commandline mensen e-mail kunnen sturen, zo dat replies automatisch in dezelfde ticket komen<br />
<br />
Het bleek dat Request Tracker dit allemaal kon, of gemakkelijk aan te vullen was zodat het dit kon. Op deze pagina beschrijf ik hoe we de boel hebben geïmplementeerd, voor het geval we het nog eens moeten doen en in de hoop dat het nuttig is voor anderen.<br />
<br />
== Installatie ==<br />
<br />
De Request Tracker-installatie draait op de Debian-machine <tt>api.limesco.nl</tt>. Installatie op Debian is zo simpel als <tt>apt-get install request-tracker4</tt>. Tijdens de installatie wordt gevraagd om de naam van de Request Tracker-instance (de <tt>rtname</tt>); die wordt bijvoorbeeld gebruikt voor de subject tag in mailtjes. In ons geval is dat simpelweg <tt>Limesco</tt>.<br />
<br />
Request Tracker gaat uitgevoerd worden als de user <tt>www-data</tt> omdat er niets anders als de <tt>www-data</tt>-gebruiker uitgevoerd wordt. Zouden er al bestaande services gebruikmaken van die user, dan zouden we de voorkeur hebben een aparte gebruiker aan te maken voor RT. Op de vraag "Handle RT_SiteConfig.pm permissions?" antwoorden we nu dus ja. De databaseconfiguratie kan ook automatisch worden gedaan ("Yes") en voor het initial root password kiezen we een lang, onraadbaar wachtwoord. Zodra RT is geïnstalleerd maken we een setje accounts voor mensen; de root-account wordt dan alleen nog gebruikt voor geautomatiseerde scripts.<br />
<br />
Het instellen van Request Tracker zelf gaat via <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt>, daar staat het volgende:<br />
<br />
<pre><br />
# THE BASICS:<br />
<br />
Set($rtname, 'Limesco');<br />
Set($Organization, 'Limesco');<br />
<br />
Set($CorrespondAddress , 'support@limesco.nl');<br />
Set($CommentAddress , 'support-comment@rt.limesco.nl');<br />
<br />
# THE WEBSERVER:<br />
<br />
Set($WebPath , "/rt");<br />
Set($WebBaseURL , "https://api.limesco.nl");<br />
Set($WebPort, 443);<br />
Set($WebDomain, "api.limesco.nl");<br />
</pre><br />
<br />
Om deze configuratie bij te werken, voeren we <tt>update-rt-siteconfig-4</tt> uit.<br />
<br />
== Configuratie website ==<br />
<br />
Op <tt>api.limesco.nl</tt> gebruiken we nginx, een snelle lichte webserver met CGI-support. Om nginx en Request Tracker samen te laten werken is de package <tt>rt4-fcgi</tt> nodig. Die installeert een <tt>/etc/init.d/rt4-fcgi</tt> die Request Tracker via FastCGI bereikbaar maakt, en een <tt>/usr/share/doc/rt4-fcgi/examples/request-tracker4.conf</tt> die de interface naar Nginx maakt. Die<br />
interface gebruiken wij als opzetje voor de configuratie in nginx, die RT alleen bereikbaar maakt via SSL:<br />
<br />
<pre><br />
server {<br />
listen 443;<br />
server_name api.limesco.nl;<br />
<br />
root /var/www;<br />
index index.html index.htm;<br />
<br />
ssl on;<br />
ssl_certificate /etc/nginx/ssl/api.limesco.nl.bundle-primary-first.crt;<br />
ssl_certificate_key /etc/nginx/ssl/api.limesco.nl.key;<br />
<br />
ssl_session_timeout 5m;<br />
<br />
# request-tracker4 configuration for nginx<br />
# (belong to /etc/nginx/conf.d)<br />
location /rt {<br />
alias /usr/share/request-tracker4/html;<br />
<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
}<br />
<br />
# Bypass FastCGI for images<br />
location /rt/NoAuth/images {<br />
alias /usr/share/request-tracker4/html/NoAuth/images/;<br />
}<br />
<br />
# Limit mail gateway access to localhost by default<br />
location /rt/REST/1.0/NoAuth {<br />
alias /usr/share/request-tracker4/html/REST/1.0/NoAuth/;<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
<br />
allow 127.0.0.1;<br />
allow 93.191.131.63; # ons eigen IP-adres<br />
allow ::1/128;<br />
allow 2a02:348:9a:833f::1/128; # ons eigen v6-adres<br />
deny all;<br />
}<br />
}<br />
</pre><br />
<br />
Om de FastCGI-daemon aan te zetten verander je <tt>enabled=0</tt> in <tt>enabled=1</tt> in <tt>/etc/default/rt4-fcgi</tt>. Dan resteert ons nog het opstarten van de FastCGI-daemon en het herstarten van Nginx:<br />
<br />
<pre><br />
$ sudo ln -s /etc/nginx/sites-available/rt.conf /etc/nginx/sites-enabled/<br />
$ sudo /etc/init.d/rt4-fcgi start<br />
$ sudo /etc/init.d/nginx restart<br />
</pre><br />
<br />
En [https://api.limesco.nl/rt https://api.limesco.nl/rt] geeft netjes het loginscherm van Request Tracker weer.<br />
<br />
== Configuratie gebruikers ==<br />
<br />
Als eerste willen we users toevoegen. Dat kan in Tools → Configuration → Users → Create. Zet "let this user access RT" en "let this user be granted rights" aan. Maak ook een groep voor de administrators ("admin"): Tools → Configuration → Groups → Create; na het maken kun je rechtsboven bij "Members" members toevoegen. Deze groep geven we extra rechten: Tools → Configuration → Global → Group Rights; vul links onderin "admin" (de naam van de groep) in, klik op "Rights for Administrators", en tick "Do anything and everything".<br />
<br />
We kunnen nu uitloggen als root en inloggen als één van de users die we hebben gemaakt.<br />
<br />
== Nieuwe tickets via e-mail ==<br />
<br />
Zodra er een e-mail binnenkomt aan <tt>support@limesco.nl</tt> moet die e-mail in Request Tracker worden ingevoerd. Daarvoor gaan we de configuratie van Postfix in. E-mail aan <tt>support@limesco.nl</tt> (en andere supportadressen) wordt geforward naar <tt>support-rt@rt.limesco.nl</tt>, dus onze Postfix moet <tt>rt.limesco.nl</tt> als zijn destination zien. We voegen daarom dat adres toe aan <tt>mydestination</tt> in <tt>/etc/postfix/main.cf</tt> en herstarten Postfix.<br />
<br />
Daarnaast is het nog belangrijk dat er bij e-mail aan <tt>support-rt@rt.limesco.nl</tt> een programma van RT (<tt>rt-mailgate</tt>) wordt uitgevoerd. Daarvoor voegen we de volgende twee regels toe aan <tt>/etc/aliases</tt>:<br />
<br />
<pre><br />
support-rt: "|/usr/bin/rt-mailgate --queue 'General' --action correspond --url https://api.limesco.nl/rt"<br />
support-rt-comment: "|/usr/bin/rt-mailgate --queue 'General' --action comment --url https://api.limesco.nl/rt"<br />
</pre><br />
<br />
<tt>rt-mailgate</tt> zal dus nu uitgevoerd worden bij het ontvangen van zo'n e-mail; hij zal HTTP-requests doen aan het NoAuth-gedeelte van RT (dat alleen openstaat aan localhost door de configuratie hierboven). Voer <tt>sudo newaliases</tt> uit om de aliases-database bij te werken en e-mail zal nu netjes uitkomen bij Request Tracker.<br />
<br />
Echter, voordat Request Tracker nieuwe tickets mag aanmaken voor ongeauthoriseerde e-mailadressen moet die permissie nog gegeven worden. Dat gebeurt onder Tools → Configuration → Global → Group Rights; klik links op Everyone en tick "Create Tickets" en "Reply to tickets".<br />
<br />
== Iedereens tickets kunnen zien ==<br />
<br />
Volgens eis (2) moet iedereen iedereens tickets kunnen bekijken. Met name alle open tickets, ongeacht eigenaar, moeten op de voorpagina te zien zijn. Dat doen we door een Saved Search te maken (Tickets → New Search). Daar definiëren we:<br />
<br />
<pre><br />
Status != 'resolved'<br />
AND Status != 'rejected'<br />
</pre><br />
<br />
Gesorteerd op LastUpdated ASC, en dan rechts opslaan als Saved Search "Open Tickets" (onder RT System's saved searches). Er wordt nu een nieuwe entry gemaakt die toegevoegd kan worden aan het Dashboard ("RT At A Glance"). Door dan naar Tools → Configuration → Global → RT at a glance te gaan, kun je onder "Body" links "Open Tickets" selecteren, verplaatsen naar rechts, en schuiven naar waar hij moet verschijnen. Eventueel dan per account nog dezelfde wijziging uitvoeren of resetten naar default (usermenu → Settings → RT at a glance), en het lijstje open tickets staat erbij op de voorpagina.<br />
<br />
== Notificaties sturen vanaf RT ==<br />
<br />
Voor het versturen van de notificaties, voegen we het volgende toe aan <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt>:<br />
<br />
<pre><br />
# E-MAIL:<br />
<br />
Set($SendmailArguments, "-oi -t -f support@limesco.nl");<br />
Set($OwnerEmail, "postmaster@limesco.nl");<br />
</pre><br />
<br />
Voer weer <tt>update-rt-siteconfig-4</tt> uit om de veranderingen te verwerken. Maak nu een groep genaamd DefaultQueueAdminCc (Tools → Configuration → Groups → Create); ga naar Members en iedere user toe die e-mail moet ontvangen voor de default queue.<br />
<br />
We voegen nu de groep DefaultQueueAdminCc toe als AdminCc van de default queue: ga naar Tools → Configuration → Queues → Select, klik General en ga naar Watchers rechtsboven; "Find Groups whose Name matches DefaultQueueAdminCc", selecteer onder Groups "AdminCc" voor de groep, en klik op "Save Changes".<br />
<br />
Welke e-mail de AdminCc van een queue krijgt is aan te passen onder Tools → Configuration → Global → Scrips → Select: standaard gelden de volgende regels:<br />
<br />
* On Comment Notify AdminCcs as Comment<br />
* On Correspond Notify AdminCcs<br />
* On Create Notify AdminCcs<br />
<br />
Door bijv. de eerste twee regels weg te halen krijgen AdminCc's nog wel e-mail voor een nieuwe ticket, maar niet meer elkaars correspondentie op een ticket. (Dat doen wij hier niet.)<br />
<br />
== Mails sturen bij reminders ==<br />
<br />
In RT kun je reminders zetten op een ticket. Dat zijn zelf ook weer simpele tickets met een "due date" en een link naar het oorspronkelijke ticket. Als we willen dat er ook een mail wordt gestuurd als een reminder nadert, kunnen we <tt>rt-crontool</tt> in een crontab zetten.<br />
<br />
Eerst moet de UNIX-gebruiker "www-data" herkend worden door het RT-systeem, zodat hij toegang heeft, tickets kan bekijken en e-mail kan sturen. Daarvoor gaan we naar Tools → Configuration → Users → Select, selecteren we "root" en zetten we zijn UNIX login op "www-data" (of de gebruiker die gebruikt wordt voor RT). Je kunt hier ook de "Real name" aanpassen naar iets vriendelijkers. Je kunt ook een nieuwe gebruiker maken voor dit doel, maar "root" werd toch niet echt meer gebruikt.<br />
<br />
We maken nu een template voor de e-mail die <tt>rt-crontool</tt> gaat laten sturen, in Tools → Configuration → Global → Templates → Create. We noemen hem "Reminder due soon" en zetten het volgende erin:<br />
<br />
<pre><br />
To: { $Target = $Ticket->RefersTo->First->TargetObj; ($Argument eq 'TicketOwner' ? $Target : $Ticket)->OwnerObj->EmailAddress }<br />
Subject: {$Ticket->Subject} is due {$Ticket->DueAsString}<br />
<br />
Just a friendly heads up. This reminder is for ticket #{$Target->Id}.<br />
<br />
Original ticket: {RT->Config->Get('WebURL')}Ticket/Display.html?id={$Target->Id}<br />
</pre><br />
<br />
Daarna maken we een <tt>/etc/cron.daily/request-tracker4-reminders</tt>, executable, met de volgende inhoud:<br />
<br />
<pre><br />
sudo -H -u www-data rt-crontool \<br />
--search RT::Search::FromSQL \<br />
--search-arg 'Type = "reminder" and (Status = "open" or Status = "new")' \<br />
--condition RT::Condition::BeforeDue \<br />
--condition-arg 2d \<br />
--action RT::Action::RecordComment \<br />
--action-arg Owner \<br />
--transaction first \<br />
--template 'Reminder due soon'<br />
</pre><br />
<br />
Dit zal nu voor iedere reminder die binnen 2 dagen afloopt een comment plaatsen bij die reminder. De gebruiker die de reminder heeft geplaatst krijgt van comments een e-mail als je "Notificaties sturen vanaf RT" hierboven ook hebt gevolgd. Eventueel kun je de <tt>--action</tt> vervangen door <tt>RT::Action::SendEmail</tt> om direct een e-mail te versturen zonder een comment te plaatsen.</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Support-infrastructuur&diff=1018Support-infrastructuur2013-02-18T02:49:02Z<p>SGielen: rtname mag gewoon Limesco zijn. /* Installatie */</p>
<hr />
<div>Support@ is sinds het begin bemand geweest door Sjors, Gerdriaan en Mark, waarbij Sjors de meeste mails afhandelde. Omdat puur e-mail gebruiken tracken lastiger maakt, en er wel eens voor zorgde dat Sjors en Gerdriaan tegelijkertijd een antwoord stuurden, zijn we begin 2013 gaan kijken naar een ticketingsysteem. We hebben geëxperimenteerd met [http://bestpractical.com/rt/ Request Tracker] en hebben besloten dat we dat systeem als implementatie gaan gebruiken voor support-tickets.<br />
<br />
We hadden verschillende eisen voor dit systeem:<br />
<br />
# Het moet duidelijk zijn wie een ticket behandelt (eigenaar & claimfunctionaliteit)<br />
# We moeten wel alle tickets in kunnen zien, ongeacht eigenaar<br />
# Het systeem moet mailnotificaties sturen als er interessante dingen gebeuren<br />
# Alle communicatie in een ticket moet in 1 overzicht zichtbaar zijn<br />
# We willen extra properties kunnen zetten op een ticket, zodat een mail automatisch interessante informatie verzamelt (accountnaam, SIM-gegevens, eventuele SpeakUp-ticketnummers)<br />
# Tickets moeten via een commandline-interface in te zien en te wijzigen zijn<br />
# Voortgang van tickets moet snel zichtbaar zijn<br />
# Er moet een systeem voor reminders zijn, bijv. "over 2 dagen nog eens kijken hoe het staat" of "moet maximaal over 3 dagen opgelost zijn"<br />
# Dat systeem voor reminders moet ons ook kunnen e-mailen<br />
# We moeten vanaf de commandline mensen e-mail kunnen sturen, zo dat replies automatisch in dezelfde ticket komen<br />
<br />
Het bleek dat Request Tracker dit allemaal kon, of gemakkelijk aan te vullen was zodat het dit kon. Op deze pagina beschrijf ik hoe we de boel hebben geïmplementeerd, voor het geval we het nog eens moeten doen en in de hoop dat het nuttig is voor anderen.<br />
<br />
== Installatie ==<br />
<br />
De Request Tracker-installatie draait op de Debian-machine <tt>api.limesco.nl</tt>. Installatie op Debian is zo simpel als <tt>apt-get install request-tracker4</tt>. Tijdens de installatie wordt gevraagd om de naam van de Request Tracker-instance (de <tt>rtname</tt>); die wordt bijvoorbeeld gebruikt voor de subject tag in mailtjes. In ons geval is dat simpelweg <tt>Limesco</tt>.<br />
<br />
Request Tracker gaat uitgevoerd worden als de user <tt>www-data</tt> omdat er niets anders als de <tt>www-data</tt>-gebruiker uitgevoerd wordt. Zouden er al bestaande services gebruikmaken van die user, dan zouden we de voorkeur hebben een aparte gebruiker aan te maken voor RT. Op de vraag "Handle RT_SiteConfig.pm permissions?" antwoorden we nu dus ja. De databaseconfiguratie kan ook automatisch worden gedaan ("Yes") en voor het initial root password kiezen we een lang, onraadbaar wachtwoord. Zodra RT is geïnstalleerd maken we een setje accounts voor mensen; de root-account wordt dan alleen nog gebruikt voor geautomatiseerde scripts.<br />
<br />
Het instellen van Request Tracker zelf gaat via <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt>, daar staat het volgende:<br />
<br />
<pre><br />
# THE BASICS:<br />
<br />
Set($rtname, 'Limesco');<br />
Set($Organization, 'Limesco');<br />
<br />
Set($CorrespondAddress , 'support@limesco.nl');<br />
Set($CommentAddress , 'support-comment@rt.limesco.nl');<br />
<br />
# THE WEBSERVER:<br />
<br />
Set($WebPath , "/rt");<br />
Set($WebBaseURL , "https://api.limesco.nl");<br />
Set($WebPort, 443);<br />
Set($WebDomain, "api.limesco.nl");<br />
</pre><br />
<br />
Om deze configuratie bij te werken, voeren we <tt>update-rt-siteconfig-4</tt> uit.<br />
<br />
== Configuratie website ==<br />
<br />
Op <tt>api.limesco.nl</tt> gebruiken we nginx, een snelle lichte webserver met CGI-support. Om nginx en Request Tracker samen te laten werken is de package <tt>rt4-fcgi</tt> nodig. Die installeert een <tt>/etc/init.d/rt4-fcgi</tt> die Request Tracker via FastCGI bereikbaar maakt, en een <tt>/usr/share/doc/rt4-fcgi/examples/request-tracker4.conf</tt> die de interface naar Nginx maakt. Die<br />
interface gebruiken wij als opzetje voor de configuratie in nginx, die RT alleen bereikbaar maakt via SSL:<br />
<br />
<pre><br />
server {<br />
listen 443;<br />
server_name api.limesco.nl;<br />
<br />
root /var/www;<br />
index index.html index.htm;<br />
<br />
ssl on;<br />
ssl_certificate /etc/nginx/ssl/api.limesco.nl.bundle-primary-first.crt;<br />
ssl_certificate_key /etc/nginx/ssl/api.limesco.nl.key;<br />
<br />
ssl_session_timeout 5m;<br />
<br />
# request-tracker4 configuration for nginx<br />
# (belong to /etc/nginx/conf.d)<br />
location /rt {<br />
alias /usr/share/request-tracker4/html;<br />
<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
}<br />
<br />
# Bypass FastCGI for images<br />
location /rt/NoAuth/images {<br />
alias /usr/share/request-tracker4/html/NoAuth/images/;<br />
}<br />
<br />
# Limit mail gateway access to localhost by default<br />
location /rt/REST/1.0/NoAuth {<br />
alias /usr/share/request-tracker4/html/REST/1.0/NoAuth/;<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
<br />
allow 127.0.0.1;<br />
allow 93.191.131.63; # ons eigen IP-adres<br />
allow ::1/128;<br />
allow 2a02:348:9a:833f::1/128; # ons eigen v6-adres<br />
deny all;<br />
}<br />
}<br />
</pre><br />
<br />
Om de FastCGI-daemon aan te zetten verander je <tt>enabled=0</tt> in <tt>enabled=1</tt> in <tt>/etc/default/rt4-fcgi</tt>. Dan resteert ons nog het opstarten van de FastCGI-daemon en het herstarten van Nginx:<br />
<br />
<pre><br />
$ sudo ln -s /etc/nginx/sites-available/rt.conf /etc/nginx/sites-enabled/<br />
$ sudo /etc/init.d/rt4-fcgi start<br />
$ sudo /etc/init.d/nginx restart<br />
</pre><br />
<br />
En [https://api.limesco.nl/rt https://api.limesco.nl/rt] geeft netjes het loginscherm van Request Tracker weer.<br />
<br />
== Configuratie gebruikers ==<br />
<br />
Als eerste willen we users toevoegen. Dat kan in Tools → Configuration → Users → Create. Zet "let this user access RT" en "let this user be granted rights" aan. Maak ook een groep voor de administrators ("admin"): Tools → Configuration → Groups → Create; na het maken kun je rechtsboven bij "Members" members toevoegen. Deze groep geven we extra rechten: Tools → Configuration → Global → Group Rights; vul links onderin "admin" (de naam van de groep) in, klik op "Rights for Administrators", en tick "Do anything and everything".<br />
<br />
We kunnen nu uitloggen als root en inloggen als één van de users die we hebben gemaakt.<br />
<br />
== Nieuwe tickets via e-mail ==<br />
<br />
Zodra er een e-mail binnenkomt aan <tt>support@limesco.nl</tt> moet die e-mail in Request Tracker worden ingevoerd. Daarvoor gaan we de configuratie van Postfix in. E-mail aan <tt>support@limesco.nl</tt> (en andere supportadressen) wordt geforward naar <tt>support-rt@rt.limesco.nl</tt>, dus onze Postfix moet <tt>rt.limesco.nl</tt> als zijn destination zien. We voegen daarom dat adres toe aan <tt>mydestination</tt> in <tt>/etc/postfix/main.cf</tt> en herstarten Postfix.<br />
<br />
Daarnaast is het nog belangrijk dat er bij e-mail aan <tt>support-rt@rt.limesco.nl</tt> een programma van RT (<tt>rt-mailgate</tt>) wordt uitgevoerd. Daarvoor voegen we de volgende twee regels toe aan <tt>/etc/aliases</tt>:<br />
<br />
<pre><br />
support-rt: "|/usr/bin/rt-mailgate --queue 'General' --action correspond --url https://api.limesco.nl/rt"<br />
support-rt-comment: "|/usr/bin/rt-mailgate --queue 'General' --action comment --url https://api.limesco.nl/rt"<br />
</pre><br />
<br />
<tt>rt-mailgate</tt> zal dus nu uitgevoerd worden bij het ontvangen van zo'n e-mail; hij zal HTTP-requests doen aan het NoAuth-gedeelte van RT (dat alleen openstaat aan localhost door de configuratie hierboven). Voer <tt>sudo newaliases</tt> uit om de aliases-database bij te werken en e-mail zal nu netjes uitkomen bij Request Tracker.<br />
<br />
Echter, voordat Request Tracker nieuwe tickets mag aanmaken voor ongeauthoriseerde e-mailadressen moet die permissie nog gegeven worden. Dat gebeurt onder Tools → Configuration → Global → Group Rights; klik links op Everyone en tick "Create Tickets" en "Reply to tickets".<br />
<br />
== Iedereens tickets kunnen zien ==<br />
<br />
Volgens eis (2) moet iedereen iedereens tickets kunnen bekijken. Met name alle open tickets, ongeacht eigenaar, moeten op de voorpagina te zien zijn. Dat doen we door een Saved Search te maken (Tickets → New Search). Daar definiëren we:<br />
<br />
<pre><br />
Status != 'resolved'<br />
AND Status != 'rejected'<br />
</pre><br />
<br />
Gesorteerd op LastUpdated ASC, en dan rechts opslaan als Saved Search "Open Tickets" (onder RT System's saved searches). Er wordt nu een nieuwe entry gemaakt die toegevoegd kan worden aan het Dashboard ("RT At A Glance"). Door dan naar Tools → Configuration → Global → RT at a glance te gaan, kun je onder "Body" links "Open Tickets" selecteren, verplaatsen naar rechts, en schuiven naar waar hij moet verschijnen. Eventueel dan per account nog dezelfde wijziging uitvoeren of resetten naar default (usermenu → Settings → RT at a glance), en het lijstje open tickets staat erbij op de voorpagina.<br />
<br />
== Notificaties sturen vanaf RT ==<br />
<br />
Voor het versturen van de notificaties, voegen we het volgende toe aan <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt>:<br />
<br />
<pre><br />
# E-MAIL:<br />
<br />
Set($SendmailArguments, "-oi -t -f support@limesco.nl");<br />
Set($OwnerEmail, "postmaster@limesco.nl");<br />
</pre><br />
<br />
Voer weer <tt>update-rt-siteconfig-4</tt> uit om de veranderingen te verwerken. Maak nu een groep genaamd DefaultQueueAdminCc (Tools → Configuration → Groups → Create); ga naar Members en iedere user toe die e-mail moet ontvangen voor de default queue.<br />
<br />
We voegen nu de groep DefaultQueueAdminCc toe als AdminCc van de default queue: ga naar Tools → Configuration → Queues → Select, klik General en ga naar Watchers rechtsboven; "Find Groups whose Name matches DefaultQueueAdminCc", selecteer onder Groups "AdminCc" voor de groep, en klik op "Save Changes".<br />
<br />
Welke e-mail de AdminCc van een queue krijgt is aan te passen onder Tools → Configuration → Global → Scrips → Select: standaard gelden de volgende regels:<br />
<br />
* On Comment Notify AdminCcs as Comment<br />
* On Correspond Notify AdminCcs<br />
* On Create Notify AdminCcs<br />
<br />
Door bijv. de eerste twee regels weg te halen krijgen AdminCc's nog wel e-mail voor een nieuwe ticket, maar niet meer elkaars correspondentie op een ticket. (Dat doen wij hier niet.)</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Support-infrastructuur&diff=1017Support-infrastructuur2013-02-18T02:44:01Z<p>SGielen: </p>
<hr />
<div>Support@ is sinds het begin bemand geweest door Sjors, Gerdriaan en Mark, waarbij Sjors de meeste mails afhandelde. Omdat puur e-mail gebruiken tracken lastiger maakt, en er wel eens voor zorgde dat Sjors en Gerdriaan tegelijkertijd een antwoord stuurden, zijn we begin 2013 gaan kijken naar een ticketingsysteem. We hebben geëxperimenteerd met [http://bestpractical.com/rt/ Request Tracker] en hebben besloten dat we dat systeem als implementatie gaan gebruiken voor support-tickets.<br />
<br />
We hadden verschillende eisen voor dit systeem:<br />
<br />
# Het moet duidelijk zijn wie een ticket behandelt (eigenaar & claimfunctionaliteit)<br />
# We moeten wel alle tickets in kunnen zien, ongeacht eigenaar<br />
# Het systeem moet mailnotificaties sturen als er interessante dingen gebeuren<br />
# Alle communicatie in een ticket moet in 1 overzicht zichtbaar zijn<br />
# We willen extra properties kunnen zetten op een ticket, zodat een mail automatisch interessante informatie verzamelt (accountnaam, SIM-gegevens, eventuele SpeakUp-ticketnummers)<br />
# Tickets moeten via een commandline-interface in te zien en te wijzigen zijn<br />
# Voortgang van tickets moet snel zichtbaar zijn<br />
# Er moet een systeem voor reminders zijn, bijv. "over 2 dagen nog eens kijken hoe het staat" of "moet maximaal over 3 dagen opgelost zijn"<br />
# Dat systeem voor reminders moet ons ook kunnen e-mailen<br />
# We moeten vanaf de commandline mensen e-mail kunnen sturen, zo dat replies automatisch in dezelfde ticket komen<br />
<br />
Het bleek dat Request Tracker dit allemaal kon, of gemakkelijk aan te vullen was zodat het dit kon. Op deze pagina beschrijf ik hoe we de boel hebben geïmplementeerd, voor het geval we het nog eens moeten doen en in de hoop dat het nuttig is voor anderen.<br />
<br />
== Installatie ==<br />
<br />
De Request Tracker-installatie draait op de Debian-machine <tt>api.limesco.nl</tt>. Installatie op Debian is zo simpel als <tt>apt-get install request-tracker4</tt>. Tijdens de installatie wordt gevraagd om de naam van de Request Tracker-instance. In ons geval is dat <tt>rt.limesco.nl</tt>:<br />
<br />
<pre><br />
$ host rt.limesco.nl<br />
rt.limesco.nl mail is handled by 20 relay.transip.nl.<br />
rt.limesco.nl mail is handled by 10 api.limesco.nl.<br />
</pre><br />
<br />
Request Tracker gaat uitgevoerd worden als de user <tt>www-data</tt> omdat er niets anders als de <tt>www-data</tt>-gebruiker uitgevoerd wordt. Zouden er al bestaande services gebruikmaken van die user, dan zouden we de voorkeur hebben een aparte gebruiker aan te maken voor RT. Op de vraag "Handle RT_SiteConfig.pm permissions?" antwoorden we nu dus ja. De databaseconfiguratie kan ook automatisch worden gedaan ("Yes") en voor het initial root password kiezen we een lang, onraadbaar wachtwoord. Zodra RT is geïnstalleerd maken we een setje accounts voor mensen; de root-account wordt dan alleen nog gebruikt voor geautomatiseerde scripts.<br />
<br />
Het instellen van Request Tracker zelf gaat via <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt>, daar staat het volgende:<br />
<br />
<pre><br />
# THE BASICS:<br />
<br />
Set($rtname, 'rt.limesco.nl');<br />
Set($Organization, 'Limesco');<br />
<br />
Set($CorrespondAddress , 'support@limesco.nl');<br />
Set($CommentAddress , 'support-comment@rt.limesco.nl');<br />
<br />
# THE WEBSERVER:<br />
<br />
Set($WebPath , "/rt");<br />
Set($WebBaseURL , "https://api.limesco.nl");<br />
Set($WebPort, 443);<br />
Set($WebDomain, "api.limesco.nl");<br />
</pre><br />
<br />
Om deze configuratie bij te werken, voeren we <tt>update-rt-siteconfig-4</tt> uit.<br />
<br />
== Configuratie website ==<br />
<br />
Op <tt>api.limesco.nl</tt> gebruiken we nginx, een snelle lichte webserver met CGI-support. Om nginx en Request Tracker samen te laten werken is de package <tt>rt4-fcgi</tt> nodig. Die installeert een <tt>/etc/init.d/rt4-fcgi</tt> die Request Tracker via FastCGI bereikbaar maakt, en een <tt>/usr/share/doc/rt4-fcgi/examples/request-tracker4.conf</tt> die de interface naar Nginx maakt. Die<br />
interface gebruiken wij als opzetje voor de configuratie in nginx, die RT alleen bereikbaar maakt via SSL:<br />
<br />
<pre><br />
server {<br />
listen 443;<br />
server_name api.limesco.nl;<br />
<br />
root /var/www;<br />
index index.html index.htm;<br />
<br />
ssl on;<br />
ssl_certificate /etc/nginx/ssl/api.limesco.nl.bundle-primary-first.crt;<br />
ssl_certificate_key /etc/nginx/ssl/api.limesco.nl.key;<br />
<br />
ssl_session_timeout 5m;<br />
<br />
# request-tracker4 configuration for nginx<br />
# (belong to /etc/nginx/conf.d)<br />
location /rt {<br />
alias /usr/share/request-tracker4/html;<br />
<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
}<br />
<br />
# Bypass FastCGI for images<br />
location /rt/NoAuth/images {<br />
alias /usr/share/request-tracker4/html/NoAuth/images/;<br />
}<br />
<br />
# Limit mail gateway access to localhost by default<br />
location /rt/REST/1.0/NoAuth {<br />
alias /usr/share/request-tracker4/html/REST/1.0/NoAuth/;<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
<br />
allow 127.0.0.1;<br />
allow 93.191.131.63; # ons eigen IP-adres<br />
allow ::1/128;<br />
allow 2a02:348:9a:833f::1/128; # ons eigen v6-adres<br />
deny all;<br />
}<br />
}<br />
</pre><br />
<br />
Om de FastCGI-daemon aan te zetten verander je <tt>enabled=0</tt> in <tt>enabled=1</tt> in <tt>/etc/default/rt4-fcgi</tt>. Dan resteert ons nog het opstarten van de FastCGI-daemon en het herstarten van Nginx:<br />
<br />
<pre><br />
$ sudo ln -s /etc/nginx/sites-available/rt.conf /etc/nginx/sites-enabled/<br />
$ sudo /etc/init.d/rt4-fcgi start<br />
$ sudo /etc/init.d/nginx restart<br />
</pre><br />
<br />
En [https://api.limesco.nl/rt https://api.limesco.nl/rt] geeft netjes het loginscherm van Request Tracker weer.<br />
<br />
== Configuratie gebruikers ==<br />
<br />
Als eerste willen we users toevoegen. Dat kan in Tools → Configuration → Users → Create. Zet "let this user access RT" en "let this user be granted rights" aan. Maak ook een groep voor de administrators ("admin"): Tools → Configuration → Groups → Create; na het maken kun je rechtsboven bij "Members" members toevoegen. Deze groep geven we extra rechten: Tools → Configuration → Global → Group Rights; vul links onderin "admin" (de naam van de groep) in, klik op "Rights for Administrators", en tick "Do anything and everything".<br />
<br />
We kunnen nu uitloggen als root en inloggen als één van de users die we hebben gemaakt.<br />
<br />
== Nieuwe tickets via e-mail ==<br />
<br />
Zodra er een e-mail binnenkomt aan <tt>support@limesco.nl</tt> moet die e-mail in Request Tracker worden ingevoerd. Daarvoor gaan we de configuratie van Postfix in. E-mail aan <tt>support@limesco.nl</tt> (en andere supportadressen) wordt geforward naar <tt>support-rt@rt.limesco.nl</tt>, dus onze Postfix moet <tt>rt.limesco.nl</tt> als zijn destination zien. We voegen daarom dat adres toe aan <tt>mydestination</tt> in <tt>/etc/postfix/main.cf</tt> en herstarten Postfix.<br />
<br />
Daarnaast is het nog belangrijk dat er bij e-mail aan <tt>support-rt@rt.limesco.nl</tt> een programma van RT (<tt>rt-mailgate</tt>) wordt uitgevoerd. Daarvoor voegen we de volgende twee regels toe aan <tt>/etc/aliases</tt>:<br />
<br />
<pre><br />
support-rt: "|/usr/bin/rt-mailgate --queue 'General' --action correspond --url https://api.limesco.nl/rt"<br />
support-rt-comment: "|/usr/bin/rt-mailgate --queue 'General' --action comment --url https://api.limesco.nl/rt"<br />
</pre><br />
<br />
<tt>rt-mailgate</tt> zal dus nu uitgevoerd worden bij het ontvangen van zo'n e-mail; hij zal HTTP-requests doen aan het NoAuth-gedeelte van RT (dat alleen openstaat aan localhost door de configuratie hierboven). Voer <tt>sudo newaliases</tt> uit om de aliases-database bij te werken en e-mail zal nu netjes uitkomen bij Request Tracker.<br />
<br />
Echter, voordat Request Tracker nieuwe tickets mag aanmaken voor ongeauthoriseerde e-mailadressen moet die permissie nog gegeven worden. Dat gebeurt onder Tools → Configuration → Global → Group Rights; klik links op Everyone en tick "Create Tickets" en "Reply to tickets".<br />
<br />
== Iedereens tickets kunnen zien ==<br />
<br />
Volgens eis (2) moet iedereen iedereens tickets kunnen bekijken. Met name alle open tickets, ongeacht eigenaar, moeten op de voorpagina te zien zijn. Dat doen we door een Saved Search te maken (Tickets → New Search). Daar definiëren we:<br />
<br />
<pre><br />
Status != 'resolved'<br />
AND Status != 'rejected'<br />
</pre><br />
<br />
Gesorteerd op LastUpdated ASC, en dan rechts opslaan als Saved Search "Open Tickets" (onder RT System's saved searches). Er wordt nu een nieuwe entry gemaakt die toegevoegd kan worden aan het Dashboard ("RT At A Glance"). Door dan naar Tools → Configuration → Global → RT at a glance te gaan, kun je onder "Body" links "Open Tickets" selecteren, verplaatsen naar rechts, en schuiven naar waar hij moet verschijnen. Eventueel dan per account nog dezelfde wijziging uitvoeren of resetten naar default (usermenu → Settings → RT at a glance), en het lijstje open tickets staat erbij op de voorpagina.<br />
<br />
== Notificaties sturen vanaf RT ==<br />
<br />
Voor het versturen van de notificaties, voegen we het volgende toe aan <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt>:<br />
<br />
<pre><br />
# E-MAIL:<br />
<br />
Set($SendmailArguments, "-oi -t -f support@limesco.nl");<br />
Set($OwnerEmail, "postmaster@limesco.nl");<br />
</pre><br />
<br />
Voer weer <tt>update-rt-siteconfig-4</tt> uit om de veranderingen te verwerken. Maak nu een groep genaamd DefaultQueueAdminCc (Tools → Configuration → Groups → Create); ga naar Members en iedere user toe die e-mail moet ontvangen voor de default queue.<br />
<br />
We voegen nu de groep DefaultQueueAdminCc toe als AdminCc van de default queue: ga naar Tools → Configuration → Queues → Select, klik General en ga naar Watchers rechtsboven; "Find Groups whose Name matches DefaultQueueAdminCc", selecteer onder Groups "AdminCc" voor de groep, en klik op "Save Changes".<br />
<br />
Welke e-mail de AdminCc van een queue krijgt is aan te passen onder Tools → Configuration → Global → Scrips → Select: standaard gelden de volgende regels:<br />
<br />
* On Comment Notify AdminCcs as Comment<br />
* On Correspond Notify AdminCcs<br />
* On Create Notify AdminCcs<br />
<br />
Door bijv. de eerste twee regels weg te halen krijgen AdminCc's nog wel e-mail voor een nieuwe ticket, maar niet meer elkaars correspondentie op een ticket. (Dat doen wij hier niet.)</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Support-infrastructuur&diff=1016Support-infrastructuur2013-02-18T02:33:57Z<p>SGielen: Iedereens tickets kunnen zien</p>
<hr />
<div>Support@ is sinds het begin bemand geweest door Sjors, Gerdriaan en Mark, waarbij Sjors de meeste mails afhandelde. Omdat puur e-mail gebruiken tracken lastiger maakt, en er wel eens voor zorgde dat Sjors en Gerdriaan tegelijkertijd een antwoord stuurden, zijn we begin 2013 gaan kijken naar een ticketingsysteem. We hebben geëxperimenteerd met [http://bestpractical.com/rt/ Request Tracker] en hebben besloten dat we dat systeem als implementatie gaan gebruiken voor support-tickets.<br />
<br />
We hadden verschillende eisen voor dit systeem:<br />
<br />
# Het moet duidelijk zijn wie een ticket behandelt (eigenaar & claimfunctionaliteit)<br />
# We moeten wel alle tickets in kunnen zien, ongeacht eigenaar<br />
# Het systeem moet mailnotificaties sturen als er interessante dingen gebeuren<br />
# Alle communicatie in een ticket moet in 1 overzicht zichtbaar zijn<br />
# We willen extra properties kunnen zetten op een ticket, zodat een mail automatisch interessante informatie verzamelt (accountnaam, SIM-gegevens, eventuele SpeakUp-ticketnummers)<br />
# Tickets moeten via een commandline-interface in te zien en te wijzigen zijn<br />
# Voortgang van tickets moet snel zichtbaar zijn<br />
# Er moet een systeem voor reminders zijn, bijv. "over 2 dagen nog eens kijken hoe het staat" of "moet maximaal over 3 dagen opgelost zijn"<br />
# Dat systeem voor reminders moet ons ook kunnen e-mailen<br />
# We moeten vanaf de commandline mensen e-mail kunnen sturen, zo dat replies automatisch in dezelfde ticket komen<br />
<br />
Het bleek dat Request Tracker dit allemaal kon, of gemakkelijk aan te vullen was zodat het dit kon. Op deze pagina beschrijf ik hoe we de boel hebben geïmplementeerd, voor het geval we het nog eens moeten doen en in de hoop dat het nuttig is voor anderen.<br />
<br />
== Installatie ==<br />
<br />
De Request Tracker-installatie draait op de Debian-machine <tt>api.limesco.nl</tt>. Installatie op Debian is zo simpel als <tt>apt-get install request-tracker4</tt>. Tijdens de installatie wordt gevraagd om de naam van de Request Tracker-instance. In ons geval is dat <tt>rt.limesco.nl</tt>:<br />
<br />
<pre><br />
$ host rt.limesco.nl<br />
rt.limesco.nl mail is handled by 20 relay.transip.nl.<br />
rt.limesco.nl mail is handled by 10 api.limesco.nl.<br />
</pre><br />
<br />
Request Tracker gaat uitgevoerd worden als de user <tt>www-data</tt> omdat er niets anders als de <tt>www-data</tt>-gebruiker uitgevoerd wordt. Zouden er al bestaande services gebruikmaken van die user, dan zouden we de voorkeur hebben een aparte gebruiker aan te maken voor RT. Op de vraag "Handle RT_SiteConfig.pm permissions?" antwoorden we nu dus ja. De databaseconfiguratie kan ook automatisch worden gedaan ("Yes") en voor het initial root password kiezen we een lang, onraadbaar wachtwoord. Zodra RT is geïnstalleerd maken we een setje accounts voor mensen; de root-account wordt dan alleen nog gebruikt voor geautomatiseerde scripts.<br />
<br />
Het instellen van Request Tracker zelf gaat via <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt>, daar staat het volgende:<br />
<br />
<pre><br />
# THE BASICS:<br />
<br />
Set($rtname, 'rt.limesco.nl');<br />
Set($Organization, 'Limesco');<br />
<br />
Set($CorrespondAddress , 'support@limesco.nl');<br />
Set($CommentAddress , 'support-comment@rt.limesco.nl');<br />
<br />
# THE WEBSERVER:<br />
<br />
Set($WebPath , "/rt");<br />
Set($WebBaseURL , "https://api.limesco.nl");<br />
Set($WebPort, 443);<br />
Set($WebDomain, "api.limesco.nl");<br />
</pre><br />
<br />
Om deze configuratie bij te werken, voeren we <tt>update-rt-siteconfig-4</tt> uit.<br />
<br />
== Configuratie website ==<br />
<br />
Op <tt>api.limesco.nl</tt> gebruiken we nginx, een snelle lichte webserver met CGI-support. Om nginx en Request Tracker samen te laten werken is de package <tt>rt4-fcgi</tt> nodig. Die installeert een <tt>/etc/init.d/rt4-fcgi</tt> die Request Tracker via FastCGI bereikbaar maakt, en een <tt>/usr/share/doc/rt4-fcgi/examples/request-tracker4.conf</tt> die de interface naar Nginx maakt. Die<br />
interface gebruiken wij als opzetje voor de configuratie in nginx, die RT alleen bereikbaar maakt via SSL:<br />
<br />
<pre><br />
server {<br />
listen 443;<br />
server_name api.limesco.nl;<br />
<br />
root /var/www;<br />
index index.html index.htm;<br />
<br />
ssl on;<br />
ssl_certificate /etc/nginx/ssl/api.limesco.nl.bundle-primary-first.crt;<br />
ssl_certificate_key /etc/nginx/ssl/api.limesco.nl.key;<br />
<br />
ssl_session_timeout 5m;<br />
<br />
# request-tracker4 configuration for nginx<br />
# (belong to /etc/nginx/conf.d)<br />
location /rt {<br />
alias /usr/share/request-tracker4/html;<br />
<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
}<br />
<br />
# Bypass FastCGI for images<br />
location /rt/NoAuth/images {<br />
alias /usr/share/request-tracker4/html/NoAuth/images/;<br />
}<br />
<br />
# Limit mail gateway access to localhost by default<br />
location /rt/REST/1.0/NoAuth {<br />
alias /usr/share/request-tracker4/html/REST/1.0/NoAuth/;<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
<br />
allow 127.0.0.1;<br />
allow 93.191.131.63; # ons eigen IP-adres<br />
allow ::1/128;<br />
allow 2a02:348:9a:833f::1/128; # ons eigen v6-adres<br />
deny all;<br />
}<br />
}<br />
</pre><br />
<br />
Om de FastCGI-daemon aan te zetten verander je <tt>enabled=0</tt> in <tt>enabled=1</tt> in <tt>/etc/default/rt4-fcgi</tt>. Dan resteert ons nog het opstarten van de FastCGI-daemon en het herstarten van Nginx:<br />
<br />
<pre><br />
$ sudo ln -s /etc/nginx/sites-available/rt.conf /etc/nginx/sites-enabled/<br />
$ sudo /etc/init.d/rt4-fcgi start<br />
$ sudo /etc/init.d/nginx restart<br />
</pre><br />
<br />
En [https://api.limesco.nl/rt https://api.limesco.nl/rt] geeft netjes het loginscherm van Request Tracker weer.<br />
<br />
== Configuratie gebruikers ==<br />
<br />
Als eerste willen we users toevoegen. Dat kan in Tools → Configuration → Users → Create. Zet "let this user access RT" en "let this user be granted rights" aan. Maak ook een groep voor de administrators ("admin"): Tools → Configuration → Groups → Create; na het maken kun je rechtsboven bij "Members" members toevoegen. Deze groep geven we extra rechten: Tools → Configuration → Global → Group Rights; vul links onderin "admin" (de naam van de groep) in, klik op "Rights for Administrators", en tick "Do anything and everything".<br />
<br />
We kunnen nu uitloggen als root en inloggen als één van de users die we hebben gemaakt.<br />
<br />
== Nieuwe tickets via e-mail ==<br />
<br />
Zodra er een e-mail binnenkomt aan <tt>support@limesco.nl</tt> moet die e-mail in Request Tracker worden ingevoerd. Daarvoor gaan we de configuratie van Postfix in. E-mail aan <tt>support@limesco.nl</tt> (en andere supportadressen) wordt geforward naar <tt>support-rt@rt.limesco.nl</tt>, dus onze Postfix moet <tt>rt.limesco.nl</tt> als zijn destination zien. We voegen daarom dat adres toe aan <tt>mydestination</tt> in <tt>/etc/postfix/main.cf</tt> en herstarten Postfix.<br />
<br />
Daarnaast is het nog belangrijk dat er bij e-mail aan <tt>support-rt@rt.limesco.nl</tt> een programma van RT (<tt>rt-mailgate</tt>) wordt uitgevoerd. Daarvoor voegen we de volgende twee regels toe aan <tt>/etc/aliases</tt>:<br />
<br />
<pre><br />
support-rt: "|/usr/bin/rt-mailgate --queue 'General' --action correspond --url https://api.limesco.nl/rt"<br />
support-rt-comment: "|/usr/bin/rt-mailgate --queue 'General' --action comment --url https://api.limesco.nl/rt"<br />
</pre><br />
<br />
<tt>rt-mailgate</tt> zal dus nu uitgevoerd worden bij het ontvangen van zo'n e-mail; hij zal HTTP-requests doen aan het NoAuth-gedeelte van RT (dat alleen openstaat aan localhost door de configuratie hierboven). Voer <tt>sudo newaliases</tt> uit om de aliases-database bij te werken en e-mail zal nu netjes uitkomen bij Request Tracker.<br />
<br />
Echter, voordat Request Tracker nieuwe tickets mag aanmaken voor ongeauthoriseerde e-mailadressen moet die permissie nog gegeven worden. Dat gebeurt onder Tools → Configuration → Global → Group Rights; klik links op Everyone en tick "Create Tickets" en "Reply to tickets".<br />
<br />
== Iedereens tickets kunnen zien ==<br />
<br />
Volgens eis (2) moet iedereen iedereens tickets kunnen bekijken. Met name alle open tickets, ongeacht eigenaar, moeten op de voorpagina te zien zijn. Dat doen we door een Saved Search te maken (Tickets → New Search). Daar definiëren we:<br />
<br />
<pre><br />
Status != 'resolved'<br />
AND Status != 'rejected'<br />
</pre><br />
<br />
Gesorteerd op LastUpdated ASC, en dan rechts opslaan als Saved Search "Open Tickets" (onder RT System's saved searches). Er wordt nu een nieuwe entry gemaakt die toegevoegd kan worden aan het Dashboard ("RT At A Glance"). Door dan naar Tools → Configuration → Global → RT at a glance te gaan, kun je onder "Body" links "Open Tickets" selecteren, verplaatsen naar rechts, en schuiven naar waar hij moet verschijnen. Eventueel dan per account nog dezelfde wijziging uitvoeren of resetten naar default (usermenu → Settings → RT at a glance), en het lijstje open tickets staat erbij op de voorpagina.</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Support-infrastructuur&diff=1015Support-infrastructuur2013-02-18T02:18:26Z<p>SGielen: /* Installatie */</p>
<hr />
<div>Support@ is sinds het begin bemand geweest door Sjors, Gerdriaan en Mark, waarbij Sjors de meeste mails afhandelde. Omdat puur e-mail gebruiken tracken lastiger maakt, en er wel eens voor zorgde dat Sjors en Gerdriaan tegelijkertijd een antwoord stuurden, zijn we begin 2013 gaan kijken naar een ticketingsysteem. We hebben geëxperimenteerd met [http://bestpractical.com/rt/ Request Tracker] en hebben besloten dat we dat systeem als implementatie gaan gebruiken voor support-tickets.<br />
<br />
We hadden verschillende eisen voor dit systeem:<br />
<br />
# Het moet duidelijk zijn wie een ticket behandelt (eigenaar & claimfunctionaliteit)<br />
# We moeten wel alle tickets in kunnen zien, ongeacht eigenaar<br />
# Het systeem moet mailnotificaties sturen als er interessante dingen gebeuren<br />
# Alle communicatie in een ticket moet in 1 overzicht zichtbaar zijn<br />
# We willen extra properties kunnen zetten op een ticket, zodat een mail automatisch interessante informatie verzamelt (accountnaam, SIM-gegevens, eventuele SpeakUp-ticketnummers)<br />
# Tickets moeten via een commandline-interface in te zien en te wijzigen zijn<br />
# Voortgang van tickets moet snel zichtbaar zijn<br />
# Er moet een systeem voor reminders zijn, bijv. "over 2 dagen nog eens kijken hoe het staat" of "moet maximaal over 3 dagen opgelost zijn"<br />
# Dat systeem voor reminders moet ons ook kunnen e-mailen<br />
# We moeten vanaf de commandline mensen e-mail kunnen sturen, zo dat replies automatisch in dezelfde ticket komen<br />
<br />
Het bleek dat Request Tracker dit allemaal kon, of gemakkelijk aan te vullen was zodat het dit kon. Op deze pagina beschrijf ik hoe we de boel hebben geïmplementeerd, voor het geval we het nog eens moeten doen en in de hoop dat het nuttig is voor anderen.<br />
<br />
== Installatie ==<br />
<br />
De Request Tracker-installatie draait op de Debian-machine <tt>api.limesco.nl</tt>. Installatie op Debian is zo simpel als <tt>apt-get install request-tracker4</tt>. Tijdens de installatie wordt gevraagd om de naam van de Request Tracker-instance. In ons geval is dat <tt>rt.limesco.nl</tt>:<br />
<br />
<pre><br />
$ host rt.limesco.nl<br />
rt.limesco.nl mail is handled by 20 relay.transip.nl.<br />
rt.limesco.nl mail is handled by 10 api.limesco.nl.<br />
</pre><br />
<br />
Request Tracker gaat uitgevoerd worden als de user <tt>www-data</tt> omdat er niets anders als de <tt>www-data</tt>-gebruiker uitgevoerd wordt. Zouden er al bestaande services gebruikmaken van die user, dan zouden we de voorkeur hebben een aparte gebruiker aan te maken voor RT. Op de vraag "Handle RT_SiteConfig.pm permissions?" antwoorden we nu dus ja. De databaseconfiguratie kan ook automatisch worden gedaan ("Yes") en voor het initial root password kiezen we een lang, onraadbaar wachtwoord. Zodra RT is geïnstalleerd maken we een setje accounts voor mensen; de root-account wordt dan alleen nog gebruikt voor geautomatiseerde scripts.<br />
<br />
Het instellen van Request Tracker zelf gaat via <tt>/etc/request-tracker4/RT_SiteConfig.d/50-debconf</tt>, daar staat het volgende:<br />
<br />
<pre><br />
# THE BASICS:<br />
<br />
Set($rtname, 'rt.limesco.nl');<br />
Set($Organization, 'Limesco');<br />
<br />
Set($CorrespondAddress , 'support@limesco.nl');<br />
Set($CommentAddress , 'support-comment@rt.limesco.nl');<br />
<br />
# THE WEBSERVER:<br />
<br />
Set($WebPath , "/rt");<br />
Set($WebBaseURL , "https://api.limesco.nl");<br />
Set($WebPort, 443);<br />
Set($WebDomain, "api.limesco.nl");<br />
</pre><br />
<br />
Om deze configuratie bij te werken, voeren we <tt>update-rt-siteconfig-4</tt> uit.<br />
<br />
== Configuratie website ==<br />
<br />
Op <tt>api.limesco.nl</tt> gebruiken we nginx, een snelle lichte webserver met CGI-support. Om nginx en Request Tracker samen te laten werken is de package <tt>rt4-fcgi</tt> nodig. Die installeert een <tt>/etc/init.d/rt4-fcgi</tt> die Request Tracker via FastCGI bereikbaar maakt, en een <tt>/usr/share/doc/rt4-fcgi/examples/request-tracker4.conf</tt> die de interface naar Nginx maakt. Die<br />
interface gebruiken wij als opzetje voor de configuratie in nginx, die RT alleen bereikbaar maakt via SSL:<br />
<br />
<pre><br />
server {<br />
listen 443;<br />
server_name api.limesco.nl;<br />
<br />
root /var/www;<br />
index index.html index.htm;<br />
<br />
ssl on;<br />
ssl_certificate /etc/nginx/ssl/api.limesco.nl.bundle-primary-first.crt;<br />
ssl_certificate_key /etc/nginx/ssl/api.limesco.nl.key;<br />
<br />
ssl_session_timeout 5m;<br />
<br />
# request-tracker4 configuration for nginx<br />
# (belong to /etc/nginx/conf.d)<br />
location /rt {<br />
alias /usr/share/request-tracker4/html;<br />
<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
}<br />
<br />
# Bypass FastCGI for images<br />
location /rt/NoAuth/images {<br />
alias /usr/share/request-tracker4/html/NoAuth/images/;<br />
}<br />
<br />
# Limit mail gateway access to localhost by default<br />
location /rt/REST/1.0/NoAuth {<br />
alias /usr/share/request-tracker4/html/REST/1.0/NoAuth/;<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
<br />
allow 127.0.0.1;<br />
allow 93.191.131.63; # ons eigen IP-adres<br />
allow ::1/128;<br />
allow 2a02:348:9a:833f::1/128; # ons eigen v6-adres<br />
deny all;<br />
}<br />
}<br />
</pre><br />
<br />
Om de FastCGI-daemon aan te zetten verander je <tt>enabled=0</tt> in <tt>enabled=1</tt> in <tt>/etc/default/rt4-fcgi</tt>. Dan resteert ons nog het opstarten van de FastCGI-daemon en het herstarten van Nginx:<br />
<br />
<pre><br />
$ sudo ln -s /etc/nginx/sites-available/rt.conf /etc/nginx/sites-enabled/<br />
$ sudo /etc/init.d/rt4-fcgi start<br />
$ sudo /etc/init.d/nginx restart<br />
</pre><br />
<br />
En [https://api.limesco.nl/rt https://api.limesco.nl/rt] geeft netjes het loginscherm van Request Tracker weer.<br />
<br />
== Configuratie gebruikers ==<br />
<br />
Als eerste willen we users toevoegen. Dat kan in Tools → Configuration → Users → Create. Zet "let this user access RT" en "let this user be granted rights" aan. Maak ook een groep voor de administrators ("admin"): Tools → Configuration → Groups → Create; na het maken kun je rechtsboven bij "Members" members toevoegen. Deze groep geven we extra rechten: Tools → Configuration → Global → Group Rights; vul links onderin "admin" (de naam van de groep) in, klik op "Rights for Administrators", en tick "Do anything and everything".<br />
<br />
We kunnen nu uitloggen als root en inloggen als één van de users die we hebben gemaakt.<br />
<br />
== Nieuwe tickets via e-mail ==<br />
<br />
Zodra er een e-mail binnenkomt aan <tt>support@limesco.nl</tt> moet die e-mail in Request Tracker worden ingevoerd. Daarvoor gaan we de configuratie van Postfix in. E-mail aan <tt>support@limesco.nl</tt> (en andere supportadressen) wordt geforward naar <tt>support-rt@rt.limesco.nl</tt>, dus onze Postfix moet <tt>rt.limesco.nl</tt> als zijn destination zien. We voegen daarom dat adres toe aan <tt>mydestination</tt> in <tt>/etc/postfix/main.cf</tt> en herstarten Postfix.<br />
<br />
Daarnaast is het nog belangrijk dat er bij e-mail aan <tt>support-rt@rt.limesco.nl</tt> een programma van RT (<tt>rt-mailgate</tt>) wordt uitgevoerd. Daarvoor voegen we de volgende twee regels toe aan <tt>/etc/aliases</tt>:<br />
<br />
<pre><br />
support-rt: "|/usr/bin/rt-mailgate --queue 'General' --action correspond --url https://api.limesco.nl/rt"<br />
support-rt-comment: "|/usr/bin/rt-mailgate --queue 'General' --action comment --url https://api.limesco.nl/rt"<br />
</pre><br />
<br />
<tt>rt-mailgate</tt> zal dus nu uitgevoerd worden bij het ontvangen van zo'n e-mail; hij zal HTTP-requests doen aan het NoAuth-gedeelte van RT (dat alleen openstaat aan localhost door de configuratie hierboven). Voer <tt>sudo newaliases</tt> uit om de aliases-database bij te werken en e-mail zal nu netjes uitkomen bij Request Tracker.<br />
<br />
Echter, voordat Request Tracker nieuwe tickets mag aanmaken voor ongeauthoriseerde e-mailadressen moet die permissie nog gegeven worden. Dat gebeurt onder Tools → Configuration → Global → Group Rights; klik links op Everyone en tick "Create Tickets" en "Reply to tickets".</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Support-infrastructuur&diff=1014Support-infrastructuur2013-02-18T02:14:13Z<p>SGielen: Tickets aanmaken vanaf e-mail</p>
<hr />
<div>Support@ is sinds het begin bemand geweest door Sjors, Gerdriaan en Mark, waarbij Sjors de meeste mails afhandelde. Omdat puur e-mail gebruiken tracken lastiger maakt, en er wel eens voor zorgde dat Sjors en Gerdriaan tegelijkertijd een antwoord stuurden, zijn we begin 2013 gaan kijken naar een ticketingsysteem. We hebben geëxperimenteerd met [http://bestpractical.com/rt/ Request Tracker] en hebben besloten dat we dat systeem als implementatie gaan gebruiken voor support-tickets.<br />
<br />
We hadden verschillende eisen voor dit systeem:<br />
<br />
# Het moet duidelijk zijn wie een ticket behandelt (eigenaar & claimfunctionaliteit)<br />
# We moeten wel alle tickets in kunnen zien, ongeacht eigenaar<br />
# Het systeem moet mailnotificaties sturen als er interessante dingen gebeuren<br />
# Alle communicatie in een ticket moet in 1 overzicht zichtbaar zijn<br />
# We willen extra properties kunnen zetten op een ticket, zodat een mail automatisch interessante informatie verzamelt (accountnaam, SIM-gegevens, eventuele SpeakUp-ticketnummers)<br />
# Tickets moeten via een commandline-interface in te zien en te wijzigen zijn<br />
# Voortgang van tickets moet snel zichtbaar zijn<br />
# Er moet een systeem voor reminders zijn, bijv. "over 2 dagen nog eens kijken hoe het staat" of "moet maximaal over 3 dagen opgelost zijn"<br />
# Dat systeem voor reminders moet ons ook kunnen e-mailen<br />
# We moeten vanaf de commandline mensen e-mail kunnen sturen, zo dat replies automatisch in dezelfde ticket komen<br />
<br />
Het bleek dat Request Tracker dit allemaal kon, of gemakkelijk aan te vullen was zodat het dit kon. Op deze pagina beschrijf ik hoe we de boel hebben geïmplementeerd, voor het geval we het nog eens moeten doen en in de hoop dat het nuttig is voor anderen.<br />
<br />
== Installatie ==<br />
<br />
De Request Tracker-installatie draait op de Debian-machine <tt>api.limesco.nl</tt>. Installatie op Debian is zo simpel als <tt>apt-get install request-tracker4</tt>. Tijdens de installatie wordt gevraagd om de naam van de Request Tracker-instance. In ons geval is dat <tt>rt.limesco.nl</tt>:<br />
<br />
<pre><br />
$ host rt.limesco.nl<br />
rt.limesco.nl mail is handled by 20 relay.transip.nl.<br />
rt.limesco.nl mail is handled by 10 api.limesco.nl.<br />
</pre><br />
<br />
Request Tracker gaat uitgevoerd worden als de user <tt>www-data</tt> omdat er niets anders als de <tt>www-data</tt>-gebruiker uitgevoerd wordt. Zouden er al bestaande services gebruikmaken van die user, dan zouden we de voorkeur hebben een aparte gebruiker aan te maken voor RT. Op de vraag "Handle RT_SiteConfig.pm permissions?" antwoorden we nu dus ja. De databaseconfiguratie kan ook automatisch worden gedaan ("Yes") en voor het initial root password kiezen we een lang, onraadbaar wachtwoord. Zodra RT is geïnstalleerd maken we een setje accounts voor mensen; de root-account wordt dan alleen nog gebruikt voor geautomatiseerde scripts.<br />
<br />
== Configuratie website ==<br />
<br />
Op <tt>api.limesco.nl</tt> gebruiken we nginx, een snelle lichte webserver met CGI-support. Om nginx en Request Tracker samen te laten werken is de package <tt>rt4-fcgi</tt> nodig. Die installeert een <tt>/etc/init.d/rt4-fcgi</tt> die Request Tracker via FastCGI bereikbaar maakt, en een <tt>/usr/share/doc/rt4-fcgi/examples/request-tracker4.conf</tt> die de interface naar Nginx maakt. Die<br />
interface gebruiken wij als opzetje voor de configuratie in nginx, die RT alleen bereikbaar maakt via SSL:<br />
<br />
<pre><br />
server {<br />
listen 443;<br />
server_name api.limesco.nl;<br />
<br />
root /var/www;<br />
index index.html index.htm;<br />
<br />
ssl on;<br />
ssl_certificate /etc/nginx/ssl/api.limesco.nl.bundle-primary-first.crt;<br />
ssl_certificate_key /etc/nginx/ssl/api.limesco.nl.key;<br />
<br />
ssl_session_timeout 5m;<br />
<br />
# request-tracker4 configuration for nginx<br />
# (belong to /etc/nginx/conf.d)<br />
location /rt {<br />
alias /usr/share/request-tracker4/html;<br />
<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
}<br />
<br />
# Bypass FastCGI for images<br />
location /rt/NoAuth/images {<br />
alias /usr/share/request-tracker4/html/NoAuth/images/;<br />
}<br />
<br />
# Limit mail gateway access to localhost by default<br />
location /rt/REST/1.0/NoAuth {<br />
alias /usr/share/request-tracker4/html/REST/1.0/NoAuth/;<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
<br />
allow 127.0.0.1;<br />
allow 93.191.131.63; # ons eigen IP-adres<br />
allow ::1/128;<br />
allow 2a02:348:9a:833f::1/128; # ons eigen v6-adres<br />
deny all;<br />
}<br />
}<br />
</pre><br />
<br />
Om de FastCGI-daemon aan te zetten verander je <tt>enabled=0</tt> in <tt>enabled=1</tt> in <tt>/etc/default/rt4-fcgi</tt>. Dan resteert ons nog het opstarten van de FastCGI-daemon en het herstarten van Nginx:<br />
<br />
<pre><br />
$ sudo ln -s /etc/nginx/sites-available/rt.conf /etc/nginx/sites-enabled/<br />
$ sudo /etc/init.d/rt4-fcgi start<br />
$ sudo /etc/init.d/nginx restart<br />
</pre><br />
<br />
En [https://api.limesco.nl/rt https://api.limesco.nl/rt] geeft netjes het loginscherm van Request Tracker weer.<br />
<br />
== Configuratie gebruikers ==<br />
<br />
Als eerste willen we users toevoegen. Dat kan in Tools → Configuration → Users → Create. Zet "let this user access RT" en "let this user be granted rights" aan. Maak ook een groep voor de administrators ("admin"): Tools → Configuration → Groups → Create; na het maken kun je rechtsboven bij "Members" members toevoegen. Deze groep geven we extra rechten: Tools → Configuration → Global → Group Rights; vul links onderin "admin" (de naam van de groep) in, klik op "Rights for Administrators", en tick "Do anything and everything".<br />
<br />
We kunnen nu uitloggen als root en inloggen als één van de users die we hebben gemaakt.<br />
<br />
== Nieuwe tickets via e-mail ==<br />
<br />
Zodra er een e-mail binnenkomt aan <tt>support@limesco.nl</tt> moet die e-mail in Request Tracker worden ingevoerd. Daarvoor gaan we de configuratie van Postfix in. E-mail aan <tt>support@limesco.nl</tt> (en andere supportadressen) wordt geforward naar <tt>support-rt@rt.limesco.nl</tt>, dus onze Postfix moet <tt>rt.limesco.nl</tt> als zijn destination zien. We voegen daarom dat adres toe aan <tt>mydestination</tt> in <tt>/etc/postfix/main.cf</tt> en herstarten Postfix.<br />
<br />
Daarnaast is het nog belangrijk dat er bij e-mail aan <tt>support-rt@rt.limesco.nl</tt> een programma van RT (<tt>rt-mailgate</tt>) wordt uitgevoerd. Daarvoor voegen we de volgende twee regels toe aan <tt>/etc/aliases</tt>:<br />
<br />
<pre><br />
support-rt: "|/usr/bin/rt-mailgate --queue 'General' --action correspond --url https://api.limesco.nl/rt"<br />
support-rt-comment: "|/usr/bin/rt-mailgate --queue 'General' --action comment --url https://api.limesco.nl/rt"<br />
</pre><br />
<br />
<tt>rt-mailgate</tt> zal dus nu uitgevoerd worden bij het ontvangen van zo'n e-mail; hij zal HTTP-requests doen aan het NoAuth-gedeelte van RT (dat alleen openstaat aan localhost door de configuratie hierboven). Voer <tt>sudo newaliases</tt> uit om de aliases-database bij te werken en e-mail zal nu netjes uitkomen bij Request Tracker.<br />
<br />
Echter, voordat Request Tracker nieuwe tickets mag aanmaken voor ongeauthoriseerde e-mailadressen moet die permissie nog gegeven worden. Dat gebeurt onder Tools → Configuration → Global → Group Rights; klik links op Everyone en tick "Create Tickets" en "Reply to tickets".</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Support-infrastructuur&diff=1013Support-infrastructuur2013-02-18T01:07:57Z<p>SGielen: </p>
<hr />
<div>Support@ is sinds het begin bemand geweest door Sjors, Gerdriaan en Mark, waarbij Sjors de meeste mails afhandelde. Omdat puur e-mail gebruiken tracken lastiger maakt, en er wel eens voor zorgde dat Sjors en Gerdriaan tegelijkertijd een antwoord stuurden, zijn we begin 2013 gaan kijken naar een ticketingsysteem. We hebben geëxperimenteerd met [http://bestpractical.com/rt/ Request Tracker] en hebben besloten dat we dat systeem als implementatie gaan gebruiken voor support-tickets.<br />
<br />
We hadden verschillende eisen voor dit systeem:<br />
<br />
# Het moet duidelijk zijn wie een ticket behandelt (eigenaar & claimfunctionaliteit)<br />
# We moeten wel alle tickets in kunnen zien, ongeacht eigenaar<br />
# Het systeem moet mailnotificaties sturen als er interessante dingen gebeuren<br />
# Alle communicatie in een ticket moet in 1 overzicht zichtbaar zijn<br />
# We willen extra properties kunnen zetten op een ticket, zodat een mail automatisch interessante informatie verzamelt (accountnaam, SIM-gegevens, eventuele SpeakUp-ticketnummers)<br />
# Tickets moeten via een commandline-interface in te zien en te wijzigen zijn<br />
# Voortgang van tickets moet snel zichtbaar zijn<br />
# Er moet een systeem voor reminders zijn, bijv. "over 2 dagen nog eens kijken hoe het staat" of "moet maximaal over 3 dagen opgelost zijn"<br />
# Dat systeem voor reminders moet ons ook kunnen e-mailen<br />
# We moeten vanaf de commandline mensen e-mail kunnen sturen, zo dat replies automatisch in dezelfde ticket komen<br />
<br />
Het bleek dat Request Tracker dit allemaal kon, of gemakkelijk aan te vullen was zodat het dit kon. Op deze pagina beschrijf ik hoe we de boel hebben geïmplementeerd, voor het geval we het nog eens moeten doen en in de hoop dat het nuttig is voor anderen.<br />
<br />
== Installatie ==<br />
<br />
De Request Tracker-installatie draait op de Debian-machine <tt>api.limesco.nl</tt>. Installatie op Debian is zo simpel als <tt>apt-get install request-tracker4</tt>. Tijdens de installatie wordt gevraagd om de naam van de Request Tracker-instance. In ons geval is dat <tt>rt.limesco.nl</tt>:<br />
<br />
<pre><br />
$ host rt.limesco.nl<br />
rt.limesco.nl mail is handled by 20 relay.transip.nl.<br />
rt.limesco.nl mail is handled by 10 api.limesco.nl.<br />
</pre><br />
<br />
Request Tracker gaat uitgevoerd worden als de user <tt>www-data</tt> omdat er niets anders als de <tt>www-data</tt>-gebruiker uitgevoerd wordt. Zouden er al bestaande services gebruikmaken van die user, dan zouden we de voorkeur hebben een aparte gebruiker aan te maken voor RT. Op de vraag "Handle RT_SiteConfig.pm permissions?" antwoorden we nu dus ja. De databaseconfiguratie kan ook automatisch worden gedaan ("Yes") en voor het initial root password kiezen we een lang, onraadbaar wachtwoord. Zodra RT is geïnstalleerd maken we een setje accounts voor mensen; de root-account wordt dan alleen nog gebruikt voor geautomatiseerde scripts.<br />
<br />
== Configuratie website ==<br />
<br />
Op <tt>api.limesco.nl</tt> gebruiken we nginx, een snelle lichte webserver met CGI-support. Om nginx en Request Tracker samen te laten werken is de package <tt>rt4-fcgi</tt> nodig. Die installeert een <tt>/etc/init.d/rt4-fcgi</tt> die Request Tracker via FastCGI bereikbaar maakt, en een <tt>/usr/share/doc/rt4-fcgi/examples/request-tracker4.conf</tt> die de interface naar Nginx maakt. Die<br />
interface gebruiken wij als opzetje voor de configuratie in nginx, die RT alleen bereikbaar maakt via SSL:<br />
<br />
<pre><br />
server {<br />
listen 443;<br />
server_name api.limesco.nl;<br />
<br />
root /var/www;<br />
index index.html index.htm;<br />
<br />
ssl on;<br />
ssl_certificate /etc/nginx/ssl/api.limesco.nl.bundle-primary-first.crt;<br />
ssl_certificate_key /etc/nginx/ssl/api.limesco.nl.key;<br />
<br />
ssl_session_timeout 5m;<br />
<br />
# request-tracker4 configuration for nginx<br />
# (belong to /etc/nginx/conf.d)<br />
location /rt {<br />
alias /usr/share/request-tracker4/html;<br />
<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
}<br />
<br />
# Bypass FastCGI for images<br />
location /rt/NoAuth/images {<br />
alias /usr/share/request-tracker4/html/NoAuth/images/;<br />
}<br />
<br />
# Limit mail gateway access to localhost by default<br />
location /rt/REST/1.0/NoAuth {<br />
allow 127.0.0.1;<br />
deny all;<br />
}<br />
}<br />
</pre><br />
<br />
Om de FastCGI-daemon aan te zetten verander je <tt>enabled=0</tt> in <tt>enabled=1</tt> in <tt>/etc/default/rt4-fcgi</tt>. Dan resteert ons nog het opstarten van de FastCGI-daemon en het herstarten van Nginx:<br />
<br />
<pre><br />
$ sudo ln -s /etc/nginx/sites-available/rt.conf /etc/nginx/sites-enabled/<br />
$ sudo /etc/init.d/rt4-fcgi start<br />
$ sudo /etc/init.d/nginx restart<br />
</pre><br />
<br />
En [https://api.limesco.nl/rt https://api.limesco.nl/rt] geeft netjes het loginscherm van Request Tracker weer.<br />
<br />
== Configuratie gebruikers ==<br />
<br />
Als eerste willen we users toevoegen. Dat kan in Tools → Configuration → Users → Create. Zet "let this user access RT" en "let this user be granted rights" aan. Maak ook een groep voor de administrators ("admin"): Tools → Configuration → Groups → Create; na het maken kun je rechtsboven bij "Members" members toevoegen. Deze groep geven we extra rechten: Tools → Configuration → Global → Group Rights; vul links onderin "admin" (de naam van de groep) in, klik op "Rights for Administrators", en tick "Do anything and everything".<br />
<br />
We kunnen nu uitloggen als root en inloggen als één van de users die we hebben gemaakt.</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Support-infrastructuur&diff=1012Support-infrastructuur2013-02-18T00:53:10Z<p>SGielen: /* Bestanden */</p>
<hr />
<div>Support@ is sinds het begin bemand geweest door Sjors, Gerdriaan en Mark, waarbij Sjors de meeste mails afhandelde. Omdat puur e-mail gebruiken tracken lastiger maakt, en er wel eens voor zorgde dat Sjors en Gerdriaan tegelijkertijd een antwoord stuurden, zijn we begin 2013 gaan kijken naar een ticketingsysteem. We hebben geëxperimenteerd met [http://bestpractical.com/rt/ Request Tracker] en hebben besloten dat we dat systeem als implementatie gaan gebruiken voor support-tickets.<br />
<br />
We hadden verschillende eisen voor dit systeem:<br />
<br />
# Het moet duidelijk zijn wie een ticket behandelt (eigenaar & claimfunctionaliteit)<br />
# We moeten wel alle tickets in kunnen zien, ongeacht eigenaar<br />
# Het systeem moet mailnotificaties sturen als er interessante dingen gebeuren<br />
# Alle communicatie in een ticket moet in 1 overzicht zichtbaar zijn<br />
# We willen extra properties kunnen zetten op een ticket, zodat een mail automatisch interessante informatie verzamelt (accountnaam, SIM-gegevens, eventuele SpeakUp-ticketnummers)<br />
# Tickets moeten via een commandline-interface in te zien en te wijzigen zijn<br />
# Voortgang van tickets moet snel zichtbaar zijn<br />
# Er moet een systeem voor reminders zijn, bijv. "over 2 dagen nog eens kijken hoe het staat" of "moet maximaal over 3 dagen opgelost zijn"<br />
# Dat systeem voor reminders moet ons ook kunnen e-mailen<br />
# We moeten vanaf de commandline mensen e-mail kunnen sturen, zo dat replies automatisch in dezelfde ticket komen<br />
<br />
Het bleek dat Request Tracker dit allemaal kon, of gemakkelijk aan te vullen was zodat het dit kon. Op deze pagina beschrijf ik hoe we de boel hebben geïmplementeerd, voor het geval we het nog eens moeten doen en in de hoop dat het nuttig is voor anderen.<br />
<br />
== Installatie ==<br />
<br />
De Request Tracker-installatie draait op de Debian-machine <tt>api.limesco.nl</tt>. Installatie op Debian is zo simpel als <tt>apt-get install request-tracker4</tt>. Tijdens de installatie wordt gevraagd om de naam van de Request Tracker-instance. In ons geval is dat <tt>rt.limesco.nl</tt>:<br />
<br />
<pre><br />
$ host rt.limesco.nl<br />
rt.limesco.nl mail is handled by 20 relay.transip.nl.<br />
rt.limesco.nl mail is handled by 10 api.limesco.nl.<br />
</pre><br />
<br />
Request Tracker gaat uitgevoerd worden als de user <tt>www-data</tt> omdat er niets anders als de <tt>www-data</tt>-gebruiker uitgevoerd wordt. Zouden er al bestaande services gebruikmaken van die user, dan zouden we de voorkeur hebben een aparte gebruiker aan te maken voor RT. Op de vraag "Handle RT_SiteConfig.pm permissions?" antwoorden we nu dus ja. De databaseconfiguratie kan ook automatisch worden gedaan ("Yes") en voor het initial root password kiezen we een lang, onraadbaar wachtwoord. Zodra RT is geïnstalleerd maken we een setje accounts voor mensen; de root-account wordt dan alleen nog gebruikt voor geautomatiseerde scripts.<br />
<br />
== Configuratie website ==<br />
<br />
Op <tt>api.limesco.nl</tt> gebruiken we nginx, een snelle lichte webserver met CGI-support. Om nginx en Request Tracker samen te laten werken is de package <tt>rt4-fcgi</tt> nodig. Die installeert een <tt>/etc/init.d/rt4-fcgi</tt> die Request Tracker via FastCGI bereikbaar maakt, en een <tt>/usr/share/doc/rt4-fcgi/examples/request-tracker4.conf</tt> die de interface naar Nginx maakt. Die<br />
interface gebruiken wij als opzetje voor de configuratie in nginx, die RT alleen bereikbaar maakt via SSL:<br />
<br />
<pre><br />
server {<br />
listen 443;<br />
server_name api.limesco.nl;<br />
<br />
root /var/www;<br />
index index.html index.htm;<br />
<br />
ssl on;<br />
ssl_certificate /etc/nginx/ssl/api.limesco.nl.bundle-primary-first.crt;<br />
ssl_certificate_key /etc/nginx/ssl/api.limesco.nl.key;<br />
<br />
ssl_session_timeout 5m;<br />
<br />
# request-tracker4 configuration for nginx<br />
# (belong to /etc/nginx/conf.d)<br />
location /rt {<br />
alias /usr/share/request-tracker4/html;<br />
<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
}<br />
<br />
# Bypass FastCGI for images<br />
location /rt/NoAuth/images {<br />
alias /usr/share/request-tracker4/html/NoAuth/images/;<br />
}<br />
<br />
# Limit mail gateway access to localhost by default<br />
location /rt/REST/1.0/NoAuth {<br />
allow 127.0.0.1;<br />
deny all;<br />
}<br />
}<br />
</pre><br />
<br />
Om de FastCGI-daemon aan te zetten verander je <tt>enabled=0</tt> in <tt>enabled=1</tt> in <tt>/etc/default/rt4-fcgi</tt>. Dan resteert ons nog het opstarten van de FastCGI-daemon en het herstarten van Nginx:<br />
<br />
<pre><br />
$ sudo ln -s /etc/nginx/sites-available/rt.conf /etc/nginx/sites-enabled/<br />
$ sudo /etc/init.d/rt4-fcgi start<br />
$ sudo /etc/init.d/nginx restart<br />
</pre><br />
<br />
En [https://api.limesco.nl/rt https://api.limesco.nl/rt] geeft netjes het loginscherm van Request Tracker weer.</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Support-infrastructuur&diff=1011Support-infrastructuur2013-02-18T00:53:03Z<p>SGielen: /* Configuratie website */</p>
<hr />
<div>Support@ is sinds het begin bemand geweest door Sjors, Gerdriaan en Mark, waarbij Sjors de meeste mails afhandelde. Omdat puur e-mail gebruiken tracken lastiger maakt, en er wel eens voor zorgde dat Sjors en Gerdriaan tegelijkertijd een antwoord stuurden, zijn we begin 2013 gaan kijken naar een ticketingsysteem. We hebben geëxperimenteerd met [http://bestpractical.com/rt/ Request Tracker] en hebben besloten dat we dat systeem als implementatie gaan gebruiken voor support-tickets.<br />
<br />
We hadden verschillende eisen voor dit systeem:<br />
<br />
# Het moet duidelijk zijn wie een ticket behandelt (eigenaar & claimfunctionaliteit)<br />
# We moeten wel alle tickets in kunnen zien, ongeacht eigenaar<br />
# Het systeem moet mailnotificaties sturen als er interessante dingen gebeuren<br />
# Alle communicatie in een ticket moet in 1 overzicht zichtbaar zijn<br />
# We willen extra properties kunnen zetten op een ticket, zodat een mail automatisch interessante informatie verzamelt (accountnaam, SIM-gegevens, eventuele SpeakUp-ticketnummers)<br />
# Tickets moeten via een commandline-interface in te zien en te wijzigen zijn<br />
# Voortgang van tickets moet snel zichtbaar zijn<br />
# Er moet een systeem voor reminders zijn, bijv. "over 2 dagen nog eens kijken hoe het staat" of "moet maximaal over 3 dagen opgelost zijn"<br />
# Dat systeem voor reminders moet ons ook kunnen e-mailen<br />
# We moeten vanaf de commandline mensen e-mail kunnen sturen, zo dat replies automatisch in dezelfde ticket komen<br />
<br />
Het bleek dat Request Tracker dit allemaal kon, of gemakkelijk aan te vullen was zodat het dit kon. Op deze pagina beschrijf ik hoe we de boel hebben geïmplementeerd, voor het geval we het nog eens moeten doen en in de hoop dat het nuttig is voor anderen.<br />
<br />
== Installatie ==<br />
<br />
De Request Tracker-installatie draait op de Debian-machine <tt>api.limesco.nl</tt>. Installatie op Debian is zo simpel als <tt>apt-get install request-tracker4</tt>. Tijdens de installatie wordt gevraagd om de naam van de Request Tracker-instance. In ons geval is dat <tt>rt.limesco.nl</tt>:<br />
<br />
<pre><br />
$ host rt.limesco.nl<br />
rt.limesco.nl mail is handled by 20 relay.transip.nl.<br />
rt.limesco.nl mail is handled by 10 api.limesco.nl.<br />
</pre><br />
<br />
Request Tracker gaat uitgevoerd worden als de user <tt>www-data</tt> omdat er niets anders als de <tt>www-data</tt>-gebruiker uitgevoerd wordt. Zouden er al bestaande services gebruikmaken van die user, dan zouden we de voorkeur hebben een aparte gebruiker aan te maken voor RT. Op de vraag "Handle RT_SiteConfig.pm permissions?" antwoorden we nu dus ja. De databaseconfiguratie kan ook automatisch worden gedaan ("Yes") en voor het initial root password kiezen we een lang, onraadbaar wachtwoord. Zodra RT is geïnstalleerd maken we een setje accounts voor mensen; de root-account wordt dan alleen nog gebruikt voor geautomatiseerde scripts.<br />
<br />
== Configuratie website ==<br />
<br />
Op <tt>api.limesco.nl</tt> gebruiken we nginx, een snelle lichte webserver met CGI-support. Om nginx en Request Tracker samen te laten werken is de package <tt>rt4-fcgi</tt> nodig. Die installeert een <tt>/etc/init.d/rt4-fcgi</tt> die Request Tracker via FastCGI bereikbaar maakt, en een <tt>/usr/share/doc/rt4-fcgi/examples/request-tracker4.conf</tt> die de interface naar Nginx maakt. Die<br />
interface gebruiken wij als opzetje voor de configuratie in nginx, die RT alleen bereikbaar maakt via SSL:<br />
<br />
<pre><br />
server {<br />
listen 443;<br />
server_name api.limesco.nl;<br />
<br />
root /var/www;<br />
index index.html index.htm;<br />
<br />
ssl on;<br />
ssl_certificate /etc/nginx/ssl/api.limesco.nl.bundle-primary-first.crt;<br />
ssl_certificate_key /etc/nginx/ssl/api.limesco.nl.key;<br />
<br />
ssl_session_timeout 5m;<br />
<br />
# request-tracker4 configuration for nginx<br />
# (belong to /etc/nginx/conf.d)<br />
location /rt {<br />
alias /usr/share/request-tracker4/html;<br />
<br />
expires epoch;<br />
include /etc/nginx/fastcgi_params;<br />
fastcgi_param SCRIPT_NAME "/rt";<br />
fastcgi_pass unix:/var/run/rt4-fcgi.sock;<br />
}<br />
<br />
# Bypass FastCGI for images<br />
location /rt/NoAuth/images {<br />
alias /usr/share/request-tracker4/html/NoAuth/images/;<br />
}<br />
<br />
# Limit mail gateway access to localhost by default<br />
location /rt/REST/1.0/NoAuth {<br />
allow 127.0.0.1;<br />
deny all;<br />
}<br />
}<br />
</pre><br />
<br />
Om de FastCGI-daemon aan te zetten verander je <tt>enabled=0</tt> in <tt>enabled=1</tt> in <tt>/etc/default/rt4-fcgi</tt>. Dan resteert ons nog het opstarten van de FastCGI-daemon en het herstarten van Nginx:<br />
<br />
<pre><br />
$ sudo ln -s /etc/nginx/sites-available/rt.conf /etc/nginx/sites-enabled/<br />
$ sudo /etc/init.d/rt4-fcgi start<br />
$ sudo /etc/init.d/nginx restart<br />
</pre><br />
<br />
En [https://api.limesco.nl/rt https://api.limesco.nl/rt] geeft netjes het loginscherm van Request Tracker weer.<br />
<br />
== Bestanden ==<br />
<br />
=== /etc/init.d/rt ===<br />
<br />
<pre><br />
#!/bin/sh<br />
### BEGIN INIT INFO<br />
# Provides: rt<br />
# Required-Start: $remote_fs $syslog<br />
# Required-Stop: $remote_fs $syslog<br />
# Default-Start: 2 3 4 5<br />
# Default-Stop: 0 1 6<br />
# X-Start-Before: nginx<br />
# X-Stop-After: nginx<br />
# Short-Description: Start spawn-fcgi for serving RT through nginx.<br />
# Description: Start spawn-fcgi for serving RT through nginx.<br />
### END INIT INFO<br />
# Adapted from:<br />
# http://rodenberg.blogspot.nl/2011/08/install-request-tracker-4-with-nginx.html<br />
# Adapted by Sjors Gielen, Limesco, february 2013<br />
<br />
. /lib/lsb/init-functions<br />
<br />
RTPATH=/usr/share/request-tracker4<br />
RTUSER=www-data<br />
<br />
case $1 in<br />
start)<br />
log_begin_msg "Starting RT: "<br />
spawn-fcgi -F 3 -u www-data -g www-data -a 127.0.0.1 -p 9000 \<br />
-- /usr/share/request-tracker4/libexec/rt-server.fcgi<br />
log_end_msg 0<br />
;;<br />
<br />
stop)<br />
log_begin_msg "Stopping RT: "<br />
PIDS=`ps axww | awk '/[r]t-server.fcgi/ { print $1}'`<br />
if [ -n "$PIDS" ]; then<br />
kill $PIDS<br />
else<br />
echo RT not running<br />
fi<br />
log_end_msg 0<br />
;;<br />
<br />
restart|force-reload)<br />
$0 stop<br />
$0 start<br />
;;<br />
<br />
*)<br />
log_action_msg "Usage: /etc/init.d/rt {start|stop|restart|force-reload}"<br />
;;<br />
<br />
esac<br />
</pre><br />
<br />
[[Categorie:Infrastructuur]]</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Support-infrastructuur&diff=1010Support-infrastructuur2013-02-17T19:56:11Z<p>SGielen: Schrijf "Installatie", beginnetje aan "Configuratie"</p>
<hr />
<div>Support@ is sinds het begin bemand geweest door Sjors, Gerdriaan en Mark, waarbij Sjors de meeste mails afhandelde. Omdat puur e-mail gebruiken tracken lastiger maakt, en er wel eens voor zorgde dat Sjors en Gerdriaan tegelijkertijd een antwoord stuurden, zijn we begin 2013 gaan kijken naar een ticketingsysteem. We hebben geëxperimenteerd met [http://bestpractical.com/rt/ Request Tracker] en hebben besloten dat we dat systeem als implementatie gaan gebruiken voor support-tickets.<br />
<br />
We hadden verschillende eisen voor dit systeem:<br />
<br />
# Het moet duidelijk zijn wie een ticket behandelt (eigenaar & claimfunctionaliteit)<br />
# We moeten wel alle tickets in kunnen zien, ongeacht eigenaar<br />
# Het systeem moet mailnotificaties sturen als er interessante dingen gebeuren<br />
# Alle communicatie in een ticket moet in 1 overzicht zichtbaar zijn<br />
# We willen extra properties kunnen zetten op een ticket, zodat een mail automatisch interessante informatie verzamelt (accountnaam, SIM-gegevens, eventuele SpeakUp-ticketnummers)<br />
# Tickets moeten via een commandline-interface in te zien en te wijzigen zijn<br />
# Voortgang van tickets moet snel zichtbaar zijn<br />
# Er moet een systeem voor reminders zijn, bijv. "over 2 dagen nog eens kijken hoe het staat" of "moet maximaal over 3 dagen opgelost zijn"<br />
# Dat systeem voor reminders moet ons ook kunnen e-mailen<br />
# We moeten vanaf de commandline mensen e-mail kunnen sturen, zo dat replies automatisch in dezelfde ticket komen<br />
<br />
Het bleek dat Request Tracker dit allemaal kon, of gemakkelijk aan te vullen was zodat het dit kon. Op deze pagina beschrijf ik hoe we de boel hebben geïmplementeerd, voor het geval we het nog eens moeten doen en in de hoop dat het nuttig is voor anderen.<br />
<br />
== Installatie ==<br />
<br />
De Request Tracker-installatie draait op de Debian-machine <tt>api.limesco.nl</tt>. Installatie op Debian is zo simpel als <tt>apt-get install request-tracker4</tt>. Tijdens de installatie wordt gevraagd om de naam van de Request Tracker-instance. In ons geval is dat <tt>rt.limesco.nl</tt>:<br />
<br />
<pre><br />
$ host rt.limesco.nl<br />
rt.limesco.nl mail is handled by 20 relay.transip.nl.<br />
rt.limesco.nl mail is handled by 10 api.limesco.nl.<br />
</pre><br />
<br />
Request Tracker gaat uitgevoerd worden als de user <tt>www-data</tt> omdat er niets anders als de <tt>www-data</tt>-gebruiker uitgevoerd wordt. Zouden er al bestaande services gebruikmaken van die user, dan zouden we de voorkeur hebben een aparte gebruiker aan te maken voor RT. Op de vraag "Handle RT_SiteConfig.pm permissions?" antwoorden we nu dus ja. De databaseconfiguratie kan ook automatisch worden gedaan ("Yes") en voor het initial root password kiezen we een lang, onraadbaar wachtwoord. Zodra RT is geïnstalleerd maken we een setje accounts voor mensen; de root-account wordt dan alleen nog gebruikt voor geautomatiseerde scripts.<br />
<br />
== Configuratie website ==<br />
<br />
Op <tt>api.limesco.nl</tt> gebruiken we nginx, een snelle lichte webserver met CGI-support. Om nginx en Request Tracker samen te laten werken zijn de packages <tt>spawn-fcgi</tt> en <tt>libfcgi-perl</tt> nodig, en installeren we <tt>/etc/init.d/rt</tt> (zie [[#/etc/init.d/rt|hieronder]]).<br />
<br />
== Bestanden ==<br />
<br />
=== /etc/init.d/rt ===<br />
<br />
<pre><br />
#!/bin/sh<br />
### BEGIN INIT INFO<br />
# Provides: rt<br />
# Required-Start: $remote_fs $syslog<br />
# Required-Stop: $remote_fs $syslog<br />
# Default-Start: 2 3 4 5<br />
# Default-Stop: 0 1 6<br />
# X-Start-Before: nginx<br />
# X-Stop-After: nginx<br />
# Short-Description: Start spawn-fcgi for serving RT through nginx.<br />
# Description: Start spawn-fcgi for serving RT through nginx.<br />
### END INIT INFO<br />
# Adapted from:<br />
# http://rodenberg.blogspot.nl/2011/08/install-request-tracker-4-with-nginx.html<br />
# Adapted by Sjors Gielen, Limesco, february 2013<br />
<br />
. /lib/lsb/init-functions<br />
<br />
RTPATH=/usr/share/request-tracker4<br />
RTUSER=www-data<br />
<br />
case $1 in<br />
start)<br />
log_begin_msg "Starting RT: "<br />
spawn-fcgi -F 3 -u www-data -g www-data -a 127.0.0.1 -p 9000 \<br />
-- /usr/share/request-tracker4/libexec/rt-server.fcgi<br />
log_end_msg 0<br />
;;<br />
<br />
stop)<br />
log_begin_msg "Stopping RT: "<br />
PIDS=`ps axww | awk '/[r]t-server.fcgi/ { print $1}'`<br />
if [ -n "$PIDS" ]; then<br />
kill $PIDS<br />
else<br />
echo RT not running<br />
fi<br />
log_end_msg 0<br />
;;<br />
<br />
restart|force-reload)<br />
$0 stop<br />
$0 start<br />
;;<br />
<br />
*)<br />
log_action_msg "Usage: /etc/init.d/rt {start|stop|restart|force-reload}"<br />
;;<br />
<br />
esac<br />
</pre><br />
<br />
[[Categorie:Infrastructuur]]</div>SGielenhttps://secure.limesco.nl/w/index.php?title=support&diff=1005support2013-02-17T17:55:52Z<p>SGielen: Pagina bijgewerkt</p>
<hr />
<div>Je bent hier waarschijnlijk gekomen omdat er een probleem is met je SIM, je telefooncentrale, een factuur/betaling of iets anders. Op deze pagina proberen we je te helpen ons te helpen jou te helpen. Dat wil zeggen: wij zullen ons best doen je probleem op te lossen, maar daarvoor hebben we de juiste informatie van jou nodig.<br />
<br />
Stuur een e-mail naar ons: [mailto:support@limesco.nl support@limesco.nl]. Mocht je een vertrouwelijke mail willen sturen, kun je 'm encrypten met PGP. De vier keys die je daarvoor gebruikt zijn 7F635009/59A66010 (Sjors Gielen), 3200BBC7 (Mark van Cuijk) en 81493F83 (Gerdriaan Mulder).<br />
<br />
'''Let erop dat deze Wiki door iedereen gewijzigd kan worden; weeg het risico daarvan af tegen de geschiedenis van deze pagina en eventuele signatures die je op de genoemde keys ziet.'''<br />
<br />
Geïnteresseerd in de [[Support-infrastructuur]]?</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Support-infrastructuur&diff=1004Support-infrastructuur2013-02-17T17:55:08Z<p>SGielen: Beginnetje aan pagina over Support-infrastructuur</p>
<hr />
<div>Support@ is sinds het begin bemand geweest door Sjors, Gerdriaan en Mark, waarbij Sjors de meeste mails afhandelde. Omdat puur e-mail gebruiken tracken lastiger maakt, en er wel eens voor zorgde dat Sjors en Gerdriaan tegelijkertijd een antwoord stuurden, zijn we begin 2013 gaan kijken naar een ticketingsysteem. We hebben geëxperimenteerd met [http://bestpractical.com/rt/ Request Tracker] en hebben besloten dat we dat systeem als implementatie gaan gebruiken voor support-tickets.<br />
<br />
We hadden verschillende eisen voor dit systeem:<br />
<br />
# Het moet duidelijk zijn wie een ticket behandelt (eigenaar & claimfunctionaliteit)<br />
# We moeten wel alle tickets in kunnen zien, ongeacht eigenaar<br />
# Het systeem moet mailnotificaties sturen als er interessante dingen gebeuren<br />
# Alle communicatie in een ticket moet in 1 overzicht zichtbaar zijn<br />
# We willen extra properties kunnen zetten op een ticket, zodat een mail automatisch interessante informatie verzamelt (accountnaam, SIM-gegevens, eventuele SpeakUp-ticketnummers)<br />
# Tickets moeten via een commandline-interface in te zien en te wijzigen zijn<br />
# Voortgang van tickets moet snel zichtbaar zijn<br />
# Er moet een systeem voor reminders zijn, bijv. "over 2 dagen nog eens kijken hoe het staat" of "moet maximaal over 3 dagen opgelost zijn"<br />
# Dat systeem voor reminders moet ons ook kunnen e-mailen<br />
# We moeten vanaf de commandline mensen e-mail kunnen sturen, zo dat replies automatisch in dezelfde ticket komen<br />
<br />
Het bleek dat Request Tracker dit allemaal kon, of gemakkelijk aan te vullen was zodat het dit kon. Op deze pagina beschrijf ik hoe we de boel hebben geïmplementeerd, voor het geval we het nog eens moeten doen en in de hoop dat het nuttig is voor anderen.<br />
<br />
[[Categorie:Infrastructuur]]</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Gebruiker:SGielen&diff=1003Gebruiker:SGielen2013-02-17T17:45:46Z<p>SGielen: Lijstje</p>
<hr />
<div><pre><br />
FULLNAME = "Sjors Gielen"<br />
EMAIL = "sjors@limesco.org"<br />
WEBSITE = "http://sjorsgielen.nl/"<br />
TWITTER = "http://twitter.com/sjorsgielen"<br />
PGPKEY1 = "4CE0 ACB4 739C 2E61 63C2 7EC3 0190 4E1C 7F63 5009" # [0]<br />
PGPKEY2 = "B722 1131 25F5 E3DA ADA9 0045 A01F 4A76 59A6 6010" # [1]<br />
export FULLNAME EMAIL WEBSITE TWITTER PGPKEY1 PGPKEY2<br />
</pre><br />
<br />
* [0] http://pgp.surfnet.nl:11371/pks/lookup?op=index&search=0x7f635009<br />
* [1] http://pgp.surfnet.nl:11371/pks/lookup?op=index&search=0x59a66010</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Gebruiker:SGielen&diff=1002Gebruiker:SGielen2013-02-17T17:45:22Z<p>SGielen: Voeg mijn Limesco-specifieke sleutel ook toe (ze zijn cross-signed)</p>
<hr />
<div><pre><br />
FULLNAME = "Sjors Gielen"<br />
EMAIL = "sjors@limesco.org"<br />
WEBSITE = "http://sjorsgielen.nl/"<br />
TWITTER = "http://twitter.com/sjorsgielen"<br />
PGPKEY1 = "4CE0 ACB4 739C 2E61 63C2 7EC3 0190 4E1C 7F63 5009" # [0]<br />
PGPKEY2 = "B722 1131 25F5 E3DA ADA9 0045 A01F 4A76 59A6 6010" # [1]<br />
export FULLNAME EMAIL WEBSITE TWITTER PGPKEY1 PGPKEY2<br />
</pre><br />
<br />
<br />
[0] http://pgp.surfnet.nl:11371/pks/lookup?op=index&search=0x7f635009<br />
[1] http://pgp.surfnet.nl:11371/pks/lookup?op=index&search=0x59a66010</div>SGielenhttps://secure.limesco.nl/w/index.php?title=support&diff=997support2012-12-11T20:46:22Z<p>SGielen: Supportpagina herschreven.</p>
<hr />
<div>Je bent hier waarschijnlijk gekomen omdat er een probleem is met je SIM, je telefooncentrale, een factuur/betaling of iets anders. Op deze pagina proberen we je te helpen ons te helpen jou te helpen. Dat wil zeggen: wij zullen ons best doen je probleem op te lossen, maar daarvoor hebben we de juiste informatie van jou nodig.<br />
<br />
Wil je direct een mail sturen? Spring dan meteen naar het kopje [[Support#Meer hulp nodig?|Meer hulp nodig?]].<br />
<br />
= FAQ =<br />
<br />
Hier komt een FAQ. In de tussentijd vind je een verouderde FAQ [[Website#FAQ|hier]].<br />
<br />
= Meer hulp nodig? =<br />
<br />
Je hebt op deze pagina het antwoord niet gevonden of er is veel haast.<br />
<br />
Stuur een e-mail naar ons: [mailto:support@limesco.nl support@limesco.nl]. Mocht je een vertrouwelijke mail willen sturen, kun je 'm encrypten met PGP. De drie keys die je daarvoor gebruikt zijn 7F635009 (Sjors Gielen), 3200BBC7 (Mark van Cuijk) en 81493F83 (Gerdriaan Mulder).<br />
<br />
'''Let erop dat deze Wiki door iedereen gewijzigd kan worden; weeg het risico daarvan af tegen de geschiedenis van deze pagina en eventuele signatures die je op de genoemde keys ziet.'''</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Hoofdpagina&diff=971Hoofdpagina2012-10-25T15:54:59Z<p>SGielen: +Getting started</p>
<hr />
<div>[[Bestand:Logo.gif]]<br />
<br />
Limesco is een mobiele telefoonaanbieder waar de klanten de directie vormen! Niet letterlijk, maar bij Limesco wordt je niet 'gewoon een klant' maar deel van een community. Een community die mobiele telefonie gaat vernieuwen. Limesco is niet een bedrijf waar je een nummer bent, nee: Limesco, dat zijn we allemaal. En dat is nu eens niet een loze marketing-kreet.<br />
<br />
Juridisch gezien bestaat Limesco uit één rechtspersoon: [[Limesco B.V.]]. De leden van de informele vereniging, de zorgvuldig geselecteerde aandeelhouders en de directie van de B.V. vormen de community Limesco. Deze wiki is het platform voor die community.<br />
<br />
== Belangrijke informatie ==<br />
* [[Tarieven]]<br />
* [[Bijdrage_vaste_kosten_Limesco|Opbouw bijdrage vaste kosten Limesco]]<br />
* [[Informatiestromen]]<br />
* [https://limesco.org/pilot SIM-kaart aanvragen]<br />
* [[Getting started]] als je SIM net is geactiveerd.<br />
<br />
== E-mailadressen ==<br />
<br />
* Nieuwe leden kun je naar [mailto:lidworden@limesco.org lidworden@limesco.org] laten mailen<br />
* Met problemen met deze wiki kun je terecht bij [mailto:bofh@lists.limesco.nl bofh@lists.limesco.nl]<br />
* Het adres van de ledenlijst is [mailto:leden@lists.limesco.nl leden@lists.limesco.nl]<br />
* Mark, Sjors en Gerdriaan ontvangen alle mail die je naar [mailto:founders@limesco.org founders@limesco.org] en [mailto:bv@limesco.nl bv@limesco.nl] stuurt<br />
* Koen is o.a. te bereiken via [mailto:gmc@limesco.org gmc@limesco.org]<br />
* De [[BOFH]] zijn te bereiken op [mailto:bofh@lists.limesco.nl bofh@lists.limesco.nl]<br />
* Een voorstel voor [[Mailinglists|mailinglists]].</div>SGielenhttps://secure.limesco.nl/w/index.php?title=Getting_started&diff=970Getting started2012-10-25T15:54:29Z<p>SGielen: Opzetje voor een Getting-startedpagina</p>
<hr />
<div>Je inschrijving bij Limesco is voltooid. Je hebt een SIM ontvangen, waarop een nummer is geactiveerd (al dan niet tijdelijk, in afwachting van een portering). Wat nu?<br />
<br />
* Als je een data-abonnement hebt afgesloten, moet je op je telefoon nog de juiste APN instellen: [[Telefooninstellingen]]<br />
* Als je voor Limesco Do-It-Yourself bent gegaan, moet je nog je PBX instellen, bijv. bij Asterisk: [[Asterisk instellen]]<br />
* Vragen, opmerkingen of suggesties? Stuur een mailtje naar [mailto:support@limesco.org support@limesco.org] :)</div>SGielen