Karl O. Pinc
2006-Jan-22 12:44 UTC
[Asterisk-Users] Interrupting ring to go to voicemail pickup -- How to ring after Answer()?
Hi, I've successfully used the 'd' flag in Dial() so that when I dial into my phone system from out there in the PSTN network I can press the 2 key while the phone is ringing to listen to my voicemail. It seems that one issue is that the public providers do not deliver DTMF, or anything, until the phone is answered. This is for security reasons and sounds like a good idea to me. So, the extension must first answer the phone. The trouble is then providing a ring tone to the calling party. I stumbled upon the solution below, which seems to work. But there are a number of things I don't understand, which makes the whole thing seem really brittle. 1) Why does this not work if you leave off the Playtones() call? I thought Dial() was supposed to automagically indicate ringing and provide the requsite sounds? 2) Why is the r flag reqired in the Dial() call? If I take it out I don't hear any ringing even though Playtones should be playing. 3) If I take the r flag out of Dial() and put a call in to Ringing() before the Playtones() (or maybe after, I forget) I don't get a ring sound when calling. 4) I thought Playtones() was supposed to play until StopPlaytones() is called. It sure stops playing when I get to voicemail, either by a timeout of the Dial() or by pressing 2. (I don't know whether it really stops if the Zaptel is answered, because I'm not in a position to test that at the moment. But I presume it will.) Asterisk 1.2.1 extensions.conf file fragment: exten => 2000,1,Answer() exten => 2000,2,Playtones(ring) exten => 2000,3,Dial(Zap/1,15,dr) exten => 2000,4,VoiceMail(u101@default) exten => 2000,104,VoiceMail(b101@default) exten => 2,1,VoiceMailMain(101@default) I'd appreciate hearing from anybody who can clue me in on the above questions, or has any improvements or suggestions to make to the dialplan, or otherwise wishes to throw me a bone. Thanks. Karl <kop@meme.com> Free Software: "You don't pay back, you pay forward." -- Robert A. Heinlein