Asterisk

Από AWMN-WiKi

Μετάβαση σε:πλοήγηση, αναζήτηση
Puzzle Piece
Excelent Work!
Ευχαριστούμε, για
την συνεισφορά σας.
...η ομάδα Mediawiki!


Πίνακας περιεχομένων

Εισαγωγή

O Asterisk είναι ένα ολοκληρωμένο PBX σύστημα υλοποιημένο σε software. "Τρέχει" σε Linux, BSD, Windows (σε προσομοίωση) και OS X και παρέχει όλες εκείνες τις δυνατότητες που περιμένει κανείς από ένα PBX. Ο Asterisk παρέχει VoIP σε τέσσερα πρωτόκολλα , και μπορεί να συνεργαστεί με σχεδόν όλα τα στάνταρ τηλεφωνικά κέντρα χρησιμοποιώντας βέβαια το κατάλληλο υλικό .

Ο Asterisk παρέχει υπηρεσίες Voicemail με δυνατότητα καταλόγου, κλήσεις συνδιάσκεψης, διαδραστική απόκριση φωνής, ουρά κλήσεων. Επίσης παρέχει την δυνατότητα τριμερών κλήσεων, αναγνώριση κλήσεων,ADSI, IAX, SIP, H.323 (client and gateway), MGCP (call manager only) και SCCP/Skinny.

O Asterisk δεν χρειάζεται κάποιο άλλο υλικό για την πραγματοποίηση VoIP κλήσεων, αν και υλοποιεί μέσω ενός οδηγού ένα ψεύδο-υλικό για χρονισμό κάποιων εφραμογών, όπως η συνδιάσκεψη. Ένας η περισσότεροι VoIP πάροχοι μπορούν να χρησιμοποιηθούν για την πραγματοποίηση εισερχόμενων κι εξερχόμενων κλήσεων.

Για την διασύνδεση του Asterisk με ψηφιακό κι αναλογικό τηλεφωνικό εξοπλισμό, ο Asterisk υποστηρίζει πλήθος καρτών, κυρίως κάρτες τις οποίες κατασκευάζει η Digium, εταιρεία που σπονσαράρει τον Asterisk. H Digium έχει μονές και τετραπλές Ε1 και Τ1 κάρτες για την διασύνδεση του asterisk με PRI γραμμές, καθώς και κάρτες με ένα εώς τέσσερις πόρτες FXO κι FXS για την διασύνδεση με αναλογικό τηλεφωνικό εξοπλισμό. Ο εξοπλισμός για τον Asterisk κλείνει με κάρτες που υποστηρίζουν το CAPI πρωτόκολο και κάρτες με HFC chipset.

Τέλος για την διασύνδεση με κινητά δίκτυα (GSM ή CDMA), o Asterisk μπορεί να χρησιμοποιήσει τον Cellian οδηγό ή το chan_mobile.

Οι τρέχουσες εκδόσεις του Asterisk είναι 1.2.31.1, 1.4.23.1 και 1.6.1rc1.

Εγκατάσταση

Εδώ θα προσπαθήσουμε να εξηγήσουμε με απλά λόγια πως μπορούμε να στήσουμε ένα σύστημα με Asterisk και το οποίο θα μπορούμε να το παραμετροποιήσουμε σύμφωνα με τις ανάγκες μας.

Για την πραγματοποίηση αυτού του οδηγού χρησιμοποιήσαμε έναν υπολογιστή με εγκατεστημένο το Slackware 12.2, την τελευταία έκδοση του Asterisk για την έκδοση 1.4, μία κάρτα x100p για την διασύνδεση του Asterisk με τον ΟΤΕ, και τον τελευταίο Dahdi οδηγό. Επίσης θα δώσουμε την δυνατότητα στον Asterisk να δέχεται αλλά και να στέλνει faxes. Για αυτό τον σκοπό θα χρειαστούμε το iaxmodem και μια επιπλέον εφαρμογή για τον Asterisk. Για να μπορέσει ο Asterisk να στέλνει και να δέχεται faxes θα χρειαστεί να συνεργαστεί με τον Hylafax-Server του οποίου την εγκατάσταση και παραμετροποίηση μπορούμε να την δούμε στην παρακάτω σελίδα:

http://www.awmn/wiki/index.php/Hylafax-server

Σαν λειτουργικό μας σύστημα επιλέξαμε το Slackware 12.2 γιατί είναι ένα λειτουργικό το οποίο μας προσφέρει ελευθερία στην επιλογή των πακέτων. Δεν χρησιμοποιούμε precompiled πακέτα με αποτέλεσμα να χρησιμοποιούμε το 100% του υπολογιστή μας. Επίσης η 12.2 είναι η τελευταία έκδοση του Slackware από την οποία έχουμε τα πιο ενημερωμένα πακέτα.

Χρησιμοποιήσαμε την τελευταία έκδοση για την σειρά 1.4 του Asterisk γιατί με αυτή μπορούμε να κάνουμε τον Asterisk να "ακούει" τα Fax που δέχεται ή πρόκειται να στείλει. Επίσης είναι η πιο ενημερωμένη έκδοση για την σειρά 1.4. Γενικά να προτιμάτε τις τελευταίες εκδόσεις των προγραμμάτων καθώς αυτές θα έχουν και τα λιγότερα κενά ασφαλείας.

Την κάρτα x100p την χρησιμοποιήσαμε γιατί είναι μια πολύ αξιόπιστη κάρτα FXO κι επίσης είναι πολύ φτηνή. Για λύσεις "σπιτικού" τηλεφωνικού κέντρου είναι η ιδανική.

Τα βήματα που θα ακολουθήσουμε για την εγκατάσταση του Asterisk είναι με σειρά τα εξής:

  1. Εγκατάσταση Dahdi οδηγού.
  2. Εγκατάσταση iksemel codec
  3. Εγκατάσταση speex codec
  4. Εγκατάσταση Asterisk
  5. Εγκατάσταση Asterisk-addons
  6. Εγκατάσταση iaxmodem

Οδηγός DAHDI

Εγκατάσταση Οδηγού Dahdi

Για την πραγματοποίηση όλων των παραπάνω εγκαταστάσεων υποθέτω ότι ο υπολογιστής που θα φιλοξενήσει τον asterisk θα έχει πρόσβαση στο διαδίκτυο, έτσι ώστε να κατεβάσουμε τα sources των πακέτων που θα χρησιμοποιήσουμε κατευθείαν από το διαδίκτυο.

Όλα τα πακέτα καλό θα ήταν να τα αποθηκεύουμε στον κατάλογο /usr/src. Αφού λοιπόν κάνουμε login στον υπολογιστή μας μέσω ssh, μπαίνουμε στον κατάλογο /usr/src με την εξής εντολή:

cd /usr/src
wget http://downloads.digium.com/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
tar -xzvf dahdi-linux-complete-current.tar.gz

Με την δεύτερη εντολή(wget...) κατεβάζουμε την τελευταία έκδοση του Dahdi οδηγού, ενώ με την τρίτη εντολή(tar...) αποσυμπιέζουμε τα sources του dahdi οδηγού στον φάκελο /usr/src/dahdi-linux-complete-xxx.

