Link to home
Create AccountLog in
Voice Over IP

Voice Over IP

--

Questions

--

Followers

Top Experts

Avatar of rdelrosario
rdelrosario

IVR Buiilder Software for Trixbox/Asterisk
We are in need of an inbound IVR Software tool (for asterisk/trixbox) that will help us create survey campaigns.   Specifically, people will be calling into a our number and will be presented with several questions where they will answer via their phone keypad.  We then want to store the information entered into a database.  I've searched google, but really haven't found anything.   I'm looking for free open source tools, but am willing to pay for software that we can run in-house through our asterisk server.

Any info regarding software/tools or detailed scripts that would allow us to efficiently deploy various inbound survey campaigns.

Thanks

Zero AI Policy

We believe in human intelligence. Our moderation policy strictly prohibits the use of LLM content in our Q&A threads.


Avatar of Kamran ArshadKamran Arshad🇵🇰


Avatar of Ron MalmsteadRon Malmstead🇺🇸

www.apstel.com

Visual Dialplan Pro 2.0 - free, for Asterisk.

Avatar of rdelrosariordelrosario

ASKER

xuserx2000,

I'm going to review the visual dialplan pro right now, but wanted to know if you use this or just heard of this.  I'm curious as to whether this was a full featured package geared towards IVR or does this just have the tools necessary to assist in creating our specific IVR inbound survey compaigns as described above.

Thanks

Reward 1Reward 2Reward 3Reward 4Reward 5Reward 6

EARN REWARDS FOR ASKING, ANSWERING, AND MORE.

Earn free swag for participating on the platform.


rdelrosario,

It is fully featured with regards to Asterisk functionality, and has a remote delivery method over SSH.

I've used this only to the point of designing a simple IVR.
Now that I understand the dialplan functions and syntax, I code everything manually now, but that software helped me get started.


Xuserx2000,

Although I appreciate the comment, we are very knowledgeable in Asterisk, but are looking for specific tools/software to eliminate deployment time for survey IVR campaigns.  (collecting data from key presses and storing them in a database)  I spent about 10 minutes looking at Visual Dial Plan and its basically a GUI like FREEPBX for those who prefer not to tinker with Asterisk code.   Personally, I find that I can create a PBX environment 20 times faster cutting and pasting line code then to physically have to draw icons and lines on grids.  Doesn't make much sense to me to do that..... but thanks.

Anyone else?

I agree and understand....

The problem is that Asterisk is open source...so if you are looking for a cutom solution for deploying campaigns.., you'll probably have to develop it yourself.

You might be able to use this tool as a template for campaigns however.  If you design your dialplan using mostly #include  and put the campaigns dialplan code in separate files.

Free T-shirt

Get a FREE t-shirt when you ask your first question.

We believe in human intelligence. Our moderation policy strictly prohibits the use of LLM content in our Q&A threads.


Xuserx2000,

Thanks I do appreciate it.

I did notice some of your other posted solutios for users.   If you can expand on one of your other posts about using the Read command and using macros and such.  I'll award the points if you can assist in the below:

1.)    give me a sample scripts on how to capture DTMF key strokes and put them in a comma delimited file on a windows File Share.

For example.  a 3 question survey asking someone to rate their satisfaction on a 1 - 5 scale on a vehicle lease or purchase.

2.) Be able to skip a question or ask a different question based on their response.

3). Provide the ability for someone to backup in a survey question for instance and change an answer before the IVR completes.

3.  Ask an opened end question at the end where we would record their response.  I'd then need to be able to export this audio and some how store the file name in the comma delimited file associated with the answers to the survey.

If you can mock up a quick setup of the above, I'd be more than happy to give the 500 points.

Thanks

....Well let me say, what you are asking for is a complete solution with considerable design time.

I already do much of what you are asking for in my dialplan.
Asterisk is open source, and in the spirit of open source I have no problem posting my dialplan for you to look at.  In my dialplan, you will see examples of the Read() function, examples on how to write to a cvs file, firing off macros, and some other things...

