weBLOGbuch

Eingehende Rufe ohne Blockwahl mit CAPI ISDN-Karten und Gemeinschaft 3.1 (Asterisk)

Bei einem Kunden trat folgendes Problem auf:

Anrufer, die ohne Blockwahl anriefen wurden nicht durchgestellt.

Ein Blick ins Log ergab, dass nicht die vollständige Rufnummer an die Anlage übermittelt wurde.
Eine vollständige Nummer wäre 1234567-01 . Also eine siebenstellige Kopfnummer und eine zweistellige Durchwahl. Bei den fraglichen Anrufen wurde nur 1234567-0 übermittelt. Damit kann die Anlage natürlich nichts anfangen. Bessere ISDN-Karten haben in ihren Treibern Einstellungen für „overlapdialing“ oder definierbare Rufnummernlängen, auf deren Vollständigkeit erst gewartet wird. Nicht so bei ISDN-Karten, die mit CAPI eingebunden werden (in meinem Fall eine aktive AVM B1). Hier hilft nur, das Problem über den Asterisk-Dialplan zu lösen.

Die verwendete Asterisk-Distribution ist „Gemeinschaft 3.1“, das Vorgehen lässt sich aber auch auf jede andere Asterisk-Installation übertragen.
Wir bauen einen Wrapper in den Dialplan ein, der zu kurze Nummern abfängt.
Die erste Anweisung trifft zu, wenn eine Anrufer mit einer passenden Zielrufnummer kommt und springt dann in den ursprünglichen context. Die zweite Anweisung trifft bei zu kurzen Nummern zu. Es wird dann 2 Sekunden auf eine „Nachwahl“ per DTMF-Erkennung gewartet und die komplette Rufnummer dem eigentlichen ISDN context von Gemeinschaft übergeben.

Dazu sagen wir zuerst den CAPI-Gateways, dass nicht mehr der eigentliche gg-isdn-bri context genutzt wird, sondern der wrapper. Dazu editiert man die /opt/gemeinschaft/etc/asterisk/capi-gateways.conf.php kommentiert die context-Zeile aus und fügt den Wrapper hinzu.

 

//echo ‚context=from-gg-‚, $gw[‚gg_name‘] ,“\n“;
echo ‚context=from-isdn-bri‘ ,“\n“;
echo ‚immediate=no‘,“\n“;

Nun wird der Wrapper in Datei /opt/gemeinschaft-source-3.1/opt/gemeinschaft/etc/asterisk/e.ael eingefügt. (ganz unten bei custom contexts)

context from-isdn-bri {
_1234567XX => {
Verbose(1, ### Call by ISDN-BRI from ${CALLERID(num)} to ${EXTEN});
jump ${EXTEN}@from-gg-isdn-bri;
}
_12345670X => {
Verbose(1, ### Call by ISDN-BRI from ${CALLERID(num)} – Waiting for DTMF tones );
WaitExten(2);
jump ${EXTEN}@from-gg-isdn-bri;
}
}

Danach noch den Dialplan mit dem Aufruf von /opt/gemeinschaft/sbin/start-asterisk neu generieren lassen.

Fertig.

 

 

 


Categorised as: Technik


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.