Asterisk 1.4 chan_capi CALLERID nicht gesetzt

tjakob

Neuer User
Mitglied seit
3 Nov 2004
Beiträge
2
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich habe mir testweise Asterisk 1.4 mit dem chan_capi-HEAD (30.12.06) installiert.
Es läuft auch soweit alles, allerdings wird bei eingehenden ISDN-Anrufen die CALLERID nicht übertragen, d.h. CALLERID(all), CALLERID(num) usw. sind leer.

Bei eingehenden SIP-Anrufen wird die CALLERID, wie gewohnt angezeigt.

exten => 614128,1,NoOp(Calleridnum ist ${CALLERID(num)})

ergibt:

-- Executing [614128@capi-in:1] NoOp("CAPI/ISDN1/614128-0", "Calleridnum ist ") in new stack

Die Rufnummer scheint aber richtig am chan-capi erkannt zu werden:

== ISDN1#02: Incoming call '555114433' -> '614128'

und:

CONNECT_IND ID=002 #0x0f83 LEN=0047
Controller/PLCI/NCCI = 0x101
CIPValue = 0x10
CalledPartyNumber = <c1>614128
CallingPartyNumber = <21 83>555114433
CalledPartySubaddress = default
CallingPartySubaddress = default
BC = <80 90 a3>
LLC = default
HLC = <91 81>
AdditionalInfo = default


Wird die CALLERID jetzt bei chan-capi anders übergeben? Ich konnte im Forum oder in der Readme dazu nichts finden.

Für einen Tip wäre ich dankbar.

Gruß
Thomas
 
Danke, den Thread hatte ich mir schon angesehen CALLERIDNUM habe ich ja bereits durch CALLERID(num) ersetzt, auch alles andere habe ich probiert:

* name: alphanumeric string
* number: digits only
* all: a callerid string with the number specified between angle-brackets, e.g. "Some User <123>"

alles leer.

Er gibt auch keinen Fehler über "capi debug" aus, auch im Log ist nichts zu sehen. Ich habe die Ausgabe bei 1.2.14 und 1.4 bei eingehenden ISDN-Anrufen verglichen, mir ist kein Unterschied aufgefallen, außer das eben keine CALLERID vom chan_capi kommt.
 
Schon eine Lösung gefunden? Ich habe noch nichts gefunden...
 
Lösung (Hack)

Hallo... die neue Asterisk Version (1.4.0) verhält sich an einer Stelle (ast_channel_alloc) nicht so wie es zu erwarten ist. Daher muss man in der chan_capi.c alte Methoden "reaktivieren". Dazu einfach in die Zeilen 2177 und 2184 der aktuellen chan_capi.c TRUNK Version auskommentieren, neu compilieren und installieren, asterisk neu starten und schon sollte man wieder CALLERID's haben... das ganze sollte dann in etwa so aussehen:

cc_copy_string(tmp->context, i->context, sizeof(tmp->context));

//#ifndef CC_AST_HAS_EXT_CHAN_ALLOC
if (!ast_strlen_zero(i->cid)) {
if (tmp->cid.cid_num) {
free(tmp->cid.cid_num);
}
tmp->cid.cid_num = strdup(i->cid);
}
//#endif
if (!ast_strlen_zero(i->dnid)) {
 
Dein erster Beitrag..!!
...mal aus Interesse, hast Du jetzt die zig 1000 Zeilen "durchgeblättert" oder woher kommt der Tip.
 
Nun ja... ;)
...ich hatte das gleiche Problem... bin beim googlen hier auf diese Seite gestossen, konnte aber auch sonst niergends eine Lösung finden.
Dann hab ich mir eben in den Sources angeschaut, wo die Callerid gesetzt wird... und wie es "früher" mal war, als es noch funktioniert hat.
Daraus konnte man dann "eigentlich" ziemlich schnell einen "Hack" (mehr ist es nämlich nicht) machen. Der eigentliche Fehler wird "irgendwo" in asterisk in Zusammenhang mit dem manager_event "Newchannel" liegen...
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.