IAX2 auf CAPI oder SIP Weiterleitung crashen Asterisk

mcbastian

Neuer User
Mitglied seit
6 Mai 2005
Beiträge
22
Punkte für Reaktionen
0
Punkte
0
Hallo!

ich habe seit längerem einen * erfolgreich laufen. Diva Server PRI mit chan-capi-cm (soureforge), asterisk 1.0.10

capi <-> SIP calls funktionieren prima, rein udn raus.
wenn nun aber ein SIP phone (SNOM 320) eine externe rufumleitung schaltet, und der asterisk wählt los (also, anruf kommt über CAPI rein, sip sagt "umleiten", asterisk wählt über CAPI raus) und der * crasht. direkt nach dem Dial()

ebenso, wenn ein anderer * über IAX eine extension aufruft, die einen anruf über die CAPI wählen soll. gleich nach dem DIAL() crasht der *

was tun?

setup ist also:

S2M<->asterisk1<->LAN/IAX2<->Asterisk2<->ZAP<->analoges telefon

hier auszüge aus der extensions.conf vom asterisk-server 2

Code:
[dialout]
exten => _0.,1,Dial(IAX2/user:pass@IP/${EXTEN})

und aus asterisk1:

Code:
[dialout]
exten => _0.,1,Dial(CAPI/contr1/${EXTEN:1})

und capi.conf aus asterisk1

Code:
[general]
nationalprefix=0
internationalprefix=00
rxgain=0.8
txgain=0.8
language=de

[interfaces]
msn=1234
incomingmsn=*
controller=1
context=incoming
mode=immediate
isdnmode=ptp
devices=30
 
Welche Version von chan_capi verwendest Du? Deine capi.conf beinhaltet Eintraege, die es nicht gibt:
msn= und mode=
werden von chan_capi-cm nicht benutzt.
immediate=yes eventuell, und bei neuem chan_capi sollte auch isdnmode=did gesetzt sein.
Ein verbose log level 5 mit 'capi debug' von einem solchen Fall waere hilfreich.

Armin
 
Ich habe exakt das gleiche Problem. In der Features.conf ** als Weiterleitungscode eignetragen, vorher war es die #. Das Problem tritt bei allen Arten von Endgeräten auf, sei es Softphone oder Budgettone.
Wenn ein externer Anrufer weiterverbunden werden soll, wähle ich "**".
Wenn ich direkt danach die Nummer der Nebenstelle eingebe wird der Anruf durchgestellt. Ich kann mit der Nebenstelle reden und auflegen. Fehlerfrei.
Aber zwei Sachen bringen Asterisk zum Absturz:
- wenn ich ** wähle und dann nichts mehr

Es erscheint bei Verbose 5 und Capi debug:
Code:
Dec 16 13:22:36 WARNING[3626]: res_features.c:844 builtin_atxfer: Did not read data.
    -- Playing 'beeperr' (language 'en')
    -- Stopped music on hold on Local/23@from-internal-7224,2
  == ISDN2: Requested UNHOLD-Indication for CAPI/ISDN2/121480-2
Dec 16 13:22:41 DEBUG[3626]: channel.c:641 ast_queue_frame: Dropping voice to exceptionally long queue on Local/23@from-internal-7224,1
Diese "Dropping Voice" Zeile erscheint zigmal

- wenn die Nebenstelle das Gespräch annimmt, ich noch dran bin und die Nebenstelle wieder auflegt (Szenario: Zentrale will verbinden, Nebenstelle sagt "Jetzt nicht" und legt auf)

Es erscheint bei Verbose 5 und Capi debug:
Code:
Dec 16 13:45:13 DEBUG[3939]: cdr_addon_mysql.c:222 mysql_log: cdr_mysql: SQL command as follows: INSERT INTO cdr (calldate,clid,src,dst,dcontext,channel,dstchannel,lastapp,lastdata,duration,billsec,disposition,amaflags,accountcode,uniqueid) VALUES ('2005-12-16 13:45:02','23','23','s','from-internal', 'Local/19@from-internal-6472,1','','Dial','Local/19@from-internal/n',0,0,'FAILED',3,'','1134737096.13')
    -- Playing 'beep' (language 'en')
    -- Stopped music on hold on Local/23@from-internal-4db7,2