Κατόπιν μπαίνουμε στον κατάλογο που αποσυμπιέσαμε τα sources και διαβάζουμε το αρχείο README. Είναι επιτακτικό να διαβάζουμε τα αρχεία README και γενικώς ότι αρχεία υπάρχουν μέσα σε κάθε πακέτο. Μας δίνουν πάρα πολύ σημαντικές πληροφορίες για το πως να χρησιμοποιούμε το πρόγραμμα του πρόκειται να εγκαταστήσουμε, τις απαιτήσεις που θέλει το πρόγραμμα, αλλά το σημαντικότερο είναι πως να κάνουμε compile και πως να εγκαταστήσουμε το πακέτο.

cd dahdi

και πατήστε TAB. Με το να πατήσετε TAB συμπληρώνεται αυτόματα η συνέχεια της εντολής.¨

cat README

για να διαβάσουμε το README. Εδώ μέσα θα δούμε πως για να κάνουμε compile κι εγκατάσταση του dahdi οδηγού αρκεί να εκτελέσουμε τις παρακάτω εντολές.

make all
make isntall
make config

Με την πρώτη εντολή κάνουμε compile τον οδηγό, με την δεύτερη εγκαθιστούμε τον οδηγό, ενώ με την τρίτη εντολή φτιάχνουμε το αρχείο ρυθμίσεων του dahdi οδηγού. Σε αυτό το αρχείο ρυθμίσεων θα βάλουμε όλες εκείνες τις παραμέτρους τις οποίες χρειαζόμαστε για την εγκατάσταση του τηλεφωνικού μας κέντρου.

Μετά την εγκατάσταση του οδηγού πρέπει να τον κάνουμε να φορτώνεται κάθε φορά που επανεκκινεί ο υπολογιστής μας. Αυτό το πετυχαίνουμε με τις εξής εντολές:

modprobe dahdi
modprobe wcfxo

Επίσης αυτό που παρατηρήσαμε στο Slackware 12.2 είναι ότι με την εκτέλεση των παραπάνω εντολών και με την επανεκίννηση του υπολογιστή, δεν φορτώνονταν τα modules dahdi και wcfxo. Έτσι λοιπόν ψάχνοντας βρήκαμε ότι μέσα στον κατάλογο /etc/modprobre.d υπάρχει ένα αρχείο dahdi.blacklist. Ο dahdi οδηγός δεν είναι μόνο για τις κάρτες X100P, αλλά και για ένα πλήθος αναλογικών καρτών. Έτσι λογικό είναι ότι με την εγκατάστασή του θα φορτώνονταν όλα εκείνα τα modules για όλες τις κάρτες. Αυτό δεν το θέλουμε γιατί όλα αυτά τα modules θα μας δέσμευαν πολύτιμη μνήμη από τον υπολογιστή μας. Για αυτό το λόγο στο dahdi.blacklist αρχείο εμείς αποτρέπουμε να φορτώνονται όλα τα modules. Για να φορτώνεται το module που θέλουμε, πρέπει να ανοίξουμε το αρχείο αυτό(vi /etc/modpobe/dahdi.blacklist) και να αφαιρέσουμε το module που θέλουμε να φορτώνεται, που στην περίπτωσή μας είναι η κάρτα x100p. Αφού έχουμε ανοίξει το αρχείο για να μπούμε σε edit mode πατάμε τα a, ενώ για να βγούμε και να αποθηκεύσουμε τις αλλαγές που έχουμε κάνει, πατάμε :wq. Τώρα κάνοντας επανεκίνηση τον υπολογιστή μας θα έχουν φορτωθεί τα modules τα οποία εμείς θέλουμε για να δουλεύει σωστά η x100p κάρτα μας. Κατά την επανεκίνηση του υπολογιστή μας μπορούμε να δούμε αν έχουν φορτωθεί τα modules τα οποία θέλουμε εκτελώντας την εντολή:

lsmod

Το αποτέλεσμα της εντολής θα μας βγάλει τι modules είναι φορτωμένα. Εμείς αυτό που ψάχνουμε είναι τα παρακάτω:

wcfxo 15008 0
dahdi 196264 6 dahdi_echocan_mg2,wcfxo

Αν τα βλέπουμε τότε όλα πήγαν κατ' ευχήν και το σύστημά μας έχει σωστά αναγνωρίσει την κάρτα μας.

Κατά την δεύτερη απόπειρα εγκατάστασης του asterisk για να επαλυθευθούν τα βήματα , βρήκαμε ότι κάνοντας τα παραπάνω βήματα ο οδηγός δεν φορτώννταν κατά την επανεκίννηση του μηχανήματός μας . Έτσι αυτό που κάναμε ήταν να προσθέσουμε τις παρακάτω εντολές στο τέλος του αρχείου rc.modules και το οποίο βρίσκεται στον κατάλογο /etc/rc.d

modprobe dahdi
modprobe wcfxo

Έτσι σε εμάς λύθηκε το πρόβηλμα .

Το μόνο που μας μένει πλέον για την πλήρη λειτουργία του οδηγού στο σύστημά μας είναι να τον ρυθμίσουμε. Αυτό το πετυχαίνουμε με το να παραμετροποιήσουμε το αρχείο ρυθμίσεων του οδηγού. Το αρχείο αυτό βρίσκεται στον κατάλογο /etc/dahdi και είναι το system.conf.

Ρύθμιση Οδηγού Dahdi

Έτσι λοιπόν ανοίγουμε το αρχείο system.conf(vi /etc/dahdi/system.conf). Εκεί μέσα θα δούμε ένα πλήθος επιλογών. Καλό θα ήταν να διαβάζσουμε τι κάνουν η κάθε μία από τις επιλογές αυτές. Για την δική μας όμως εγκατάσταση αρκούν μόνο τέσσερις επιλογές. Αυτές φαίνονται παρακάτω:

loadzone=gr
echocanceller=mg2,1
fxsks=1
channels=1

Με την πρώτη επιλογή επιλέγουμε ότι είμαστε στην Ελλάδα, με την δεύτερη επιλέγουμε ότι στο κανάλι 1 θα χρησιμοποιήσουμε τον mg2 echocanceler, με την τρίτη επιλογή ρυθμίζουμε το πρώτο κανάλι μας να χρησιμοποιεί την σηματοδοσία με το πρωτόκολο FXS Koolstart, ενώ με την τελευταία επιλογή μας λέμε ότι όλες οι παραπάνω ρυθμίσεις θα είναι για το κανάλι 1.

Την τελευταία επιλογή μπορούμε να την παραλείψουμε στην δική μας περίπτωση γιατί έχουμε μόνο ένα κανάλι. Αν είχαμε κάρτα με περισσότερα κανάλια, τότε μπορούμε σε κάθε ένα από αυτά να κάνουμε τις κατάλληλες ρυθμίσεις. Αυτό γίνειαι αλλάζοντας το 1 με όποιο κανάλι θέλουμε να ρυθμίσουμε. Για παράδειγμα έχουμε να ρυθμίσουμε 4 κανάλια, τότε θα μπορούσαμε να κάνουμε τα εξής:

loadzone=gr
echocanceller=mg2,1-2
fxsks=1-2
channels=1-2
loadzone=us
echocanceller=mg2,3-4
fxsls=3-4
channels=3-5

