[asterisk-dev] ast_read() wrong for calls initiated by Asterisk
Edwin Groothuis
edwin at mavetju.org
Sat Feb 16 01:25:54 CST 2008
On Sat, Feb 16, 2008 at 03:45:12PM +1100, Edwin Groothuis wrote:
> See http://bugs.digium.com/view.php?id=11917 (it only talks about
> AGI scripts, but it's more generic, it also happens with the Read()
> application in the dialplan)
>
> The story so far:
>
> - I have a call initiated by the Asterisk server with a call file.
> That works.
>
> - During the call I will ask for a couple of digits.
>
> The dialplan is as follow (just FYI, this all works)
>
> [context-tools]
> exten => 123,1,NoOp(Callback1)
> exten => 123,n,Answer()
> exten => 123,n,Read(foo,one-moment-please,3,,,10);
> exten => 123,n,SayDigits(${foo})
> exten => 123,n,AGI(callback1.agi)
>
> [context-callback]
> exten => _.X,1,NoOp(callback time)
> exten => _.X,n,Answer()
> exten => _.X,n,Read(foo,one-moment-please,3,n,,10);
> exten => _.X,n,SayDigits(${foo});
> exten => _.X,n,Hangup
>
> Now the strange thing is the Read() on 123 does recognize the
> DTMF keys, while the Read() in the callback does not recognized the
> DTMF keys.
>
> Going through some code I ended up at main/channel.c at the
> ast_waitfordigit_full() function which did do a ast_read(). For the
ast_waitfor_nandfds() ---^^^^^^^^
> Read() on 123, the ast_read now and then showed a AST_FRAME_DTMF_END.
^^^^^^^^-- ast_waitfor_nandfds()
> But for the Read() in the callback it didn't show up.
>
> At that moment I thought that this might be a left-right-channel issue:
>
> Under normal circumstances, the user telephone (the originating
> channel) calls the PABX. So the user data comes from originating
> channel to the channel and the Read() function gets the data from
> the originating channel.
>
> But with call files, the user telephone is on the outgoing channel
> and thus should the Read() function get the data from the outgoing
> channel.
>
>
> The question of course is.... Does this explanation make sense?
>
> (Oh, and where is the link between the DialPlan and the call to the
> Read() function? (Don't worry, I'll find it :-))
(Just to prevent confusion :-)
Edwin
--
Edwin Groothuis | Personal website: http://www.mavetju.org
edwin at mavetju.org | Weblog: http://www.mavetju.org/weblog/
More information about the asterisk-dev
mailing list