Dec 16 13:45:16 DEBUG[3939]: channel.c:641 ast_queue_frame: Dropping voice to exceptionally long queue on Local/23@from-internal-4db7,1

Auch hier: diese "Dropping Voice" Zeile erscheint zigmal

Danach: capi info in der Asterisk-Zeile weist aus, dass ein B-Kanal belegt ist (ist aber nicht mehr der Fall). "Stop Now" und "stop when convenient" werden ignoriert.

Verlasse ich die Asterisk-Konsole mit "exit" und versuche dann "capiinit" friert das System mit Kernel-Panic ein.


Ich verwende AVM C2 und auf einem anderen System AVM C4, AAH 2.0, chan_capi 0.6 (den neuesten von Sourceforge). Der Fehler ist einwandfrei reproduzierbar.Achja, meine /etc/asterisk/capi.conf:

Code:
;
; CAPI config
;
;

; general section

[general]
nationalprefix=0
internationalprefix=00
rxgain=0.8
txgain=0.8
;ulaw=yes        ;set this, if you live in u-law world instead of a-law

; interface sections ...

[ISDN1]          ;this example interface gets name 'ISDN1' and may be any
                 ;name not starting with 'g' or 'contr'.
;ntmode=yes      ;if isdn card operates in nt mode, set this to yes
isdnmode=DID     ;'MSN' (point-to-multipoint) or 'DID' (direct inward dial)
                 ;when using NT-mode, 'DID' should be set in any case
incomingmsn=*    ;allow incoming calls to this list of MSNs/DIDs, * = any
;defaultcid=123  ;set a default caller id to that interface for dial-out,
                 ;this caller id will be used when dial option 'd' is set.
;controller=0    ;ISDN4BSD default
;controller=7    ;ISDN4BSD USB default
controller=1     ;capi controller number to use
group=1          ;dialout group
;prefix=0        ;set a prefix to calling number on incoming calls
softdtmf=on      ;enable/disable software dtmf detection, recommended for AVM cards
relaxdtmf=on     ;in addition to softdtmf, you can use relaxed dtmf detection
accountcode=     ;Asterisk accountcode to use in CDRs
context=capi-in  ;context for incoming calls
holdtype=hold    ;when Asterisk puts the call on hold, ISDN HOLD will be used. If
                 ;set to 'local' (default value), no hold is done and Asterisk may
                 ;play MOH.
immediate=yes   ;DID: immediate start of pbx with extension 's' if no digits were
                 ;     received on incoming call (no destination number yet)
                 ;MSN: start pbx on CONNECT_IND and don't wait for SETUP/SENDING-COMPLETE.
                 ;     info like REDIRECTINGNUMBER may be lost, but this is necessary for
                 ;     drivers/pbx/telco which does not send SETUP or SENDING-COMPLETE.
;echosquelch=1   ;_VERY_PRIMITIVE_ echo suppression
;echocancel=yes  ;EICON DIVA SERVER (CAPI) echo cancelation
                 ;(possible values: 'no', 'yes', 'force', 'g164', 'g165')
echocancelold=yes;use facility selector 6 instead of correct 8 (necessary for older eicon drivers)
;echotail=64     ;echo cancel tail setting
;bridge=yes      ;native bridging (CAPI line interconnect) if available
;callgroup=1     ;Asterisk call group
devices=2        ;number of concurrent calls on this controller
                 ;(2 makes sense for single BRI, 30 for PRI)
;#################################
[ISDN2]          ;this example interface gets name 'ISDN1' and may be any
                 ;name not starting with 'g' or 'contr'.
;ntmode=yes      ;if isdn card operates in nt mode, set this to yes
isdnmode=DID     ;'MSN' (point-to-multipoint) or 'DID' (direct inward dial)
                 ;when using NT-mode, 'DID' should be set in any case
incomingmsn=*    ;allow incoming calls to this list of MSNs/DIDs, * = any
;defaultcid=123  ;set a default caller id to that interface for dial-out,
                 ;this caller id will be used when dial option 'd' is set.