Στο παραπάνω παράδειγμα λέμε ότι τα δύο πρώτα κανάλια χρησιμοποιούνε την Ελληνική ζώνη με σηματοδοσία FXS Koolstart, ενώ τα κανάλια 3,4 χρησιμοποιούνε την Αμερικάνικη ζώνη με σηματοδοσία FXS Loopstart.

Μην ξεχνάμε ότι για να μπούμε σε edit mode στο vi πληκτρολογούμε a, ενώ για να βγούμε και να αποθηκεύσουμε τις αλλαγές μας πληκτρολογούμε :wq.

Για να ρυθμιστεί τώρα η κάρτα μας με τις αλλαγές που έχουμε κάνει αρκεί να τρέξουμε την παρακάτω εντολή:

dahdi_cfg

και το αποτέλεσμά της θα μας δείξει ότι η κάρτα μας ρυθμίστικε σωστά.

iksemel και speex codec

Συνεχίζοντας την εγκατάσταση θα εγκαταστήσουμε δύο codecs που με την βοήθειά τους θα μπορέσουμε να ενσωματώσουμε το googletalk στον Asterisk μας. Έτσι ότι κλήσεις μας έρχονται από το googletalk, θα της απαντάμε από τον Asterisk. Έστι αντί να έχουμε εγκατεστημένο το googletalk στον προσωπικό μας υπολογιστή μας, έχοντας ένας πρόγραμμα παραπάνω να τρέχει άρα και θα χρησιμοποιεί πολύτιμη μνήμη του υπολογιστή μας, ο Asterisk θα είναι υπεύθηνος για αυτό. Ακόμα θα μπορόυμε να κάνουμε μεταφορά των κλήσεων από το googletalk σε οποιοδήποτε εσωτερικό θέλουμε, σε μια γραμμή του σταθερού δημοσίου τηλεφωνικού δικτύου ή ακόμα και σε ένα άλλο νούμερο του AWMN.

Επίσης με αυτούς τους codec μπορούμαι να χρησιμοποιήσουμε πολύ μεγάλους αλγόριθμους συμπίεσης, αλλά με κόστσς την ποιότητα της συνομιλίας.

Για να ξεκινήσουμε λοιπόν πρέπει πρώτα να κατεβάσουμε τα δύο αυτά πακέτα στον υπολογιστή μας.

wget http://iksemel.googlecode.com/files/iksemel-1.3.tar.gz
wget http://downloads.xiph.org/releases/speex/speex-1.2rc1.tar.gz

Μην ξεχνάμε ότι είμαστε στον κατάλογο /usr/src. Αν δεν είμαστε cd /usr/src και μετά εκτελούμε τις παραπάνω εντολές.

Αφού κατεβάσαμε τα πακέτα από το διαδίκτυο πρέπει να τα απο συμπιέσουμε.

tar -xzvf iksemel-1.3.tar.gz
tar -xzvf speex-1.2rc1.tar.gz

Μπαίνουμε στον κατάλογο iksemel-1.3 και κάνουμε compile καθώς κι εγκατάσταση του iksemel codec.

cd iksemel-1.3
./configure --prefix=/usr
make
make install-strip

Και για να εξηγήσουμε λίγο με την πρώτη εντολή μπαίνουμε στον κατάλογο iksemel, με την δεύτερη εντολή και πριν το compile το script configure "βλέπει" τι προγράμματα έχει εγκατεστημένα ο υπολογιστής μας. Αν λείπει κανένα από τα προ απαιτούμενα που χρειάζεται ο iksemel codec για να δουλέψει τότε εδ θα μας το πει. Με την τρίτη εντολή κάνουμε compile τον codec, ενώ με την τέταρτη εντολή τον εγκαθιστούμε. Με την παράμετρο -stip αφαιρούμε όλα εκείνες τις βιβλιοθήκες που δεν χρειαζόμαστε καθώς και όλες τις πληροφορίες που δημιουργήθηκαν κατά το compile και που τώρα πλέον μας είναι άχρηστες μιας και το compile έγινε επιτυχώς.

Κατά τον ίδο τρόπο γίνεται το compile και η εγκατάσταση του speec codec.

cd ../speex-1.2rc1
./configure --prefix=/usr
make
make install-strip

Να συμπληρώσουμε ότι με την επιλογή --prexix=/usr στην δεύτερη εντολή, λέμε ότι οι codec θα εγκατασταθούν στον κατάλογο /usr κι όχι στον προεπιλεγμένο κατάλογο /usr/local. Αυτό το κάνουμε για να κρατάμε τον κατάλογο /usr/local "καθαρό" από τις υπόλοιπες εγκαταστάσεις προγραμμάτων.

Με τα παραπάνω απλά βήμαρα έχουμε καταφέρει να εγκαταστήσουμε δύο codecs που θα τους χρησιμοποιήσουμε στον Asterisk. Την ρύθμιση αυτών για να "παίζουν" με τον Asterisk θα την δούμε όταν θα ρυθμίζουμε τον Asterisk.

Εγκατάσταση Asterisk

Επιτέλους φτάσαμε να εγκαταστήσουμε τον Asterisk. Για να τον εγκαταστήσουμε όμως πρέπει να τον κατεβάσουμε από το διαδίκτυο, μετά να τον αποσυμπιέσουμε, μετά να ρυθμίσουμε τι θα εγκαταστήσουμε, μετά να τον κάνουμε compile, να τον εγκταστήσουμε και τέλος να δημιουργήσουμε τα απαιτούμενα αρχεία ρυθμίσεων. Αυτό το πετυχαίνουμε εκτελώντας τις παρακάτω εντολές:

cd /usr/src
wget http://downloads.digium.com/pub/telephony/asterisk/asterisk-1.4-current.tar.gz
cd asterisk-1.4.xx (αναλόγως την έκδοση)

Πριν προχωρήσουμε παρακάτω και για να κάνουμε τον Asterisk να "ακούει" τα fax που δέχεται ή πρόκεται να στείλει πρέπει να προσθέσουμε την εφαρμογή αυτή, έτσι ώστε κατά το compile να την δει ο Asterisk σαν δική του εφαρμογή και να την κάνει copmile κι αυτή. Για να το πετύχουμε αυτό πρέπει μέσω στον κατάλογο apps να βάλουμε δύο αρχεία. Μπαίνουμε λοιπόν στον κατάλογο apps, κατεβάζουμε τα δύο αυτά αρχεία και μετά κάνουμε edit το Makefile έτσι ώστε να τα συμπεριλάβουμε κι αυτά.

Για εκδόσεις asterisk < 1.4.23.1

cd apps
wget http://download.oc9.com/download-oc9/NVfax/app_nv_faxdetect-1.0.6_1.c
wget http://download.oc9.com/download-oc9/NVfax/app_nv_backgrounddetect-1.0.6_1.c

ενώ για εκδόσεις asterisk > 1.4.23.1

wget http://download.oc9.com/download-oc9/NVfax/app_nv_faxdetect-1.0.6_1-foras1.4.23.1.c
wget http://download.oc9.com/download-oc9/NVfax/app_nv_backgrounddetect-1.0.6_1-foras1.4.23.1.c

Έπειτα

vi Makefile

και βάζσυμε στο τέλος του αρχείου τις παρακάτω γραμμές:

APPS+=app_nv_faxdetect.so
APPS+=app_nv_backgrounddetect.so