Take note that my setup, and business functions will likely be much different than yours

(see attached)

This file is best opened in excel if opening on windows platform.
You must change the extension from .conf to .txt
extensions.conf.txt

Reward 1Reward 2Reward 3Reward 4Reward 5Reward 6

EARN REWARDS FOR ASKING, ANSWERING, AND MORE.

Earn free swag for participating on the platform.


ASKER CERTIFIED SOLUTION
Avatar of Ron MalmsteadRon Malmstead🇺🇸

Link to home
membership
Log in or create a free account to see answer.
Signing up is free and takes 30 seconds. No credit card required.
Create Account

Thanks so much for providing me with information that I'm sure you spent a lot of time on.   We greatly appreciate your effort and contributions to this open source platform.

xuserx2000,

I have a couple questions regarding the dialplan code you provided me.  Specifically, the COMMA=, global variable you set.  My output file still shows the pipe command.    I'm not sure if I'm reading your file correctly, but your file seems to have a lot of DOUBLE QUOTES in front of things.  I can't tell if some of them are comments or are needed.  Specifically when you define your COMMA=,  you have that in double quotes "COMMA=,"   I didn't quite follow your exact syntax in your echo command, but got it to write out the file with all the | pipe characters in between each response.  Any help on why or what I'm doing wrong.

Here is a simple sample of how I'm writing the file:

COMMA=,
exten => 2222,1,Answer()
exten => 2222,n,Wait(.5)
exten => 2222,n,NoOp(Question 1)
exten => 2222,n,Background()
exten => 2222,n,Read(Q1,,1)

exten => 2222,n,Wait(.5)
exten => 2222,n,NoOp(Question 2)
exten => 2222,n,Background()
exten => 2222,n,Read(Q2,,1)

