Raoul Bönisch
2006-Apr-01 15:32 UTC
[Asterisk-Users] chan-capi: Sending digits on a bri (isdn) d-channel
Dear asterisk users! I want to control a hardware pbx with asterisk. What I need to do this is being able to press "hold" which can be done with capicommand(hold) and then send digits on a bri card which connects to my asterisk computer. So far I use Dial(CAPI/ISDN1/27:<<digits>>/bo,15) to do this. Are there better ways? Note that these are not dtmf, I'm afraid. I use an AVM Fritz!classic ISA card with the fcclassic kernel module on linux 2.6.16, asterisk version 1.2.4 on Debian unstable. To use the AVM card with asterisk I compiled the latest cvs tree of chan-capi-cm. The hardware pbx is a T-Eumex 312 (product of the german Telekom). What I basically do is pretending asterisk is an original isdn phone connected to the hardware pbx and it should send the proper key presses that the hardware pbx understands. E.g. I'd like to forward a call. Therefore asterisk would have to press "hold" when a call is active, then dial the number of the phone the call should be forwarded to, then press "*", "6", "1". I use this extension to do it: exten => 29,1,Answer exten => 29,2,Wait(3) exten => 29,3,Playback(echo-test) exten => 29,4,Wait(1) exten => 29,5,capicommand(hold) exten => 29,6,Dial(CAPI/ISDN1/27:12/bo,15) exten => 29,7,capicommand(retrieve) exten => 29,8,Playback(echo-test) exten => 29,9,Playback(Welcome) exten => 29,10,Wait(5) exten => 29,11,Hangup Note, that in Dial(CAPI/ISDN1/27:12/bo,15), the 12 is the internal number of the phone asterisk should forward the call to. Welcome and echo-test are just for testing purposes. I can hear the first output of echo-test when I call extension 29 and the call is properly put on "hold". Then phone number 12 rings as expected. However when I pick up phone number 12, the connections are hung up. I derive this from the following output of asterisk -r -vvv: -- CONNECT_IND (PLCI=0x101,DID=29,CID=14,CIP=0x4,CONTROLLER=0x1) == Started pbx on channel CAPI/ISDN1/29-20 -- Executing Answer("CAPI/ISDN1/29-20", "") in new stack -- Executing Wait("CAPI/ISDN1/29-20", "3") in new stack Apr 2 00:16:41 WARNING[11926]: channel.c:1591 ast_waitfor_nandfds: Thread -1230230608 Blocking 'CAPI/ISDN1/29-20', already blocked by thread 0 in procedure (null) -- Executing Playback("CAPI/ISDN1/29-20", "echo-test") in new stack -- Playing 'echo-test' (language 'de') -- Executing Wait("CAPI/ISDN1/29-20", "1") in new stack -- Executing capiCommand("CAPI/ISDN1/29-20", "hold") in new stack -- capiCommand: 'hold' '(null)' > ISDN1: sent HOLD for PLCI=0x101 -- Executing Dial("CAPI/ISDN1/29-20", "CAPI/ISDN1/27:12/bo|15") in new stack > data = ISDN1/27:12/bo > capi request for interface 'ISDN1' == ISDN1: Call CAPI/ISDN1/12-21 with B3 overlap (pres=0x00, ton=0x41) -- Called ISDN1/27:12/bo Apr 2 00:16:48 WARNING[11926]: channel.c:1591 ast_waitfor_nandfds: Thread -1230230608 Blocking 'CAPI/ISDN1/12-21', already blocked by thread 0 in procedure (null) -- ISDN1: received CONNECT_CONF PLCI = 0x201 -- ISDN1: PLCI=0x101 put onhold -- CAPI/ISDN1/12-21 is making progress passing it to CAPI/ISDN1/29-20 -- CAPI/ISDN1/12-21 is ringing -- ISDN1: attempting ALERT in state 10 -- CAPI/ISDN1/12-21 answered CAPI/ISDN1/29-20 > ISDN1: using PLCI=0x101 for retrieve > ISDN1: sent RETRIEVE for PLCI=0x101 -- Attempting native bridge of CAPI/ISDN1/29-20 and CAPI/ISDN1/12-21 -- ISDN1: activehangingup (cause=0) == Spawn extension (from-tk, 29, 6) exited non-zero on 'CAPI/ISDN1/29-20' == ISDN1: Interface cleanup PLCI=0x101 == ISDN1: Interface cleanup PLCI=0x201 Note the statement "ISDN1: activehangingup (cause=0)" which is what reports the call being hung up. This is not what I expect. The call should have been forwarded to phone number 12 and not hung up. How can I avoid this? Thanks in advance. Raoul
Armin Schindler
2006-Apr-03 01:37 UTC
[Asterisk-Users] chan-capi: Sending digits on a bri (isdn) d-channel
Using Dial() for this is not correct, because the Asterisk Dial() command is not just for dialing a number, it also then connects the dialing with the dialed channel, which is not what you want. I had a close look into the Asterisk application and I thought app_senddtmf will help, but the app will not call the senddigit function of the channels, it produces DTMF tones. So what you are looking for is a app_senddigit, but as far as I can see this is not existent in Asterisk!? We could add this as a capicommand() to chan-capi, but the correct way would be to provide this as a common app, which calls the correct function in the channel driver. Armin On Sun, 2 Apr 2006, Raoul B?nisch wrote:> Dear asterisk users! > > I want to control a hardware pbx with asterisk. What I need to do > this is being able to press "hold" which can be done with > capicommand(hold) and then send digits on a bri card which > connects to my asterisk computer. So far I use > Dial(CAPI/ISDN1/27:<<digits>>/bo,15) to do this. Are there better > ways? Note that these are not dtmf, I'm afraid. > > I use an AVM Fritz!classic ISA card with the fcclassic kernel > module on linux 2.6.16, asterisk version 1.2.4 on Debian unstable. > To use the AVM card with asterisk I compiled the latest cvs tree of > chan-capi-cm. The hardware pbx is a T-Eumex 312 (product of the > german Telekom). > > What I basically do is pretending asterisk is an original isdn > phone connected to the hardware pbx and it should send the proper > key presses that the hardware pbx understands. E.g. I'd like to > forward a call. Therefore asterisk would have to press "hold" when > a call is active, then dial the number of the phone the call should > be forwarded to, then press "*", "6", "1". > > I use this extension to do it: > > exten => 29,1,Answer > exten => 29,2,Wait(3) > exten => 29,3,Playback(echo-test) > exten => 29,4,Wait(1) > exten => 29,5,capicommand(hold) > exten => 29,6,Dial(CAPI/ISDN1/27:12/bo,15) > exten => 29,7,capicommand(retrieve) > exten => 29,8,Playback(echo-test) > exten => 29,9,Playback(Welcome) > exten => 29,10,Wait(5) > exten => 29,11,Hangup > > Note, that in Dial(CAPI/ISDN1/27:12/bo,15), the 12 is the internal > number of the phone asterisk should forward the call to. Welcome and > echo-test are just for testing purposes. I can hear the first output > of echo-test when I call extension 29 and the call is properly put > on "hold". Then phone number 12 rings as expected. However when I > pick up phone number 12, the connections are hung up. > > I derive this from the following output of asterisk -r -vvv: > > -- CONNECT_IND > (PLCI=0x101,DID=29,CID=14,CIP=0x4,CONTROLLER=0x1) > == Started pbx on channel CAPI/ISDN1/29-20 > -- Executing Answer("CAPI/ISDN1/29-20", "") in new stack > -- Executing Wait("CAPI/ISDN1/29-20", "3") in new stack > Apr 2 00:16:41 WARNING[11926]: channel.c:1591 > ast_waitfor_nandfds: Thread -1230230608 Blocking > 'CAPI/ISDN1/29-20', already blocked by thread 0 in procedure > (null) > -- Executing Playback("CAPI/ISDN1/29-20", "echo-test") in new > stack > -- Playing 'echo-test' (language 'de') > -- Executing Wait("CAPI/ISDN1/29-20", "1") in new stack > -- Executing capiCommand("CAPI/ISDN1/29-20", "hold") in new > stack > -- capiCommand: 'hold' '(null)' > > ISDN1: sent HOLD for PLCI=0x101 > -- Executing Dial("CAPI/ISDN1/29-20", > "CAPI/ISDN1/27:12/bo|15") in new stack > > data = ISDN1/27:12/bo > > capi request for interface 'ISDN1' > == ISDN1: Call CAPI/ISDN1/12-21 with B3 overlap (pres=0x00, > ton=0x41) > -- Called ISDN1/27:12/bo > Apr 2 00:16:48 WARNING[11926]: channel.c:1591 > ast_waitfor_nandfds: Thread -1230230608 Blocking > 'CAPI/ISDN1/12-21', already blocked by thread 0 in procedure > (null) > -- ISDN1: received CONNECT_CONF PLCI = 0x201 > -- ISDN1: PLCI=0x101 put onhold > -- CAPI/ISDN1/12-21 is making progress passing it to > CAPI/ISDN1/29-20 > -- CAPI/ISDN1/12-21 is ringing > -- ISDN1: attempting ALERT in state 10 > -- CAPI/ISDN1/12-21 answered CAPI/ISDN1/29-20 > > ISDN1: using PLCI=0x101 for retrieve > > ISDN1: sent RETRIEVE for PLCI=0x101 > -- Attempting native bridge of CAPI/ISDN1/29-20 and > CAPI/ISDN1/12-21 > -- ISDN1: activehangingup (cause=0) > == Spawn extension (from-tk, 29, 6) exited non-zero on > 'CAPI/ISDN1/29-20' > == ISDN1: Interface cleanup PLCI=0x101 > == ISDN1: Interface cleanup PLCI=0x201 > > > Note the statement "ISDN1: activehangingup (cause=0)" which is > what reports the call being hung up. This is not what I expect. > The call should have been forwarded to phone number 12 and not > hung up. How can I avoid this? > > Thanks in advance. > > Raoul > > _______________________________________________ > --Bandwidth and Colocation provided by Easynews.com -- > > Asterisk-Users mailing list > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users >
Raoul Bönisch
2006-Apr-04 04:46 UTC
[Asterisk-Users] chan-capi: Sending digits on a bri (isdn) d-channel
Hello! Look at "Asterisk cmd SendText". Perhaps it would be the right way to implement the sendtext facility within chan-capi so that you can use this to send digits. The digits are some kind of text here, i.e. some data that is not really realted to the currently used channel, but just transported over it. Greets! Raoul