Βγαίνουμε και αποθηκεύουμε το αρχείο Makefile και μετά γυρίζουμε στον προηγούμενο κατάλογο που είμασταν.

cd ..

Επίσης επειδή θα ρυθμισουμε τον asterisk να "τρέχει" με τον χρήστη και το γκρουπ asterisk, πρέπει να κάνουμε και μία ακόμα αλλαγή. Αυτή θα πραγματοποιηθεί στο αρχείο Makefile που βρίσκεται στον κατάλογο /usr/src/asterisk-1.4.xx. Το ανοίγουμε λοιπόν και ψάχνουμε να βρούμε κάπου που λέει ifeq ($(OSARCH),SunOS). Λίγο ποιο κάτω και μετά το πρώτο else, υπάρχει μια επιλογή που λέει ASTVARRUNDIR=$(localstatedir)/run. Αυτή την αλλάζουμε με αυτή ASTVARRUNDIR=$(localstatedir)/run/asterisk κι έπειτα βγαίνουμε από το αρχείο αποθηκεύοντάς το, και συνεχίζουμε με:

./configure
make menuselect
make
make install
make samples

Να επισυμάνουμε ότι στην δεύτερη εντολή θα μας βγάλει ένα μενού από το οπόιο διαλέγουμε διάφορα πράγματα όπως ποιες εφαρμογές από αυτές που υποστηρίζει ο Asterisk θέλουμε να εγκαταστήσουμε, τι codecs θέλουμε, τι ήχους. Πρέπει να προσέξουμε ότι στην κατηγορία application θα βρούμε δύο εφαρμογές, την NVfaxdetect και την NVfaxbackfrounddetect, τις οποίες είχαμε βάλει πριν από λίγο. Επισης στην κατηγορία channel driver θα δείτε και να επιλεξετε αν δεν είναι επιλεγμένοι τους chan_dahdi και chan_gtalk. Αν δεν μπορείται να επιλέξετε ή δεν υπάρχει κάποιος από τους δύο, τότε κάτι έχει πάει στραβά κατά την εγκατάσταση του dahdi ή του iksemel.

Επίσης στην κατηγορία codec translator πρέπει να είναι επιελγμένοι κι οι codec_dahdi κι ο codec_speex.

Οι επόμενες κατηγορίες που πρέπει να προσέξουμε είναι οι τρεις τελευταίες Core Sound Packages, Music On Hold File Packages, Extras Sound Packages. Απο αυτές επιλέγουμε την Αγγλική γλώσσα και με format wav. Αν και όλοι προτείνουν το gsm format, παρατηρήσαμε ότι στο slaclware 12,2 δεν αναπαράγονται σωστά. Κάτι φταίει και δεν έχουμε βρει ακόμα τι. Όποιος ξέρει τι φταίει ας συμπληρώσει έτσι ώστε να χρησιμοποιούμε το gsm format μιας και τα αρχεία του ήχου είναι πιο μικρά.

Έτσι λοιπόν έχουμε εγκαταστήσει και τον Asterisk.

Εγκατάσταση Asterisk-Addons

Τα addons δεν είναι τίποτα παραπάνω από κάποιες extra δυνατότητες για τον Asterisk. Αυτές είναι η διασύνδεσή του με την MySQL και την υποστήριξη του mp3 format.

Για να τα εγκαταστήσουμε λοιπόν πρέπει να κατεβάσουμε το πακέτο από το διαδίκτυο, να το αποσυμπιέσουμε, να το ρυθμισουμε, να το κάνουμε compile, να το εγκαταστήσουμε και τέλος να δημιουργήσουμε τα αρχεία ρυθμίσεων. Έτσι λοιπόν εκτελούμε:

cd /usr/src
wget http://downloads.digium.com/pub/telephony/asterisk/asterisk-addons-1.4-current.tar.gz
cd asterisk-addons-1.4.xx
./configure
make menuselect
make
make isntall
make samples

Στην πέμπτη εντολή πάλι θα μας εμφανιστεί ένα μενού που μπορούμε να διαλέξουμε διάφορα πράγματα. Να θυμηθούμε να αποεπιλέξουμε την υποστήριξη το Η323 πρωτοκόλου.

Έτσι λοιπόν τελειώσαμε και με την εγκατάσταση των asterisk-addons.

IAXMODEM

Εγκατάσταση IAXMODEM

Εγκαθιστούμε αυτή την εφαρμογή έτσι ώστε να είναι η "γέφυρα" διασύνδεσης του Asterisk με το Hylafax-Server.

Πάλι λοιπόν θα πρέπει να κατεβάσουμε το πακέτο από το διαδίκτυο, να το αποσυμπιέσουμε, να το ρυθμίσουμε και τέλος να το κάνουμε compile.

cd /usr/src
wget http://downloads.sourceforge.net/iaxmodem/iaxmodem-1.2.0.tar.gz
cd iaxmodem-1.2.0
./build static

Μετα την εκτέλεση της τελευταίας εντολής θα δημιουργηθεί ένα εκτελέσιμο αρχείο με το όνομα iaxmodem αυτό το αρχείο το κάνουμε αντιγραφή στον κατάλογο /usr/local/bin.

cp /usr/src/iaxmodem-1.2.0/iaxmodem /usr/local/bin

Έτσι καταφέραμε το εκτελέσιμο αρχείο iaxmodem ναι είναι προσβάσιμο από οποιδήποτε κατάλογο.

Ρύθμιση IAXMODEM

Κατά το build που κάναμε πριν θα δούμε ότι έχει διμιουργηθεί ένας κατάλογος iaxmodem μέσα στον κατάλογο /etc. Αν δεν υπάρχει τότε δημιουργήστε έναν εσείς με την εντολή

mkdir /etc/iaxmodem

Εκεί μέσα θα βάλουμε το αρχείο ρύθμισης του iaxmodem που θα δημιουτγήσουμε. Μέσα στον κατάλογο /usr/src/iaxmodem-1.2.0 θα δείτε αρχεία ρυθμίσεων δείγματα. Έχοντας αυτά στο νου μας δημιουργούμε ένα αρχείο στον κατάλογο /etc/iaxmodem.

vi /etc/iaxmodem/ttyIAX0

Εκεί μέσα βάουμε τα εξής:

device /dev/ttyIAX0 -> Το modem που θα δημιουγηθει και που θα βλέπει ο hylafax-server
owner uucp:uucp -> Ο χρήστης και το γκρουπ με το οποίο θα "τρέχει" το iaxmdoem
mode 660 -> To mode με το οποίο θα "τρέχει" το iaxmdoem
port 4570 -> Η πόρτα που θα χρησιμοποιεί για να συνδεθεί με τον Asterisk
refresh 60 -> Κάθε πότε θα κάνει registration στον Asterisk
server 127.0.0.1 -> Η διεύθυνση του Asterisk,εδώ είναι ο ίδιος υπολογιστής
peername iaxmodem -> Το username με το οποιο θα κάνει register στον Asterisk
secret iaxmodem -> Το password με το οποιο θα κάνει register στον Asterisk
cidname oti 8elete
cidnumber oti 8elete
codec ulaw -> O codec που θα χρησιμοποιεί το iaxmodem

