= IPABX Dakar =

{{{telefon.sn.auf}}}

== version actuelles ==
/!\ Après chaque mise à jour du noyau retélecharger le module zaptel
#wget http://updates.xorcom.com/pkg-voip/repo-amd64-lenny/pool/main/z/zaptel/zaptel-modules-2.6.xyz

{{{
ii  asterisk                       1.4.9~dfsg-1                       Open Source Private Branch Exchange (PBX)
ii  asterisk-config                1.4.9~dfsg-1                       config files for asterisk
ii  asterisk-sounds-main           1.4.9~dfsg-1                       sound files for asterisk
ii  libpri1.2                      1.4.0-2                            Primary Rate ISDN specification library
ii  libtonezone1                   1.4.4~dfsg-1                       tonezone library (runtime)
ii  zaptel                         1.4.4~dfsg-1                       zapata telephony utilities
ii  zaptel-modules-2.6.18-3-686    1.2.11.dfsg-1+2.6.18-7             zaptel modules for Linux (kernel 2.6.18-3-68
ii  zaptel-modules-2.6.18-4-686    1.4.4~dfsg-1+2.6.18.dfsg.1-12etch2 zaptel modules for Linux (kernel 2.6.18-4-68
ii  zaptel-source                  1.4.4~dfsg-1                       Zapata telephony interface (source code for 
}}}

== module zaptel ==


# cat /etc/zaptel.conf
{{{
fxsks=1-8
loadzone=fr
defaultzone=fr
}}}
#cat /etc/modprobe.d/zaptel
{{{
options wctdm24xxp opermode=TBR21 debug=1
}}}

+ usb flingué dans le bios, pour avoir une IRQ dédiée à la carte 

== Asterisk ==

=== /etc/asterisk/zapata.conf ===
{{{
[trunkgroups]

[channels]
language=fr
context=mainmenu
signalling=fxs_ks
echocancel=yes
rxgain=0.0
txgain=0.0

; fin de communication : detection ALACON 
busydetect=yes
busycount=6

; fin de communication : detection "polarite"
hanguponpolarityswitch=yes

group=1
callgroup=1
pickupgroup=1

immediate=no

channel => 1

}}}

== Quelques petites vérifications en cas de pépin ==

{{{

# ztmonitor 1 -v  : monitor les cannaux RX/TX

# ztscan 
    description=Wildcard TDM2400P Board 1
    name=WCTDM/0
    manufacturer=Digium
    devicetype=Wildcard TDM2400P with VPM100M
    location=PCI Bus 01 Slot 10
    basechan=1
    totchans=24

# ztcfg -vv  fournit des renseignements de ce genre :
    Zaptel Version: 1.4.12.9.svn.r4649
    Echo Canceller: OSLEC
    Configuration
    ======================
    
    
    Channel map:
    
    Channel 01: FXS Kewlstart (Default) (Slaves: 01)
    Channel 02: FXS Kewlstart (Default) (Slaves: 02)
    Channel 03: FXS Kewlstart (Default) (Slaves: 03)
    Channel 04: FXS Kewlstart (Default) (Slaves: 04)
    Channel 05: FXS Kewlstart (Default) (Slaves: 05)
    Channel 06: FXS Kewlstart (Default) (Slaves: 06)
    Channel 07: FXS Kewlstart (Default) (Slaves: 07)
    Channel 08: FXS Kewlstart (Default) (Slaves: 08)

    8 channels to configure.

~# lsmod | grep zaptel
    zaptel                196424  11 wctdm24xxp
    oslec                  12832  1 zaptel
    crc_ccitt               6528  1 zaptel

}}}

=== indications.conf ===

Création d'un paragraphe {{{[sn]}}} basé sur http://www.itu.int/ITU-T/inr/forms/files/tones-0203.pdf
{{{
[general]
country=sn              ; default location

[sn]
description = Senegal
ringcadence = 1700,3300
dial = 440
busy = 440/500,0/500
ring = 440/1700,0/3300
; CONGESTION - not specified
congestion = 440/250,0/250
callwait = 440/300,0/10000
; DIALRECALL - not specified
dialrecall = !350+440/100,!0/100,!350+440/100,!0/100,!350+440/100,!0/100,350+440
; RECORDTONE - not specified
record = 1400/500,0/15000
info = !950/330,!1400/330,!1800/330
stutter = !440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,!440/100,!0/100,440
}}}

== Surcharge AUF ==
=== auf/extensions-final.conf ===
Contient le menu d'accueil
{{{
[auf-accueil]
exten => s,1,Set(GLOBAL(snd_path)=/usr/share/asterisk/sounds/auf/) ; variable globale du chemin des sons
exten => s,n,Set(GLOBAL(agi_path)=/usr/share/asterisk/agi-bin/)    ; variable globale du chemin du script externe
exten => s,n,Wait(3)
exten => s,n,Answer()
exten => s,n,AGI(${agi_path}openclose.agi)   
exten => s,n,GotoIf($[${STATUS} = closed]?FERME,s,1:)
exten => s,n,Playback(beep)
exten => s,n,Background(${snd_path}/bienvenu|m|auf-accueil)
exten => s,n,Goto(s-menu,1)
}}}

Initialisation d'une variable locale pour permettre de boucler le menu 4 fois

{{{
exten => s-menu,1,Set(bouclemenu=4)   
exten => s-menu,2,Wait(1)             ; 
exten => s-menu,n,Background(${snd_path}auf-menu)
exten => s-menu,n,WaitExten(5)
exten => s-menu,n,Set(bouclemenu=$[${bouclemenu} - 1])
exten => s-menu,n,GotoIf($[${bouclemenu} != 0]?2:)
exten => s-menu,n,Playback(beep)
exten => s-menu,n,Hangup()

}}}

Le menu qui redirige les gens quand un numéro est tapé.
{{{
exten => 1,1,Goto(admin,s,1) ; 1- ADMINISTRATION
exten => 2,1,Goto(pgrm,s,1)  ; 2- PROGRAMME
exten => 3,1,Goto(foad,s,1)  ; 3- foad
exten => 4,1,Goto(cnfd,s,1)  ; 4- cnfd
exten => 5,1,Goto(tech,s,1)  ; 5- techS
exten => 6,1,Goto(infos,s,1) ; 6- infos
exten => 0,1,Goto(poste,s,1) ; 0-pour rediriger directement vers un poste connu
exten => *,1,Goto(s-menu,2) ;*- revenir au menu
exten => i,1,Playback(${snd_path}invalide) ; Joue le son pbx-invalid si l’utilsateur appuie sur une entrée non autorisée
exten => i,n,Goto(s-menu,2) ; … puis reviens au début du contexte 
exten => t,1,Hangup()

; Les contexts contenants les sous menus
[FERME]
;1- Heure d'ouverture bureau
exten => s,1,Playback(beep)
exten => s,n,Playback(${snd_path}/bienvenu)  ; Bienvenue a l'auf BAO
exten => s,n,Playback(${snd_path}/ferme)     ; Heures d'ouverture en rappel
exten => s,n,Hangup()                        ;
}}}

La fausse file d'attente si on tape sur 1
{{{
[admin]
exten => s,1,Dial(IAX2/faustina.mekui-biyoo&SIP/faustina.mekui-biyoo,20,rtT) ; appel sur 2 technologies
exten => s,n,Dial(IAX2/diaw.diagne,20,rtT)
exten => s,n,Dial(IAX2/oulimata.dieye,20,rtT)
exten => t,1,Playback(${snd_path}fin)
exten => t,n,Goto(auf-accueil,s-menu,1) ; retourne au menu
}}}

Les contextes ou groupes d'utilisateurs pouvant faire des appels vers les différents opérateurs

{{{
[dkr-fixe]
; numero orange fixe
exten => _933XXXXXXX,1,Dial(Zap/r2/${EXTEN:1},20,rt)

[urgences]
;a rajouter....
exten => 917,1,Dial(Zap/r2/${EXTEN:1},20,rt)         ; Police
exten => 918,1,Dial(Zap/r2/${EXTEN:1},20,rt)         ; Pompiers


[user]
; Groupe restreint aux téléphones fixes
include => test
include => directcentrex
include => AUF
include => urgences
include => dkr-services
include => dkr-fixe
}}} 
Les 3 fichiers ci-dessous seront créée générer par un script ast-conf, pour avoir plusieurs fichiers cohérent. 

=== auf/extensions.local.auto ===
{{{
exten => 101,1,Macro(AUFDial,oulimata.dieye)
exten => 101,hint,SIP/oulimata.dieye&IAX2/oulimata.dieye
exten => oulimata.dieye,1,Macro(AUFDial,oulimata.dieye)
exten => oulimata.dieye,hint,SIP/oulimata.dieye&IAX2/oulimata.dieye
}}}

=== auf/iax.local.auto ===
{{{
[oulimata.dieye]
type=friend
callerid="Oulimata Dieye" <002211101>
mailbox=101@AUF
user=oulimata.dieye
secret=lemotdepasse
context=user     
host=dynamic
disallow=all
allow=ulaw
defaultip=11.22.33.44
}}}

=== auf/sip.local.auto ===
{{{
[oulimata.dieye]
type=friend
callerid="Oulimata Dieye" <002211101>
mailbox=101@AUF
username=oulimata.dieye
secret=lemotdepasse
context=user
host=dynamic
disallow=all
allow=ulaw
call-limit=10
}}}

== Tests à effectuer avant validation ==

 * appels sortant vers sonatel
  * est-ce que le hangup est bien detecté ? -- ça c'est bon
 * appels entrant depuis sonatel
  * est-ce que le hangup est bien detecté ? -- bidouillage, c'est bon quand on décroche, mais pas bon quand on décroche pas. Donc on a bidouillé au niveau de la voicemail.conf pour ne pas accepter de message vide de plus de 4 secondes.
 * appels sortant vers auf -- c'est bon
 * appels entrant depuis auf -- RAS
 * menu d'accueil -- On se contente de ça
 * n clients connectés simultanément -- C'est bô
 * ligne directcentrex -- ça marche
 * stats: MRTG -- pffffffffffffff
 * gestion des files d'attente -- pffffffffffffff
 * Documentation Wiki  -- pffffffffffff
 * Friendly Algorithme -- pffffffffffffff
----
[[CatégorieVoIP]]