;controller=0    ;ISDN4BSD default
;controller=7    ;ISDN4BSD USB default
controller=1     ;capi controller number to use
group=2          ;dialout group
;prefix=0        ;set a prefix to calling number on incoming calls
softdtmf=on      ;enable/disable software dtmf detection, recommended for AVM cards
relaxdtmf=on     ;in addition to softdtmf, you can use relaxed dtmf detection
accountcode=     ;Asterisk accountcode to use in CDRs
context=capi-in  ;context for incoming calls
holdtype=hold    ;when Asterisk puts the call on hold, ISDN HOLD will be used. If
                 ;set to 'local' (default value), no hold is done and Asterisk may
                 ;play MOH.
immediate=yes   ;DID: immediate start of pbx with extension 's' if no digits were
                 ;     received on incoming call (no destination number yet)
                 ;MSN: start pbx on CONNECT_IND and don't wait for SETUP/SENDING-COMPLETE.
                 ;     info like REDIRECTINGNUMBER may be lost, but this is necessary for
                 ;     drivers/pbx/telco which does not send SETUP or SENDING-COMPLETE.
;echosquelch=1   ;_VERY_PRIMITIVE_ echo suppression
;echocancel=yes  ;EICON DIVA SERVER (CAPI) echo cancelation
                 ;(possible values: 'no', 'yes', 'force', 'g164', 'g165')
echocancelold=yes;use facility selector 6 instead of correct 8 (necessary for older eicon drivers)
;echotail=64     ;echo cancel tail setting
;bridge=yes      ;native bridging (CAPI line interconnect) if available
;callgroup=1     ;Asterisk call group
devices=2        ;number of concurrent calls on this controller
                 ;(2 makes sense for single BRI, 30 for PRI)

Hat irgendjemand eine Idee was ich da machen kann?
Vielen Dank im voraus.
 
Hat denn niemand eine Idee? Ich würde mich über jeden Hinweis freuen. Danke.
 
Leider kann ich aus den Logs nichts erkennen und nachstellen konnte ich das Problem bisher auch nicht. Waere es moeglich mehr log zu bekommen, wenn der Fehler auftritt? (set verbose 5, capi debug)

Armin
 
Das ist der Auszug mit Set Verbose 5 und Capi Debug, wenn ich versuche, einen "atxfer" zu machen. Im folgenden Beispiel habe ich den die Taste für den Transfer gedrückt, dann aber die Nebenstelle nicht gewählt. Normerweise müsste ich dann mit dem Anrufer zurückverbunden werden.

Code:
Dec 20 15:08:18 DEBUG[3522]: channel.c:3271 ast_generic_bridge: Got DTMF on channel (SIP/21-e584)
Dec 20 15:08:18 DEBUG[3522]: channel.c:3515 ast_channel_bridge: Bridge stops bridging channels CAPI/ISDN2/XXXXXXX-1 and SIP/21-e584
Dec 20 15:08:18 DEBUG[3522]: res_features.c:990 ast_feature_interpret: Feature interpret: chan=CAPI/ISDN2/XXXXXXX-1, peer=SIP/21-e584, sense=2, features=2
Dec 20 15:08:18 DEBUG[3522]: res_features.c:1458 ast_bridge_call: Set time limit to 500
       > ISDN2: too much voice to send for NCCI=0x10101
       > ISDN2: too much voice to send for NCCI=0x10101
       > ISDN2: too much voice to send for NCCI=0x10101
       > ISDN2: too much voice to send for NCCI=0x10101
Dec 20 15:08:19 DEBUG[3522]: channel.c:3271 ast_generic_bridge: Got DTMF on channel (SIP/21-e584)
Dec 20 15:08:19 DEBUG[3522]: channel.c:3515 ast_channel_bridge: Bridge stops bridging channels CAPI/ISDN2/XXXXXX-1 and SIP/21-e584
Dec 20 15:08:19 DEBUG[3522]: res_features.c:990 ast_feature_interpret: Feature interpret: chan=CAPI/ISDN2/XXXXXXX-1, peer=SIP/21-e584, sense=2, features=2
Dec 20 15:08:19 DEBUG[3522]: res_features.c:681 builtin_atxfer: Executing Attended Transfer CAPI/ISDN2/XXXXXXX-1, SIP/21-e584 (sense=2) XXX
  == ISDN2: Requested HOLD-Indication for CAPI/ISDN2/XXXXXXX-1
