Asterisk auto dial to ivr and play options to the caller

Hi all. I am trying to create an auto dialer using Vicidial wherein I would auto dial into a VOIP phone which will act as an IVR and play options to the caller. I am having problems when using the dial command in that the options are being heard in the VOIP phone instead of the softphone from which the auto dial happens. Please help me on this.

Also I am working on a feature wherein I have to automatically select the IVR options from the softphone without having to manually select it. I am using the SendDTMF command but it is not getting recognized/passed to the softphone which I have configured using SIP.

Firstly, we know nothing about configuring Vicidial.

Are you sure SendDTMF is being sent on the right channel. It will be sent on the channel running the dialplan, not any destination channel.

Assuming that is correct, are you sure that both Asterisk and the target are set to the same dtmfmode. Does the softphone even support incoming out of band DTMF - it serves little purpose for human users.

Hi David. Thanks for your quick response. I am new to Asterisk. I am posting the sip.conf file content and extension.conf file contents for your review. Please let me know if you are able to find anything in this. 7001 is my softphone.

sip.conf

[voipspeech]
disallow=all
allow=gsm
allow=ulaw
type=friend
dtmfmode=rfc2833
relaxdtmf=yes
context=trunkinbound
qualify=yes
insecure=port,invite
nat=yes
host=XXX.XXX.XXX.X
username=1XXXXXXXXXX
secret=123456
allow=alaw
allow=g729
canreinvite=no
rtpkeepalive=0

[7001]
type=friend
host=dynamic
secret=goautodial
canreinvite=no
context=ivrmessage
dtmfmode=rfc2833
relaxdtmf=yes
qualify=yes
disallow=all
allow=ulaw
allow=g729
allow=gsm

extensions.conf

exten => _X.,1,Dial(SIP/voipspeech/${EXTEN:1},G(ivrmessage^1234^1)
same => n,Hangup()

[ivrmessage]
exten => 1234,1,Answer()
same => 1,Set(NUMINVALID=0)
same => n,Set(NUMTIMEOUTS=0)
same => n,agi(googletts.agi,“Welcome to the Wise Claim Status Enquiry system”,en)
same => n,Wait(1)
same => n(loop),agi(googletts.agi,“Press 1 for English”,en)
same => n,WaitExten(1)
same => n,agi(googletts.agi,“Press 2 for Spanish”,en)
same => n,WaitExten(1)
same => n,agi(googletts.agi,“Press 3 for French”,en)
same => n,WaitExten(1)
same => n,agi(googletts.agi,“Press 4 for Hindi”,en)
same => n,WaitExten(1)
same => n,agi(googletts.agi,“Press 0 to transfer the call to a live agent”,en)
same => n,WaitExten()
same => n,SendDTMF(1)

exten => 1,1,NoOp(Pressed 1)
same => n,agi(googletts.agi,“Please enter the Member ID and press the pound key once entered”,en)
same => n,Set(TIMEOUT(response)=30)
same => n,Read(memberid,0,15,2,100)
same => n,agi(googletts.agi,“Member ID you entered is”,en)
same => n,SayAlpha(${memberid})
same => n,agi(googletts.agi,“Please enter the Claim Number to find the status and press the pound key once entered”,en)
same => n,Set(TIMEOUT(response)=30)
same => n,Read(claimno,0,15,2,100)
same => n,agi(googletts.agi,“Claim Number you entered is”,en)
same => n,SayAlpha(${claimno})
same => n,Hangup()

exten => i,1,NoOp(Invalid Selection)
same => n,Playback(pbx-invalid)
same => n,Set(NUMINVALID=$[${NUMINVALID}+1]})
same => n,GotoIf($[${NUMINVALID}<2]?s,loop)
same => n,Playback(vm-goodbye)
same => n,Hangup()

exten => t,1,NoOp(Timeout)
same => n,Set(NUMTIMEOUTS=$[${NUMTIMEOUTS}+1]})
same => n,GotoIf($[${NUMTIMEOUTS}<2]?s,loop)
same => n,Playback(vm-goodbye)
same => n,Hangup()

This will be very confusing, as you will be trying to run the IVR on both called and calling parties, at the same time.

All the SendDTMF sems to be doing is sending a complicated beep to the phone user. Why not play a simple beep? However, if that is what you meant to do, the problem may be that the phone doesn’t expect to present received out of band DTMF to the human user, in which case using Playback or Playtones are your only options.

You don’t seem to be doing anything with the A side after you have played the IVR them. I suspect this application really requires the use of Originate, rather than Dial/G.

Using Google cloud voice synthesis, on the fly, for fixed text, seems to me an abuse of that service.

1 Like

Thanks again. My requirement is that I need to auto dial an IVR using my softphone (in my case I would want my VOIP phone to act as an IVR). I will also need to be able to automatically select the options in the IVR from softphone without manual intervention. Will using the originate command suffice this requirement of mine.

Please explain in more detail, as I don’t really understand the brief description. Autodialing from a soft phone sounds like something that should be implemented in the soft phone.

What your dialplan looked to be attempting to do is to allow you to dial an extension, from anywhere (the soft phone seems to be a red herring), and have Asterisk dial someone, and then ask them some questions. It doesn’t do anything explicitly with the answers, but I suppose that they could be extracted from the logging…

In any case, I cannot see that the call that triggered this processing in Asterisk serves any useful purpose once it has started dialling the outgoing call.

I therefore assume that what you wanted is most likely best achieved by originating a call with the outgoing side as the channel and the IVR as extension, but it is not at all clear that that is what you really want

My requirement is that an Agent/Call center executive should be able to auto dial to an IVR and the dialer should be able to respond automatically to the options in the IVR. For testing purpose, the response of the dialer can be hardcoded.I am using my Softphone just as a dialer. Once in production, this would happen from an agent phone/caller (VOIP phone).