Με την εκτέλεση τώρα της εντολής iaxmodem θα δούμε ότι θα βγάλει 2 λάθη. Δεν θα μπορεί να βρει τον κατάλογο /var/log/iaxmodem και τα αρχεία ttyIAX0 iaxmodem που πρέπει να βρίσκονται στον παραπάνω κατάλογο. Δημιουργήστε τα με τις εξής εντολές:

mkdir /var/log/iaxmodem
touch /var/log/iaxmodem/ttyIAX0
touch /var/log/iaxmodem/iaxmodem

Τέλος για να τρέχει το iaxmodem κάθε φορά που επανεκινεί ο υπολογιστής μας πρέπει να το προσθέσουμε σε κάποιο αρχείο που τρέχει κάθε φορά που επανεκινεί ο υπολογιστής μας. Ένα τέτοιο αρχείο είναι το rc.local που βρίσκεται στον κατάλογο /etc/rc.d. Έτσι λοιπόν ανοίγουμε το αρχείο αυτά και προσθέτουμε την εξής γραμμή:

/usr/local/bin/iaxmodem

Βγαίνουμε κι αποθηκεύουμε το αρχείο και μετά κάνουμε μια επανεκίνηση στον υπολογιστή μας για να δούμε αν όντως φορτώνεται το iaxmodem. Αφού θα ξεκινήσει ο υπολογιστής μας ξανακάνουμε login και δίνουμε την παρακάτω εντολή:

ps -A|more

και ψάχνουμε να βρούμε κάτι τέτοιο

2733 ?        00:00:00 iaxmodem
2735 ?        00:00:04 iaxmodem

Αν το βλέπουμε τότε όλα πάνε καλά. Επίσης θα μπορούσαμε να δουμε και στο αρχείο /var/log/iaxmodem/iaxmodem αν έχει ξεκινήσει το iaxmodem.

Έτσι λοιπόν έχουμε ρυθμίσει και το iaxmodem. Για την εγκατάσταση και την παραμετροποίηση του Hylafax-Server υπενθυμίζουμε ότι μπορούμε να την δούμε στην παρακάτω σελίδα:

http://www.awmn/wiki/index.php/Hylafax-server.

Παραμετροποίηση Asterisk

Εκκίνηση του Asterisk με το χρήστη και γκρουπ asterisk

Όπως έχουμε πει θα προτιμήσουμε να "τρέχει" ο Asterisk με το χρήστη και το γκρουπ asterisk κι όχι με το χρήστη root. Για να το πετύχουμε αυτό πρέπει να δημιουργήσουμε ένασ χρήστη κι ένα γκρουπ asterisk. Αυτό το πετυχαίνουμε ως εξής:

groupadd asterisk
useradd -s /bin/flase -g asterisk asterisk

Επίσης για να δουλέψει με αυτό τον τρόπο ο asterisk πρέπει όλα εκείνα τα αρχεία που διαχειρίζεται αυτός να ανήκουν σε αυτόν τον χρήστη και σε αυτό το γκρουπ. Με λίγο ψάξιμο θα βρείτε ποια είναι αυτά και θα τα κάνετε να είναι του χρήστη και του γκρουπ asterisk. Για ευκολία καλό θα ήταν να κάνετε ένα εκτελέσιμο σκριπτάκι κι εκεί μέσα να βάλετε τις εντολές που θέλετε. Αυτές φαίνονται παρακάτω:

chown -R asterisk:asterisk /etc/dahdi
chown -R asterisk:asterisk /etc/asterisk
chown -R asterisk:asterisk /var/lib/asterisk
chown -R asterisk:asterisk /usr/lib/asterisk
chown -R asterisk:asterisk /var/spool/asterisk
chown -R asterisk:asterisk /var/log/asterisk
chown -R asterisk:asterisk /var/run/asterisk
chown -R asterisk:asterisk /dev/dahdi

Καλό θα ήταν αυτό το σκριπτάκι να το έχετε βάλει μέσα στον /usr/local/bin κατάλογο, εκεί που είχαμε βάλει πιο νωρίς το εκτελέσιμο του iaxmodem. Για να κάνετε το αρχείο εκτλέσιμο αρκεί να εκτέλεσετε την παρακάτω εντολή:

chmod +x chowntoasterisk

To chowntoasterisk είναι το ονομα απο το σκπιπτάκι μας.

Το μόνο που μας μένει λοιπόν είναι να "τρέξουμε" τον Asterisκ. Πριν όμως τα κάνουμε αυτό ας τον ρυθμίσουμε να τρέχει με την μεγαλύτερη προτεραιότητα. Για να το κάνουμε αυτό ανοίγουμε το αρχείο safe_asterisk και ψάχνουμε για την επιλογή PRIORITY. Όσο πιο αρνητική είναι αυτή η επιλογή, με όριο το -20, τόσο μεγαλύτερη προτεραιότητα δίνουμε στον Asterisk. Όσο πιο θετική είναι,με όριο το 20, τόσο μικρότερη. Το αρχείο βρίσκεται μέσα στον κατάλογο /usr/sbin.

Για να "τρέξουμε" τον Asterisk χρησιμοποιούμε την παρακάτω εντολή:

safe_asterisk -G asterisk -U asterisk

Οι επιλογές -G asterisk και -U asterisk σημαίνουν "τρέξε τον asterisk με τον χρήστη και το γκρουπ asterisk".

Για να τρέχει κάθε φορά ο asterisk που επανεκινεί ο υπολογιστής μας αρκεί να βάλουμε την παραπάνω εντολή στο αρχείο /etc/rc.d/rc.local, εκεί που βάλαμε και την εντολή για το iaxmodem και ακριβώς από κάτω του.

Βγαίνοντας κι αποθηκεύοντας το αρχείο και μετά από κάθε επανεκίνηση του υπολογιστή μας θα δούμε ότι ο Asterisk τρέχει. Αυτό μπορούμε να το δούμε με την εντολή:

ps -A|more

ή μπαίνοντας στην κνσόλα του asterisk με την παρακάτω εντολή

asterisk -r

Άμα δούμε κάτι τέτοιο:

Asterisk 1.4.22, Copyright (C) 1999 - 2008 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 1.4.22 currently running on koukouroukou (pid = 2752)
Verbosity is at least 3
koukouroukou*CLI>

τότε ο asterisk που έχουμε στήσει "τρέχει" μια χαρά. Στο αρχείο /var/log/asterisk/messages είναι το αρχείο καταγραφής για τον Asterisk.

Ρύθμιση chan_dahdi

Πριν από την εγκατάσταση του asterisk εγκαταστήσαμε τον Dahdi οδηγό έτσι ώστε να συνδέσουμε τον asterisk με το Δημόσιο Τηλεφωνικό Δίκτυο (PSTN) . Κάναμε την ρύθμισή του έτσι ώστε να δει την κάρτα το μηχάνημά μας , τώρα θα κάνουμε την παραμετροποίησή του για να δουλεύει σωστά στον Asterisk . Η όλα αυτή παραμετροποίηση γίνεται από το αρχείο chan_dahdi.conf και τοποίο βρίσκεται μέσα στον κατάλογο /etc/asterisk. Σε αυτό τον κατάλογο βρίκσνται όλα τα αρχεία ρύθμισης του asterisk. Όλα λοιπόν μαζί τακτοποιημένα .