exten => 2222,n,Wait(.5)
exten => 2222,n,NoOp(Question 3
exten => 2222,n,Background()
exten => 2222,n,Read(Q3,,1)

exten => 2222,n,Wait(.5)
exten => 2222,n,NoOp(Question 4
exten => 2222,n,Background()
exten => 2222,n,Read(Q4,,1)

exten => 2222,n,Wait(.5)
exten => 2222,n,NoOp(Question 5)
exten => 2222,n,Background()
exten => 2222,n,Read(Q5,,1)

exten => 2222,n,System(echo ${Q1}${COMMA}${Q2}${COMMA}${Q3}${COMMA}${Q4}${COMMA}${Q5} >> /etc/asterisk/roadside.txt)

* output looks fine but it looks like this    
1|5|4|2|3  

I want 1,5,4,2,3 obviously.

Please keep in mind that we are using trixbox not asterisk if it matters on how and where to define the variable.  

Also, can you tell me the syntax to only allow for digit 1-5 to be available when prompting a question?

Thanks again.


sorry...the double quotes shows up because of Excel.  I forgot about that...  But excel is good just to view it.  You can copy the column and paste it into notepad I believe and it will lose the quotes.

It should just be COMMA=,
...and that needs to be in the global custom variables conf file..., or you can do it in the dialplan like this >
exten => 2222,1,Answer()
exten => 2222,n,Wait(.5)
exten => 2222,n,SetGlobalVar(COMMA=,)

Since it's trixbox you should also be modifying only the extensions_custom.conf file.
I know there were some changes to Asterisk 1.6 regarding commas and pipes, which may or may not be included in the version on your trixbox....basically, it may no longer be necessary to set the COMMA global variable.  You might want to try using the "|" character or just use a comma..","

As far as restricting digits 1-5...basically you would just limit it to 1 digit....and use GotoIf() function to determine whether to go on to the next question...
example.

exten => 2222,n(Q4START),NoOp(Begin Question 4)
exten => 2222,n,Wait(.5)
exten => 2222,n,Background(question4.wav)
exten => 2222,n,Read(Q4,,1)
;Below 5 lines sends them to Q5START label if Q4 = 1-5
exten => 2222,n,GotoIf($["${Q4}" = "1"]?Q5START)
exten => 2222,n,GotoIf($["${Q4}" = "2"]?Q5START)
exten => 2222,n,GotoIf($["${Q4}" = "3"]?Q5START)
exten => 2222,n,GotoIf($["${Q4}" = "4"]?Q5START)
exten => 2222,n,GotoIf($["${Q4}" = "5"]?Q5START)
;Otherwise the next three lines will execute instead.
exten => 2222,n,Playback(invalidentry.wav)
exten => 2222,n,NoOp(User entered invalid info, restart Question 4)
exten => 2222,n,Goto(Q4START)

exten => 2222,n(Q5START),NoOp(Begin Question 5)
exten => 2222,n,Wait(.5)
exten => 2222,n,Background(question5.wav)

and so on and so forth.......

Free T-shirt

Get a FREE t-shirt when you ask your first question.

We believe in human intelligence. Our moderation policy strictly prohibits the use of LLM content in our Q&A threads.


Thanks!

Here's my dialplan without all the quotes.
; ************************************************************** 
; **  GENERAL SETTINGS FOR EXTENSIONS 
[general] 
static=yes 
writeprotect=no 
autofallthrough=yes 
clearglobalvars=no 
priorityjumping=no
 
 
; ************************************************************** 
; **  GLOBAL VARIABLES 
[globals]
 
;The below global variable is used for representing commas when invoking macros that write information to comma delimited format.
;This is a necessary workaround to keep Asterisk from interpreting comma as a "pipe" character.
COMMA=,
 
;The below global variable is used to set the caller ID name for outgoing calls.  This is not used in this dialplan.
CIDNAME=Jason T Coast
 
;The below channel variable is used to set the initial caller ID phone number for outgoing calls.  This can be changed using ext. 2222 in features context below.
CIDNUM=2049902283
 
;The below is used to set DYNAMIC_FEATURES as a global channel variable, which allows users to use features listed in features.conf.
DYNAMIC_FEATURES=delrecord#stoprecord#blackout#blindxfer#recordarc#recordnrs#recordwrs
 
;The below line is used to include the blacklist file.
#include blacklist.conf
 
;The below is the default starting context for all internal users.  It includes all other contexts.
[default]
include => users
include => blacklist
include => local
include => incoming
include => features
 
;The below context is used for incoming calls.
[incoming]
 
exten => _877XXXXXXX,1,Answer()
exten => _877XXXXXXX,n,Wait(.5)
exten => _877XXXXXXX,n,NoOp(incoming call)
exten => _877XXXXXXX,n,Playback(mainmenu)
exten => _877XXXXXXX,n,Dial(SIP/5000&SIP/5001,20,tw)
exten => _877XXXXXXX,n,VoiceMail(5000@default,u)
exten => _877XXXXXXX,n,Hangup()
 
exten => _0505,1,Answer()
exten => _0505,n,Wait(.5)
exten => _0505,n,NoOp(incoming call)
exten => _0505,n,Dial(SIP/3307,30,tw)
exten => _0505,n,VoiceMail(3307@default,u)
exten => _0505,n,Hangup()
 
exten => _0506,1,Answer()
exten => _0506,n,Wait(.5)
exten => _0506,n,NoOp(incoming call)
exten => _0506,n,Dial(SIP/3300,30,tw)
exten => _0506,n,VoiceMail(3300@default,u)
exten => _0506,n,Hangup()
 
exten => _0507,1,Answer()
exten => _0507,n,Wait(.5)
exten => _0507,n,NoOp(incoming call)
exten => _0507,n,Dial(SIP/3306,30,tw)
exten => _0507,n,VoiceMail(3306@default,u)
exten => _0507,n,Hangup()
 
;The below context contains internal extensions.  Take note of first two lines below.
[users]
 
;These two lines allow the "writecdr" macro to be used, which records the current call information in a comma delimited file.
exten => _30XX,1,Dial(SIP/${EXTEN},30,M(writecdr)TtwW)
exten => _31XX,1,Dial(SIP/${EXTEN},30,M(writecdr)TtwW)
 
 
exten => 3330,1,Dial(SIP/${EXTEN},30,M(writecdr)TtwW)
 
exten => 3599,1,Dial(SIP/${EXTEN},30,TtwW)
 
 
 
exten => 3200,1,Dial(SIP/${EXTEN},30,TtwW)
 
 
exten => 3201,1,NoOp(${CDR(src)})
exten => 3201,n,NoOp(${DIALEDNUM})
exten => 3201,n,Dial(SIP/${EXTEN},20,M(writecdr)TtwW)
 
exten => 3300,1,Dial(SIP/${EXTEN},20,TtwW)
exten => 3300,n,VoiceMail(${EXTEN}@default,u)
 
exten => 3301,1,Dial(SIP/${EXTEN},20,TtwW)
exten => 3301,n,VoiceMail(${EXTEN}@default,u)
 
exten => 3302,1,Dial(SIP/${EXTEN},20,TtwW)
exten => 3302,n,VoiceMail(${EXTEN}@default,u)
 
exten => 3303,1,Dial(SIP/${EXTEN},20,TtwW)
exten => 3303,n,VoiceMail(${EXTEN}@default,u)
 
exten => 3304,1,Dial(SIP/${EXTEN},20,TtwW)
exten => 3304,n,VoiceMail(${EXTEN}@default,u)
 
exten => 3305,1,Dial(SIP/${EXTEN},20,TtwW)
exten => 3305,n,VoiceMail(${EXTEN}@default,u)
 
exten => 3306,1,Dial(SIP/${EXTEN},20,TtwW)
exten => 3306,n,VoiceMail(${EXTEN}@default,u)
 
exten => 3307,1,Dial(SIP/${EXTEN},20,TtwW)
exten => 3307,n,VoiceMail(${EXTEN}@default,u)
 
exten => 5000,1,Dial(SIP/${EXTEN},20,TtwW)
 
exten => 5001,1,Dial(SIP/${EXTEN},20,TtwW)
 
include => incoming
include => blacklist
 
;The below context is the one and only context used for dialing outbound.  This is where most variables used in the dialplan are set.
[local]
 
exten => _NXXNXXXXXX,1,Set(CALLERID(num)=${CIDNUM})
exten => _NXXNXXXXXX,n,Set(__DIALEDNUM=${CDR(dst)})
exten => _NXXNXXXXXX,n,Set(MYCHANEXTEN=${CDR(channel):4:4})
exten => _NXXNXXXXXX,n,Set(MYCHANID=${CDR(channel)})
exten => _NXXNXXXXXX,n,System(echo "${DIALEDNUM}${COMMA}${MYCHANID}" > /var/spool/asterisk/CallsInProgress/${MYCHANEXTEN}.txt)
exten => _NXXNXXXXXX,n,SIPDtmfMode(rfc2833)
exten => _NXXNXXXXXX,n,Dial(Zap/G3/${EXTEN},90,TW)
 
 
include => blacklist
include => incoming
 
;The below context is used to add a phone number to blacklist.conf.  ( see features context below)
[manualblacklist]
exten => s,1,Answer()
exten => s,n,Wait(.5)
exten => s,n,Goto(begin)
exten => s,n(blreadstart),NoOp(added ${blnum} to blacklist)
exten => s,n(begin),NoOp(begin BL application)
exten => s,n,Background(enter-num-blacklist)
exten => s,n,Read(blnum,,10)
exten => s,n,GotoIf($[ ${blnum} < 201200000 ]?unsuccessful:successful)
exten => s,n(successful),NoOp(user entered all ten digits to blacklist)
exten => s,n,System(echo "exten => _${blnum}${COMMA}1${COMMA}Hangup()" >> /etc/asterisk/blacklist.conf)
exten => s,n,Playback(beep)
exten => s,n,Goto(blreadstart)
exten => s,n(unsuccessful),NoOp(user did not enter all ten digits to blacklist)
exten => s,n,Playback(oops1)
exten => s,n,Playback(you-dialed-wrong-number)
exten => s,n,Playback(please-try-again)
exten => s,n,Goto(blreadstart)
 
;The below macro adds the phone number of the party which dialed into blacklist.conf. (see features.conf)
[macro-blockout]
exten => s,1,System(echo "exten => _${DIALEDNUM}${COMMA}1${COMMA}Hangup()" >> /etc/asterisk/blacklist.conf)
exten => s,n,Playback(beep)
exten => s,n,Wait(3)
exten => s,n,System(/usr/sbin/asterisk -rx "extensions reload")
 
;The below macro is used to record a conversation, for the ARC group. (see features.conf)
[macro-arcrecord]
exten => s,1,Playback(beep)
exten => s,n,NoOp(RECORDING ${DIALEDNUM})
exten => s,n,NoOp(${CDR(dst)})
exten => s,n,MixMonitor(/var/spool/asterisk/monitor/arc/${DIALEDNUM}.wav,bW(3))
exten => s,n,Set(_wdir=arc)
 
;The below macro is used to record a conversation, for the WRS group. (see features.conf)
[macro-wrsrecord]
exten => s,1,Playback(beep)
exten => s,n,NoOp(RECORDING ${DIALEDNUM})
exten => s,n,NoOp(${CDR(dst)})
exten => s,n,MixMonitor(/var/spool/asterisk/monitor/wrs/${DIALEDNUM}.wav,bW(3))
exten => s,n,Set(_wdir=wrs)
 
;The below macro is used to record a conversation, for the NRS group. (see features.conf)
[macro-nrsrecord]
exten => s,1,Playback(beep)
exten => s,n,NoOp(RECORDING ${DIALEDNUM})
exten => s,n,NoOp(${CDR(dst)})
exten => s,n,MixMonitor(/var/spool/asterisk/monitor/nrs/${DIALEDNUM}.wav,bW(3))
exten => s,n,Set(_wdir=nrs)
 
;The below macro is used to stop recording. (see features.conf)
[macro-stopmon]
exten => s,1,Playback(beep)
exten => s,n,NoOp(STOP RECORDING of ${DIALEDNUM})
exten => s,n,StopMixMonitor()
 
;The below macro is used to delete a recording file.  (see features.conf)
[macro-delmon]
exten => s,1,Wait(1)
exten => s,n,Playback(beep)
exten => s,n,StopMixMonitor()
exten => s,n,Wait(1)
exten => s,n,NoOp(DELETE RECORDING ${DIALEDNUM} in ${wdir})
exten => s,n,System(rm -f /var/spool/asterisk/monitor/${wdir}/${DIALEDNUM}.wav)
 
;This macro is launched with the Dial() function when a user transfers a call.  I is used to write to a comma delimited text file, to a local folder that is shared via Samba.
;This macro records the variables for number dialed, SIP- channel ID, and writes the text file named by the extension the call was transferred to. (ie. 3001.txt)
[macro-writecdr]
exten => s,1,NoOp(${CDR(channel)})
exten => s,n,NoOp(${DIALEDNUM})
exten => s,n,NoOp(WRITE CDR TO FILE)
exten => s,n,Set(MYCHANEXTEN=${CDR(channel):4:4})
exten => s,n,System(echo "${DIALEDNUM}${COMMA}${CDR(channel)}" > /var/spool/asterisk/CallsInProgress/${MYCHANEXTEN}.txt)
 
[features]
;Below is used to spy on a SIP extension channel.
exten => 1111,1,Answer()
exten => 1111,n,Wait(1)
exten => 1111,n,Authenticate(8899,a)
exten => 1111,n,Playback(pin-number-accepted)
exten => 1111,n,Wait(1)
exten => 1111,n,Background(beep)
exten => 1111,n,Read(Zapchan,,4)
exten => 1111,n,ChanSpy(SIP/${Zapchan},q)
 
;Below is used to record main menu greeting.
exten => 9999,1,Answer()
exten => 9999,n,Wait(.5)
exten => 9999,n,Authenticate(0000,a)
exten => 9999,n,Record(/var/lib/asterisk/sounds/mainmenu.gsm,,40)
exten => 9999,n(playback),NoOp(playing recorded menu)
exten => 9999,n,Playback(mainmenu)
exten => 9999,n,Background(to-accept-recording)
exten => 9999,n,Background(press-1)
exten => 9999,n,Background(to-rerecord-it)
exten => 9999,n,Background(press-2)
exten => 9999,n,Read(numpress,,1,,2,10)
exten => 9999,n,GotoIf($[${numpress} = 1]?exit:9999,4)
exten => 9999,n(exit),Background(goodbye)
exten => 9999,n,Hangup()
 
;Below is used to get into the main voicemail application
exten => 5555,1,Answer()
exten => 5555,n,Wait(.5)
exten => 5555,n,SIPDtmfMode(rfc2388)
exten => 5555,n,VoicemailMain(@default)
 
;Below is used to jump to the manual blacklist feature context above..., at extension S, priority 1.
exten => 9000,1,Goto(manualblacklist,s,1)
 
;Below is used to change the global variable CID. This allows users to dial ext. 2222 and change the outgoing caller ID display at any time.
exten => 2222,1,Answer()
exten => 2222,n,Wait(.5)
exten => 2222,n(ecidnumstart),NoOp(User changing CID variable)
exten => 2222,n,Playback(beep)
exten => 2222,n,Read(ecidnum,,10)
exten => 2222,n,GotoIf($[ ${ecidnum} < 201200000 ]?unsuccessful:successful)
exten => 2222,n(successful),NoOp(user entered all ten digits to blacklist)
exten => 2222,n,SetGlobalVar(CIDNUM=${ecidnum})
exten => 2222,n,Playback(beep)
exten => 2222,n,Hangup()
exten => 2222,n(unsuccessful),NoOp(user entered invalid phone number)
exten => 2222,n,Playback(oops1)
exten => 2222,n,Playback(you-dialed-wrong-number)
exten => 2222,n,Playback(please-try-again)
exten => 2222,n,Goto(ecidnumstart)
exten => 2222,n,Hangup()

Open in new window


Below is my Features.conf file, without the quotes.

Note the [applicationmap] toward the bottom...that is what allows the macros to fire that invoke recording.
;
; Sample Call Features (parking, transfer, etc) configuration
;
[general]
parkext => 700
parkpos => 701-720
 
 
context => parkedcalls
;parkingtime => 45
 
courtesytone = beep
 
 
;parkedplay = caller
 
;adsipark = yes
;findslot => next
 
;parkedmusicclass=default
 
 
 
transferdigittimeout => 3000
 
xfersound = beep
xferfailsound = beeperr
;pickupexten = #8
featuredigittimeout = 3500
 
atxfernoanswertimeout = 60
 
; Note that the DTMF features listed below only work when two channels have answered and are bridged together.
; They can not be used while the remote party is ringing or in progress. If you require this feature you can use
; chan_local in combination with Answer to accomplish it.
 
[featuremap]
blindxfer => #
;disconnect => #9
automon => *0
atxfer => *1
;parkcall => #72                ; Park call (one step parking)
 
 
[applicationmap]
 
recordarc => *3,caller,macro,arcrecord
 
recordnrs => *4,caller,macro,nrsrecord
 
recordwrs => *2,caller,macro,wrsrecord
 
stoprecord => *5,caller,macro,stopmon
 
delrecord => *7,caller,macro,delmon
 
blackout => *9,caller,macro,blockout

Open in new window


Reward 1Reward 2Reward 3Reward 4Reward 5Reward 6

EARN REWARDS FOR ASKING, ANSWERING, AND MORE.

Earn free swag for participating on the platform.


XUSERX2000,

a couple more questions if I may..

In your example:

exten => 2222,n,GotoIf($["${Q4}" = "1"]?Q5START)

Is there any boolean syntax where I can just code valid responses 1-5 in one line of code to go to Q5START?

Is it necessary to have the DTMF answer in double quotes?

I assume I can use the * DTMF as a valid answer or is this a reserved DTMF code.  I'd like to use it for someone to backup a question.

Lastly, pardon if this is a very basic question, but what command or parameter can I use to allow someone to enter a DTMF code while a audio file is playing.  In those scenarios where you can say, at any time you can hit the * key to move back a menu.

oh...sorry ...you are right... you don't need double quotes...
exten => 2222,n,GotoIf($[${Q4} = 1]?Q5START)  <<<<<that should work.

The only way to use a boolean method would be like this...
exten => 2222,n,GotoIf($[${Q4} =< 5]?Q5START)   <<<<<which says any number equal to or less than 5...however that would include 0 as a valid response so in this case it won't work since 0 is not a valid option.

The * key + a number is most often used for features...not usually responses to IVR's.  The reason I would say don't use *, is that it causes a delay....there are built in * key combos in asterisk..."not sure about trixbox"...but basically what happes is you press *, and asterisk waits about 1.5 seconds for another digit to follow before processing just a *.  You can disable those features which use a star, but I wouldn't recommend it.

I would use numbers 1-5 as your responses...and use 0 to backup.
When you use ...,n,Background(question5.wav).... this plays the file in the backgroud allowing key presses at any time.  If you used ...n,Playback(question5.wav)...that would play the question in it's entirety before allowing/reading key presses.

I guess you could do it in 2 lines though...

exten => 2222,n,GotoIf($[${Q4} = 0]?Q4START)
exten => 2222,n,GotoIf($[${Q4} =< 5]?Q5START)

exten => 2222,n,Playback(invalidentry.wav)
exten => 2222,n,NoOp(User entered invalid info, restart Question 4)
exten => 2222,n,Goto(Q4START)

Free T-shirt

Get a FREE t-shirt when you ask your first question.

We believe in human intelligence. Our moderation policy strictly prohibits the use of LLM content in our Q&A threads.


Again thanks.  If I may, I'd like to pick your brain on a couple more scenarios.  I'd be more than happy to provide another 500 points if I can do so without opening another question.    Here are a couple features that I need to work on.

1.  When an inbound call is answered by my IVR campaign, I'd like to parse a text file to see if a 7 digit number exists before letting them into the survey.  Can you direct me to some samples that will parse an entire file (plain ascii text file) and look for the occurrence of a 7 digit number that the caller enters at the beginning of a survey IVR.

As an example.  "please enter your 7 digit customer number followed by the # button".  Store that number in a variable then parse a file and if it matches the record continue with the IVR.

2.  I need to make a recording in the IVR and then rename that recording to the 7 digit number plus the question number.   Say in Question 4 we ask them to tell us about their recent service experience at a dealership.   I'd like to make a recording and call it the Q4-"7 digit number".

3.  Lastly, I'd need to write out the recording name to the record.  This will allow us to listen to the recording and transcribe the audio to text and merge the records post processing.

Anyway, any samples on the above would be appreciated and if you'd like.  I'll open another question up and just award you the 500 points in there.   In the mean time, I'll see if I can just award you more points on this question... say a 1000 or so.  :)

Thanks again
Voice Over IP

Voice Over IP

--

Questions

--

Followers

Top Experts

Voice over IP (VoIP) is a methodology and group of technologies for the delivery of voice communications and multimedia sessions over Internet Protocol (IP) networks, such as the Internet. Other terms commonly associated with VoIP are IP telephony, Internet telephony, broadband telephony, and broadband phone service. The term specifically refers to the provisioning of communications services (voice, fax, SMS, voice-messaging) over the public Internet, rather than via the public switched telephone network (PSTN). Examples of the VoIP protocols are H.323, Media Gateway Control Protocol (MGCP), Session Initiation Protocol (SIP), H.248 (also known as Media Gateway Control (Megaco)), Real-time Transport Protocol (RTP), Real-time Transport Control Protocol (RTCP), Secure Real-time Transport Protocol (SRTP), Session Description Protocol (SDP), and Inter-Asterisk eXchange (IAX).