[Eisfair] Erfahrungsbericht Asterisk und Capi2Text ohne ISDN

Dirk Alberti Howy-1 at gmx.de
Mi Dez 28 18:10:50 CET 2016


Hallo zusammen,

hier mal meine Erfahrungen bezüglich Nutzung von Capi2text mit Asterisk, 
ohne ISDN.

Zuersteinmal ist dazu des direkte Bearbeiten der Asterisk-Konfigdateien 
in '/etc/asterisk/' nötig und zumindest ein gewisses Verständnis von 
deren Funtionsweise.
Mit dem Setupmenü des Asterisk-Paketes geht es nicht und es muss auch 
der Parameter 'ASTERISK_CONFIG_USE'  auf 'no' gesetzt sein, ansonsten 
überschreibt ja das Setup alles wieder.

Das Herzstück von Asterisk ist die Datei 
'/etc/asterisk/extensions.conf', welche den Dialplan enthält.
Hier habe ich am Ende der Liste diese Zeilen als 'macro-logging' eingefügt:

[macro-logging]
exten => s,1,NoOp(Macro logging)
exten => s,n,System(sudo /usr/sbin/capi2text.sh ${ARG1} ${ARG2} ${ARG3} 
${ARG4} 0 2)

Alles was hinter 'exten =>' steht, muss in eine Zeile.

Dieses Macro wird im Dialplan im ankommenden Kontext aufgerufen, bei mir 
z.B. [tkom-in] genannt.  Im ankommenden Kontext stehen die Rufnummern, 
auf welche bei ankommenden Anrufen "gehört" wird und was damit gemacht 
wird.
Als Beispiel:

exten => 012345678,1,Dial(SIP/2001,60,rt)

Hört auf die ankommende Nummer 012345678 und wählt über SIP die in 
sip.conf definierte Nebenstelle 2001 an bzw. leitet den Anruf dorthin.

Und vor dieser Zeile wird die Zeile eingefügt, welche das 
'macro-logging' aufruft und diesem die Argumente für capi2text.sh 
durchreicht.

exten => 
012345678,1,Macro(logging,${STRFTIME(${EPOCH},,%Y-%m-%d)},${STRFTIME(${EPOCH},,%H:%M:%S)},${CALLERID(num)},${EXTEN})

Natürlich muss dann die Nummerierung in der Zeile mit dem Dial-Befehl 
entspechend geändert werden:

exten => 012345678,1,Dial...      in      exten => 012345678,n,Dial...   
also entweder fortlaufend nummeriert oder einfach 'n'.

Um nun noch mit den verschiedenen Zugriffsrechten klarzukommen, ist es 
nötig, eine Datei '/etc/sudoers.d/capi2text' zu erstellen mit folgendem 
Inhalt:

asterisk 192.168.1.5 = (root) NOPASSWD: /usr/sbin/capi2text.sh

Hierbei ist die IP den jeweiligen Verhältnissen anzupassen, ob localhost 
auch reicht, habe ich nicht probiert.


Das Paket Capi2Text muss hierfür nur installiert sein, aber nicht 
aktiviert, was bei fehlendem CAPI ja wahrscheinlich sowieso scheitern würde.

Grundsätzlich funktioniert das schonmal so, man kann aber durch einfügen 
weiterer Zeilen im Dialplan vor Aufruf des Macro die CALLERID so 
umschreiben, dass Capi2Text die richtige Landeskennung bekommt, um die 
Flagge zuzuordnen:

exten => 012345678,1,ExecIf($[ "${CALLERID(num):0:1}" = "+" 
]?Set(CALLERID(num)=00${CALLERID(num):1}))
exten => 012345678,n,ExecIf($[ "${CALLERID(num):0:4}" = "0049" 
]?Set(CALLERID(num)=0${CALLERID(num):4}))

Speziell bei Telekom-VOIP gibt es bei der mitgeteilten CALLERID eine 
Besonderheit, die diese Vorgehensweise erfordert. Genaueres dazu müsste 
ich auch erst wieder recherchieren.

Ich hoffe, dem einen oder anderen damit helfen zu können.


Gruß

Dirk



Mehr Informationen über die Mailingliste Eisfair