Έτσι λοιπόν ανοίγουμε το αρχείο και το διαβάζουμε. Εκεί μέσα θα βρούμε πολλές ρυθμίσεις. Καλό θα ήταν να διαβάζουμε όλο το αρχείο έτσι ώστε να μάθουμε τι κανει η κάθε ρύθμιση. Επιγραμματικά θα αναφέρουμε τις πιο συνηθισμένες .

[channels]
Language = en
context = incoming
internationalprefix = +
nationalprefix = +30
localprefix = +30210
signalling = fxs_ks
rxwink = 300
usecallerid = yes
hidecallerid = no
callwaiting =yes
restrictid = no
usecallingpres = yes
callwaitingcallerid = yes
threewaycalling = yes
transfer = yes
canpark = yes
cancallforward = yes
callreturn = yes
echocancel = yes
echocancelwhenbridged = yes
rxgain = 0.0
txgain = 0.0
group = 1
callgroup = 1
pickupgroup = 1
immediate = yes
busydetect = yes
busycount = 5
faxdetect = both
faxdetect = incoming
faxdetect = outgoing
channel => 1

Κοιτώντας όλες τις παραπάνω παραμέτρους πολλές από το όνομά τους καταλαβαίνουμε τι κάνουν, όπως π.χ η busydetect, η οποία με την επιλογή yes ενεργοποιούμε την ικανότητα του οδηγού και της κάρτας να ανιχνεύει πότε μια γραμμή είναι κατηλλημένη.

Αυτές που θα εξηγήσουμε είναι η context, signalling, canpark, group, callgroup, pickupgroup.

context

Όπως θα δούμε παρακάτω, όλη η λογική του πως θα χειρίζεται ο asterisk κάθε εισερχόμενη ή εξερχόμενη κλήση βασίζεται στα context. Αυτά είναι, ας πούμε "πλαίσια", μέσα στα οποία λέμε εμείς τι θα κάνει ο asterisk σε κάθε κλήση από και προς τον αυτόν. Αυτά τα context βρίσκονται στο αρχείο extensions.conf, αρχείο που εκεί μέσα θα κάνουμε όλο το σχεδιασμό του χειρισμού την κλήσεων (dialplan).

Έτσι λοιπόν εδώ λέμε ότι για τις κλήσεις που θα έρχονται από την κάρτα fxo (PSTN δίκτυο) και προς τον Asterisk, κοίτα τι θα κάνεις ο στο context incoming που βρίσκεται στο extensions.conf. Στο context incoming τώρα εμείς θα βάλουμε τις ενέργειές που θα κάνει ο Asterisk όταν αυτός λάβει μια κλήση . π.χ. θέλουμε να απαντάει την κλήση, να χτυπαέι κάποια εσωτερικά κι αν κανένας δεν απαντήσει τότε να κρατάει μύνημα στον τηλεφωνητή. Όλα αυτα θα τα δούμε πιο αναλυτικά όταν φτάσουμε στην παραμετροποίηση του dialplan μας.


signalling

Αυτή η παράμετρος πηγαίνει "πακέτο" με την παράμετρο που είδαμε πιο πάνω όταν ρυθμίζαμε την κάρτα fxo για να την δει ο υπολογιστής μας. Υπενθυμίζουμε ότι αυτό γίνεται στο αρχείο system.conf που βρίσκεται στον κατάλογο /etc/dahdi/. H παράμετρος για την οποία μιλάμε είναι η fxsks=1. Με αυτή την παράμετρο ρυθμίσαμε την κάρτα μας να είναι fxo. Προσοχή για να την ρυθμίσουμε να είναι fxo τότε βάζουμε fxsks.Αφού λοιπόν εκεί την ρυθμίσαμε έτσι και στον asterisk θα κάνουμε το ίδιο.

canpark

Ο Asterisk έχει μια λειτουργεία που την λέει park ( παρκάρισμα ). Για να καταλάβουμε τι είναι αυτή η λειτουργεία θα δώσουμε ένα παράδειγμα.

Ας υποθέσουμε ότι βρισκόμαστε στο τεχνικό τμήμα μας εταιρείας και είμαστε στο γραφείο μας που έχει το εσωτερικό 200. Μιλάμε στο τηλέφωνο με κάποιον άλλο τεχνικό για την συντήρηση ενάς server, και θέλουμε να μεταφέρουμε την κλήση σε ένα εσωτερικό ,210, το οποίο βρίσκεται σε ένα άλλό χώρο, ας υποθέσουμε το data room, της εταιρείας για να συνεχίσουμε εκεί την δουλειά μας. Θα μπορούσαμε να κάνουμε trasfer την κλήση μας σε εκείνο το εσωτερικό, αλλά μπορεί το dialplan που έχουμε κάνει και είναι γενικό για πολλά εσωτερικά μαζί, να λέει ότι αν ένα εσωτερικό χτυπάει για 30 δευτερόλεπτα μετά να μπαίνει στον τηλεφωνητή. Έτσι θα χάναμε την κλήση μας, ή μπορεί για εκείνο το εσωτερικό να μην είχαμε τηλεφωνητή κι έτσι η κλήση να ξαναγύριζε πίσω στο 200 ενώ εμείς είμασταν ακόμα στη διαδρομή για να πάμε στο data room.

Έτσι λοιπόν "παρκάρουμε" την κλήση σε μια θυρίδα του Asterisk, πάμε με την ησυχία μας στο data room, σηκώνουμε το ακουστικό και "ξεπαρκάρουμε" την κληση.

Με την επιλογή canpark = yes ο Asterisk δίνει την δυνατότητα σε όποιον καλεί από την PSTN γραμμή να μπορεί να "παρκάρει" την κλήση.

group, callgroup, pickupgroup

Με τον Asterisk μπορούμε να δημιουργήσουμε διάφορα γρουπ και να ταξινομήσουμε εκεί μέσα τα εσωτερικά μας. Επίσης μπορούμε να ρυθμίσουμε ότι όταν κάποια από τα εσωτερικά του γκρουπ που έχουμε καθορίσει χτυπάει ποιος μπορεί να απαντήσει την κλήση. Για να καταλάβουμε θα δώσουμε πάλι ένα παράδειγμα.

Είμαστε σε μια εταιρεία που έχει εμπορικό(εσ.100,101,102), τεχνικό τμήμα(εσ.200,201,202) και τμήμα marketing(εσ.200,201,202). Σε αυτά τα τμήματα υπάρχουν από 3 εσωτερικά νούμερα. Θέλουμε όταν χτυπάει ένα εσωτερικό από το εμπορικό τμήμα(group = 1) να μπορεί να απαντάνε και οι υπάλληλοι των οποίων τα εσωτερικά θα ανήκουν στο τμήμα marketing(group=3)και αντίστροφα, ενώ τα εσωτερικά του τεχνικού τμήματος(group = 2) να μην μπορεί να τα απαντήσει κανείς από τα άλλα τμήματα. Για να το πετύχουμε αυτό θα πρέπει να ρυθμίσουμε τις παραπάνω παραμέτρους(group, callgroup, pickupgroup), στις ρυθμίσεις των εσωτερικών, ανάλογα.