FACILITY_REQ ID=001 #0x0058 LEN=0018
  Controller/PLCI/NCCI            = 0x101
  FacilitySelector                = 0x3
  FacilityRequestParameter        = <02 00 00>

       > ISDN2: sent HOLD for PLCI=0x101
    -- Started music on hold, class 'default', on channel 'CAPI/ISDN2/XXXXXXX-1'
FACILITY_CONF ID=001 #0x0058 LEN=0022
  Controller/PLCI/NCCI            = 0x101
  Info                            = 0x0
  FacilitySelector                = 0x3
  FacilityConfirmationParameter   = <02 00 02 00 00>

    -- Playing 'pbx-transfer' (language 'en')
INFO_IND ID=001 #0x0066 LEN=0017
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x8
  InfoElement                     = <82 9d>

INFO_RESP ID=001 #0x0066 LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN2: info element CAUSE 82 9d
Dec 20 15:08:23 WARNING[3522]: res_features.c:844 builtin_atxfer: Did not read data.
    -- Playing 'beeperr' (language 'en')
    -- Stopped music on hold on CAPI/ISDN2/XXXXXXX-1
  == ISDN2: Requested UNHOLD-Indication for CAPI/ISDN2/XXXXXXX-1

Und nun ein "Blind-Transfer", im Beispiel von Nebenstelle 21 zu Nebenstelle 23, also wählt 21 "#23"

Code:
Dec 20 15:27:55 DEBUG[3805]: channel.c:3271 ast_generic_bridge: Got DTMF on channel (SIP/21-97bb)
Dec 20 15:27:55 DEBUG[3805]: channel.c:3515 ast_channel_bridge: Bridge stops bridging channels CAPI/ISDN2/XXXXXXX-e and SIP/21-97bb
Dec 20 15:27:55 DEBUG[3805]: res_features.c:990 ast_feature_interpret: Feature interpret: chan=CAPI/ISDN2/XXXXXXX-e, peer=SIP/21-97bb, sense=2, features=2
  == ISDN2: Requested HOLD-Indication for CAPI/ISDN2/XXXXXXX-e
FACILITY_REQ ID=001 #0x1f9d LEN=0018
  Controller/PLCI/NCCI            = 0x101
  FacilitySelector                = 0x3
  FacilityRequestParameter        = <02 00 00>

       > ISDN2: sent HOLD for PLCI=0x101
    -- Started music on hold, class 'default', on channel 'CAPI/ISDN2/XXXXXXX-e'
FACILITY_CONF ID=001 #0x1f9d LEN=0022
  Controller/PLCI/NCCI            = 0x101
  Info                            = 0x0
  FacilitySelector                = 0x3
  FacilityConfirmationParameter   = <02 00 02 00 00>

    -- Playing 'pbx-transfer' (language 'en')
INFO_IND ID=001 #0x2668 LEN=0017
  Controller/PLCI/NCCI            = 0x101
  InfoNumber                      = 0x8
  InfoElement                     = <82 9d>

INFO_RESP ID=001 #0x2668 LEN=0012
  Controller/PLCI/NCCI            = 0x101

    -- ISDN2: info element CAUSE 82 9d
    -- Stopped music on hold on CAPI/ISDN2/XXXXXXX-e
  == ISDN2: Requested UNHOLD-Indication for CAPI/ISDN2/XXXXXXX-e


Und dann verliessen sie ihn. Es geht kein ISDN-Anruf mehr rein, keiner mehr raus. "Stop now" geht nicht. Nur ein Reboot des Systems funktioniert. Was kann ich machen?
 
Gelöst:
in der Capi.conf (etc/asterisk/capi.conf) muss der "Holdtype" auf "local" stehen.
 
Ja, hier wird ein HOLD auf dem ISDN versucht und das wird aber wohl rejeceted.
Trotzdem sollte es nicht abstuerzen. Ich schaue mir das mal an.

Armin
 
hallo!

ich war erstmal im urlaub und konnte deshalb nicht so schnell antworten.
ich werde mal die angesprochenen änderungen testen udn mich dann evtl nochmal melden.
erstmal vielen dank für die infos!!
 