Έτσι στις ρυθμίσεις των εσωτερικών 100,101,102 θα βάλουμε group = 1 , pickupgroup = 1,3 , callgroup = 1,3
Έτσι στις ρυθμίσεις των εσωτερικών 200,201,202 θα βάλουμε group = 2 , pickupgroup = 2 , callgroup = 2
Έτσι στις ρυθμίσεις των εσωτερικών 300,301,302 θα βάλουμε group = 3 , pickupgroup = 1,3 , callgroup = 1,3


Με την τελευταία παράμετρο (channels =>1), λέμε ότι όλες οι παραπάνω ρυθμίσεις που έχουμε κάνει θα είναι για το πρώτο κανάλι μας. Αν είχαμε κάρτα με περισσότερα κανάλια και όλα ήταν fxo τότε θα μπορούσαμε να βάλουμε channels=>1-3.

Ρύθμιση iax.conf

Σε αυτό το αρχείο ρυθμίζουμε τα εσωτερικά του Asterisk τα οποία θα χρησιμοποιούν το προτόκολλο iax για να κάνουν register στον Asterisk. Στην δική μας περίπτωση θα ρυθμίσουμε μία συσκευή την οποία θα την χρησιμοποιήσουμε σαν modem για τα fax που θα στέλνουμε ή θα λαμανουμε.

Κατά την εγκατάσταση πιο πάνω, εγκαταστήσαμε μια εφαρμογή iaxmodem. Αυτή η εφαρμογή δημιουργεί ένα software modem που θα κάνει register στον asterisk. Θα ρυθμίσουμε τον Asterisk έτσι ώστε όταν μια εισερχόμενη κλήση φτάνει σε αυτόν, να την απαντάει, στη συνέχεια να την εξετάζει αν είναι κλήση fax ή φωνής, αν είναι κλήση φωνής θα χτυπάει κάποια εσωτερικά, αν όμως είναι κλήση fax θα την στέλνει στο iaxmodem και το οποίο στη συνέχεια θα το συνδέσουμε με το hylafax server, πρόγραμμα υπεύθυνο για την αποστολή και λήψη fax.

Ανοίγουμε το παραπάνω αρχείο και το τροποποιούμε σύμφωνα με τις απαιτήσεις μας.

[general]
disallow=all
allow=ulaw
allow=alaw
[iaxmodem]
type=friend
username=iaxmodem
secret=iaxmodem
host=dynamic
port=4570
context=fax-out
qualify=1000

Ας εξηγήσουμε λιγουλάκι. Στο general context είναι οι προκαθορισμένες(default) ρυθμίσεις κάθε συκσευής. Στο συγκεκριμένο παράδειγμα απαγορεύουμε από όλες τις συσκευές όλα τα codecs και στη συνέχεια επιτρέπουμε όλες τις συσκευές να χρησιμοποιούν μόνο τους codecs ulaw και alaw.

Παρακάτω δημιουργούμε μια συσκευή με το όνομα iaxmodem, η οποία μπορεί να δεχτεί και να πραγματοποιήσει κλήσεις(type=friend), θα κάνει register στον asterisk με username και password asterisk(προσοχή να είναι τα ίδια που έχουμε βάλει και στο αρχείο ρύθμισης του iaxmodem που έχουμε δημιουργήσει πιο πριν στον κατάλογο /etc/iaxmodem),η ip της συσκευής θα είναι δυναμική(host=dynamic),θα χρησιμοποιεί για επικοινωνία με τον Asterisk την πόρτα 4570(port=4570), για τις εξερχόμενες κλήσεις που θα πραγματοποιεί η συσκευή θα χρησιμοποιεί το context fax-out(context=fax-out) και τέλος κάθε 1000 δευτερόλεπτα θα κάνει registerμε τον Asterisk.

Με τις παραπάνω ρυθμίσεις φτιάξαμε μια συσκευή που θα χρησιμοποιεί το πρωτόκολλο iax και την οποία θα την χρησιμοποιήσουμε σαν modem για να λαμανουμε fax.

Ρύθμιση sip.conf

Σε αυτό το αρχείο ρυθμίζουμε όλες εκείνες τις συκσευές που θα χρισημοποιούν το πρωτόκολλό sip για να "μιλάνε" με τον asterisk αλλά και μεταξύ τους. Το αρχείο, όπως και όλα τα αρχεία ρυθμίσεων βρίσκεται στον κατάλογο /etc/asterisk. Ανοίγοντάς το αυτό το αρχείο θα δούμε πάαααααααααααααρα πολλές παραμέτρους τις οποίες και πρέπει να τις διαβάσουμε για να ξέρουμε τι κάνει η κάθε μία. Παρακάτω θα δούμε μερικές και πως θα ρυθμίσουμε 2 συσκευές που θα συνδέονται στον Asterisk.

Όπως έχουμε πει όλη η λογική ρύθμισης του Asterisk βασίζεται στα contxet. Όποιο αρχείο και να ανοίξουμε θα δούμε ότι αποτελείται από πολλά context. Πρώτα υπάρχει ένα context general, που όπως είδαμε πιο πάνω περιέχει τις προκαθορισμένες(default) ρυθμίσεις των συκσευών.Στην εγκατάστασή μας μέσα στο general contxet θα συμπεριλάβουμε τις εξής παραμέτρους :

[general]
bindport=5060 -> Πόρτα στην οποία θα "ακούει" στο sip πρωτόκολλο ο Asterisk
bindaddr=ΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ -> IP στην οποία θα κάνουν register οι διάφορες συσκευές στον Asterisk
useragent=Patissia_Asterisk -> Σχόλιο για το που είναι ο Asterisk,ο συγκεκριμένος στα Πατήσια
localnet=10.2.52.0/255.255.255.0 -> Το εσωτερικό σας δίκτυο
nat=yes -> Αν θα κάνει NAT o Asterisk
disallow=all -> Απαγορεύουμε ολα τα codes
allow=ulaw -> Επιτρέπουμε ulaw
allow=alaw -> alaw
allow=gsm -> gsm
allow=g729 -> g729
allow=g726 -> g726
defaultexpiry=150 -> Χρόνος που ο Asterisk "ρωταέι" τις συκσευές αν είναι registered σε αυτόν

Από εδώ και κάτω μπορούμε να ξεκινήσουμε να δημιουργούμε τις συσκευές μας.Ας φτιάξουμε μία λοιπόν με τις εξής παραμάτρους:

[210]
type=friend
host=dynamic
callerid=("ότι θέλετε"<210>)
qualify=1000
dtmfmode=RFC2833
regexten=210
secret=210
canreinvite=no
context=HomePBX
mailbox=210
callgroup=1
pickupgroup=1

Η παραπάνω συκσευή έχει όνομα 210, μπορεί να δεχτεί και να πραγματοποιήσει κλήσεις(type=friend), θα κάνει register στον asterisk με username και password 210,θα έχει το νούμερο 210(regexten=210), η ip της συσκευής θα είναι δυναμική(host=dynamic),για τις εξερχόμενες και εισερχόμενες κλήσεις που θα πραγματοποιεί η συσκευή θα χρησιμοποιεί το context HomePBX(context=HomePBX), όταν καλεί στον καλούμενο θα φαίνεται ότι έχουμε βάλει στο callerid, όταν την καλέσει δεν θα μπορεί να κάλει callback(canreinvite=no),έχει mailbox το 210(mailbox=210), ανήκει και μπορεί να παντήσει ότι κλήσεις είναι στο group 1, χρησιμοποιεί για τους dtmf τόνους το πρωτόκολλο RFC2833 και τέλος κάθε 1000 δευτερόλεπτα θα κάνει register με τον Asterisk.

Αν τώρα σε ένα τηλέφωνο(SPA941) ρυθμίσουμε σαν proxy το bindaddress, πόρτα το port, username 210, password 210, θα δούμε ότι αυτή η συσκευή θα κάνει register με τον Asterisk.

Με τον παραπάνω τρόπο μπορούμε να δηνιουργήσουμε όσες συσκευές θέλουμε .

Ας δούμε τώρα μια άλλη συσκευή :

[sipdiscount]
type=peer
host=sip.sipdiscount.com
fromdomain=sipdiscount.com
fromuser=xxxxxxx
authuser=xxxxxxx
username=xxxxxxx
secret=xxxxxxxx
nat=yes
insecure=very
canreinvite=no
qualify=yes
sendrpid=yes
dtmfmode=RFC2833
disallow=all
allow=ulaw
allow=alaw
context=VoIP-Providers-outcalls

Η διαφορά με την προηγούμενη συσκευή είναι ότι αυτή θα κάνει register σε έναν VoIP παροχέα,του sipdiscount, ενώ η συσκευή 210 θα κάνει register στον Asterisk. Έχει το όνομα sipdiscount, μπορούμε μόνο να πραγματοποιήσουμε κλήσεις(type=peer),θα κάνει register στο sip.sipdiscount.com(host=sip.sipdiscount.com), στους καλούμενους θα φαίνεται ότι η κλήση έρχεται από κάποιον που είναι στο domain sipdiscount.com(fromdomain=sipdiscount.com), o asterisk θα κάνει register στο sip.discount.com με username kai password ότι του βάλουμε και για τις εξερχόμενες κλήσεις θα κάνει ότι λέει το VoIP-Providers-outcalls context.

Βέβαια για να ολοκληρωθεί η ρύθμιση του Asterisk σαν user agent, δηλασή αυτός να κανει register κάπου αλλού χρειάζεται και άλλη μια γραμμή στο general context,την παρακάτω:

register=>username:password@sip.voipdiscount.com

Έτσι λοιπόν παραπάνω είδαμε πως να φτιάχνουμε μια sip συκσευή, αλλά και μία συσκευή που θα γίνεται register σε κάποιον proxy έτσι ώστε να τερματίζουμε κλήσεις μέσω VoIP παρόχου.

Για περισσότερες πληροφορίες σχετικά με όλες τις παραμέτρους ρύθμισης του αρχείου sip.conf καθώς και όλων των αρχείων ρυθμίσεων, μπορούμε να βρούμε στο καταπληκτικό site www.voip-info.org.

Σύνδεση του Asterisk με mysql

Πριν προχωρήσουμε στο πολυπόθητο dialplan, ας δούμε πως μπορούμε να συνδέσουμε τον asterisk με την mysql για να κρατάμε όλες τις εξερχόμενες και εισερχόμενες κλήσεις σε μια βάση δεδομένων. Μπορούμε επίσης να ρυθμίζουμε τον Asterisk μέσω της mysql αντί μέσω των αρχείων ρύθμισης. Έτσι καταφέρνουμε κάθε φορά που κάνουμε οποιδήποτε αλλαγή στην παραμετροποίηση του Asterisk να μην χρειάζεται να κάνουμε reload τον Asterisk, αλλά να γίνεται αυτόματα. Αυτό όμως θα το δούμε παρακάτω.

Για να μπορεί ο asterisk να "μιλάει" με την mysql, πρέπει να παραμετροποιήσουμε το cdr_mysql.conf. Επίσης πρέπει να φτιάξουμε μια βάση δεδμένων και μέσα στην οποία έναν πίνακα, που θα κρατάμε όλες τις εγγραφές μας. Ας ξεκινήσουμε από τα αρχεία πρώτα.


cdr_mysql.conf

Κι αυτό το αρχείο βρίσκεται στον κατάλογο /etc/asterisk. Κι εδώ πάνω κάτω τα ίδια πρέπει να ρυθμίσουμε.

[global]
hostname=localhost
dbname=asteriskcdr
table=cdr
password=asteriskcdr
user=asteriskcdr
port=3306
sock=/var/run/mysql/mysql.sock

Όπως παρατηρούμε οι ρυθμίσεις είναι ακριβώς οι ίδιες με την διαφορά όμως ότι εδώ ορίζουμε και τον πίνακα που θα χρησιμοποιεί ο Asterisk για να αποθηκεύει τις εγγραφες.

Πάμε τώρα στην mysql για να δημιουργήσουμε την βάση δεδομένων και τον πίνακα με τα πεδία που χρειαζόμαστε.

Ρύθμιση mysql

Πρώτα από όλα πρέπει να δημιουργήσουμε την βάση και να δώσουμε στον χρήστη asterisk(o χρήστης με τον οποίο θα τρέχει ο asterisk) δικαιώματα να γράφει σε αυτή.

Για να το πετύχουμε αυτό πρέπει να συνδεθούμε με τον χρήστη root στην mysql.

mysql -u root -p

Αν έχουμε βάλει καποιο κωδικό στο χρήστη root το βάζουμε. Έπειτα πληκτρολογούμε:

CREATE DATABASE `asteriskcdr` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; -> δημιουργούμε μια βάση δεδομένων με το όνομα asteriskcdr
GRANT ALL
ON asteriskcdr.*
TO asteriskcdr@localhost
IDENTIFIED BY 'asteriskcdr';

Με τις παραπάνω εντολές δίνουμε στον χρήστη asteriskcdr με κωδικό asteriskcdr δικαιώματα να γράφει στην βάση δεδομένων με το όνομα asteriskcdr που βρίσκεται στον ίδιο υπολογιστή, ενώ με τις παρακάτω εντολές δημιουργούμε έναν πίνακα με το όναμα cdr και με διάφορα πεδία.

USE asteriskcdr;
CREATE TABLE cdr (
calldate datetime NOT NULL default '0000-00-00 00:00:00',
clid varchar(80) NOT NULL default ,
src varchar(80) NOT NULL default ,
dst varchar(80) NOT NULL default ,
dcontext varchar(80) NOT NULL default ,
channel varchar(80) NOT NULL default ,
dstchannel varchar(80) NOT NULL default ,
lastapp varchar(80) NOT NULL default ,
lastdata varchar(80) NOT NULL default ,
duration int(11) NOT NULL default '0',
billsec int(11) NOT NULL default '0',
disposition varchar(45) NOT NULL default ,
amaflags int(11) NOT NULL default '0',
accountcode varchar(20) NOT NULL default ,
uniqueid varchar(32) NOT NULL default ,
userfield varchar(255) NOT NULL default
);


Αν τώρα κάνουμε reload την mysql και τον Asterisk κι αν όλα έχουν πάει καλά, τότε κάθε κλήση που δέχεται ή πραγματοποιεί ο Asterisk θα καταγράφεται στην mysql.

Ανακτήθηκε από το "http://www.awmn.net/wiki/index.php/Asterisk".