armincm schrieb:
und bei neuem chan_capi sollte auch isdnmode=did gesetzt sein.
..sollte doch eigentlich nur am anlagenanschluss bzw. wenn die Karte im NT-Modus läuft, gesetzt werden.
Wäre also für ein Erklärung offen
 
blauerpeti schrieb:
..sollte doch eigentlich nur am anlagenanschluss bzw. wenn die Karte im NT-Modus läuft, gesetzt werden.
Wäre also für ein Erklärung offen

Ja, das ist richtig. Meine Antwort bezog sich aber auf die capi.conf im initialen Beitrag, wo isdnmode=ptp steht.

Armin
 
..gut. wieder was gelernt
 
@armincm

hi!

wenn ich isdnmode=did setze, habe ich mit meiner diva server pri wieder das problem, das sofort nach der ersten ziffer gewählt wird.
es wird also nicht nach 123-456, sondern schon nach 123-4 begonnen, den dialplan auszuwerten. das soll aber gerade nicht passieren, da ich 3 stellen in unserem rufnummernblock verwenden möchte.
bei blockwahl funktioniert es ja, wen die ziffern aber halt einzeln kommen (DID afaik), gehts schief
 
Wenn Du eine PRI hast, dann solltest Du aber DID also mode verwenden, denn ein PRI Anschluss hat nie MSN.
Es gibt zwei Möglichkeiten:
a) den Dialplan korrekt schreiben, denn hier wird entschieden, ob die Nummer vollstaendig ist oder noch auf weitere Nummern gewartet werden soll.
b) Die PRI Karte mit -n X laden, wobei X die Länge der Durchwahl ist, auf die gewartet werden soll.

Meiner Meinung nach ist a) richtig, denn dafuer ist ja der Dialplan da.

Armin
 
hi Armin!

ich verwende z.Zt. lösung b)

wenn ich jetzt Lösung a) verwenden müsste, wie müsste ich da meinen dialplan gestallten, wenn ich also kein MSN hab?

z.zt. siehts so aus
[incoming]
exten => 123456,1,Dial(SIP/blahblah)

wobei 456 die durchwahl ist

trozdem schonmal danke für deine hilfe
 
exten => 123456,1,Dial(SIP/blahblah)

ist doch korrekt.
Welche Probleme hast Du denn, wenn der dialplan schon bei der '4' aktiviert wird?
chan_capi sollte bei dem Beispiel auf '456' warten. Kommt eine andere Ziffer, wird der Anruf abgewiesen.
Mit entsprechenden Dialplan Regeln kannst Du das dann gut Steuern, was bei welcher Nummer geschehen soll.

Armin
 
hi armin,

hab jetzt den * auf 1.2 mit der aktuellen version von chan_capi gebracht.
isdnmode=did funktioniert nun so wie beschrieben/erwartet, jetzt brauch ich den -N X im treiber nicht mehr.
leider fehlt mir jetzt ein "feature": wenn ich mit einem SIP-Phone über die capi rauswähle, höre ich keinen rufton mehr, der mir signalisiert, das es beim angerufenen klingelt, über die anderen channels gehts.
sprich, ich wähle, dann ist stille und dann hab ich den angerufenen dran, wenn der abnimmt.

wenn das noch geregelt ist, läuft alles zu 100% ;-)
 
Bei DIAL/CAPI/.... ) solltest Du /b verwenden -> DIAL(CAPI/g1/123/b)
und bei SIP DIAL(SIP/123,,r) damit du einen Rufton, bzw progress bekommst.

Armin
 
Zuletzt bearbeitet:
solltest Du /b verwenden -> DIAL/CAPI/g1/123/b)
und bei SIP DIAL(SIP/123,,r)

..kannst die bitte mal den unterschied zwischen b und r nennen
 
blauerpeti schrieb:
..kannst die bitte mal den unterschied zwischen b und r nennen

b ist eine Dial Option fuer CAPI und ist fuer early-B3 (siehe README). r ist eine Dial Option fuer Dial() allgemein und erzeugt ein Rufsignal, wobei keine anderen Töne durchgelassen werden (siehe Hilfe zu app_dial).

Armin
 
Kostenlos!

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
248,521
Beiträge
2,293,504
Mitglieder
378,028
Neuestes Mitglied
tempuser777