We've Moved! Please visit our new and improved forum over at our new portal: https://portal.plumvoice.com/hc/en-us/community/topics
ASP.Net Support
current limitation of the trunks the IVR platform is using
Hi,
There is no way to get the local number associated with the session.telephone.dnis. This is due to the current limitation of the trunks the IVR platform is using. However, for production accounts, toll-free numbers are given, which provide you with the full 10-digit DNIS. These toll-free numbers run over separate trunk lines.
Regards,
Plum Support
There is no way to get the local number associated with the session.telephone.dnis. This is due to the current limitation of the trunks the IVR platform is using. However, for production accounts, toll-free numbers are given, which provide you with the full 10-digit DNIS. These toll-free numbers run over separate trunk lines.
Regards,
Plum Support
Last edited by support on Mon Dec 28, 2009 3:51 pm, edited 1 time in total.
Plum Support
http://www.plumvoice.com
http://www.plumvoice.com
-
- Posts: 55
- Joined: Wed Oct 31, 2007 11:02 am
Alright i just have to changed it programmatically in code behind while i am in development mode
Can you check out this code
I am getting "Error .Semantic .ECMAType" What is wrong with the grammer?
Thanks
Allan
Can you check out this code
Code: Select all
<?xml version="1.0"?>
<vxml version="2.0">
<form id="asdfadsF">
<field name="confirm" type="boolean">
<prompt>
Say Yes or No
</prompt>
<grammar type="application/x-jsgf" mode="voice">
( yes | no )
</grammar>
</field>
<filled namelist="confirm" mode="all">
<if cond="confirm">
You said Yes
<else />
You said No
</if>
</filled>
</form>
</vxml>
Thanks
Allan
IVR code should not contain built-in and inline grammar
Hi,
The reason why you are getting this IVR error is because you are specifying both a built-in IVR grammar (type="boolean") and an inline IVR grammar (the code using the grammar tags). Since you are already specifying a built-in grammar, I would just remove the inline IVR grammar. So, your IVR code should look like this:
Regards,
Plum Support
The reason why you are getting this IVR error is because you are specifying both a built-in IVR grammar (type="boolean") and an inline IVR grammar (the code using the grammar tags). Since you are already specifying a built-in grammar, I would just remove the inline IVR grammar. So, your IVR code should look like this:
Code: Select all
<?xml version="1.0"?>
<vxml version="2.0">
<form id="asdfadsF">
<field name="confirm" type="boolean">
<prompt>
Say Yes or No
</prompt>
</field>
<filled namelist="confirm" mode="all">
<if cond="confirm">
You said Yes
<else />
You said No
</if>
</filled>
</form>
</vxml>
Plum Support
Last edited by support on Fri Feb 26, 2010 11:02 am, edited 4 times in total.
Plum Support
http://www.plumvoice.com
http://www.plumvoice.com
-
- Posts: 55
- Joined: Wed Oct 31, 2007 11:02 am
One long question please bare with me ill try and be clear
First the code
Code - Behind
Here is what i need it to do.
1) I need it to list the specialties a user has. The list is dynamically built and it has the form of "101,Specialty1 104,Specialty2, 105,Specialty3, etc. Note that for this example user already has specialty 102 and 103. Along with the specialty the caller is prompted that he/she can repeat the list by press 1 or saying again, talk to an operator by pressing 2 or saying operator, or go back to the specialty menu by pressing 9 or saying specialty.
Example
"You may advertise any specialty by speaking its name or pressing the three digit code you will hear before each name. Press 9 at any time to return to the Specialties menu"
"101,Welder" "103,Shop" "105,Testing and Balancing"
"To Repeat the list say AGAIN or press 1. If you have a specialty that did not appear on the list say OPERATOR or press 2 for immediate assistance. Say Main Menu or press star to exit specialties"
If caller say 1 or again it will repeat from the top, If caller say 2 or operator it will connect to operator, if caller press * will go back to specialty menu.
if caller does not press 101, 103, or 105 or does not utter Welder, Shop or Testing and Balancing it will prompt that it could not find specialty and repeat from the top
if they press or say one of those thing it will go to the next form.
Problem. I think the problem is that my <option> is not getting recognized or the use of <grammer> syntax is wrong.
While i wait for your response. I will try and reorder my statements.
Thanks
Allan
First the code
Code: Select all
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SpecialtyAdd.aspx.cs" Inherits="Braveline.WRS.Voice.SpecialtyAdd" %>
<?xml version="1.0" encoding="UTF-8" ?>
<vxml version="2.0" application="AppRoot.vxml">
<meta name="maintainer" content="<%=Braveline.WRS.BusinessObjects.Globals.IVR.IVRMaintainer%>" />
<script>
<![CDATA[
function getSpecialtyUID(specialtyValue)
{
specialtyValue=specialtyValue.replace(/'/gi, "");
var arrStatus=specialtyValue.split(",");
return arrStatus[0];
}
function getSpecialty(specialtyValue)
{
specialtyValue=specialtyValue.replace(/'/gi, "");
var arrStatus=specialtyValue.split(",");
if( arrStatus.length > 1 )
return arrStatus[1];
else
return "Error";
}
]]>
</script>
<form id="frmIntro">
<block>
<% if (NumOfSpecialties == 0)
{ %>
<audio src="audio/Prophecy/ThereAreNoMoreSpecialtiesYouCanAdd_Prophecy.wav" fetchhint="prefetch">
There are no more specialties that you can add at this time
</audio>
<goto next="SpecialtyManagement.aspx"></goto>
<% } %>
</block>
<field name="whichSpecialty" type="digits?maxlength=3">
<prompt bargein="true">
<audio src="audio/Prophecy/SelectSpecialty_Prophecy.wav" fetchhint="prefetch">
You may advertise any specialty by speaking its name or pressing the three digit code you will hear before each name. Press 9 at any time to return to the Specialties menu
</audio>
<%Response.Write(Prompt);%>
<% if (OperationalHours == true)
{ %>
<audio src="audio/Prophecy/RepeatSpecialtyList_Prophecy.wav" fetchhint="prefetch">
To Repeat the list say AGAIN or press 1. If you have a specialty that did not appear on the list say OPERATOR or press 2 for immediate assistance. Say Main Menu or press star to exit specialties
</audio>
<% } else { %>
<audio src="audio/Prophecy/ToRepeatTheListSayAgainOrPressOne_Prophecy.wav" fetchhint="prefetch">
To repeat the list, say AGAIN or press 1. If you have a specialty that did not appear in the list, Please call back between 9 am and 8 pm for operator assistance. Say Main Menu or press * to exit specialties
</audio>
<% } %>
</prompt>
<%Response.Write(OptionList);%>
<grammar type="text/gsl">
<![CDATA[[
[again] { <whichSpecialty "again"> }
[operator] { <whichSpecialty "operator"> }
[specialty] { <whichSpecialty "specialty"> }
]]]>
</grammar>
</field>
<block>
<if cond="getSpecialty(whichSpecialty) == 'Error'">
<audio src="audio/Prophecy/ThereIsNoMatchForThatSpecialty_Prophecy.wav" fetchhint="prefetch">
There is no match for that specialty
</audio>
<goto next="SpecialtyAdd.aspx"></goto>
</if>
</block>
<filled namelist="whichSpecialty" mode="all">
<if cond="whichSpecialty == '1'">
<goto next="#frmIntro"></goto>
</if>
<if cond="whichSpecialty == 'again'">
<goto next="#frmIntro"></goto>
</if>
<if cond="whichSpecialty == '2'">
<goto next="OperatorMenu.aspx"></goto>
</if>
<if cond="whichSpecialty == 'operator'">
<goto next="OperatorMenu.aspx"></goto>
</if>
<if cond="whichSpecialty == '9'">
<goto next="SpecialtyManagement.aspx"></goto>
</if>
<if cond="whichSpecialty == 'specialty'">
<goto next="SpecialtyManagement.aspx"></goto>
</if>
<%Response.Write(DtmfList);%>
</filled>
<field name="confirm" slot="confirm">
<prompt>
<audio src="audio/ConfirmAddSpecialty_beforeD_Prophecy.wav" fetchhint="prefetch">
You are Adding
</audio>
<value expr="getSpecialty(whichSpecialty)" />
<audio src="audio/Prophecy/ConfirmAddSpecialty_afterD_Prophecy.wav" fetchhint="prefetch">
to your advertised specialties. Say ADD or press 1 to continue. Say Cancel or press 2 to hear more specialties instead
</audio>
</prompt>
<grammar type="text/gsl">
<![CDATA[[
[add] { <confirm "yes"> }
[cancel] { <confirm "no"> }
]]]>
</grammar>
<grammar type="text/gsl">
<![CDATA[[
[dtmf-1] { <confirm "yes"> }
[dtmf-2] { <confirm "no"> }
]]]>
</grammar>
</field>
<filled namelist="whichSpecialty confirm" mode="all">
<if cond="confirm == 'yes'">
<assign name="specialtyUID" expr="getSpecialtyUID(whichSpecialty)" />
<assign name="specialtyName" expr="getSpecialty(whichSpecialty)" />
<audio src="audio/Prophecy/PleaseWaitWhileWeUpdateInfo_Prophecy.wav" fetchhint="prefetch">
Please wait while we update your information
</audio>
<submit next="SpecialtyAdd.aspx#frmUpdate" method="post" namelist="confirm specialtyUID specialtyName"></submit>
<else />
<audio src="audio/Prophecy/YouDidNotAddTheSpecialty_Prophecy.wav" fetchhint="prefetch">
You did not add the Specialty
</audio>
<clear namelist="whichSpecialty confirm" />
<goto next="SpecialtyAdd.aspx"></goto>
</if>
</filled>
</form>
<form id="frmUpdate">
<log expr="'************Updating Member Specialty List**********'" label="trace:?level=VD_INFO"/>
<block>
<audio src="audio/Prophecy/YourSpecialtyHasNowBeenUpdated_Prophecy.wav" fetchhint="prefetch">
Your Specialty has now been updated
</audio>
<goto next="SpecialtyManagement.aspx"></goto>
</block>
</form>
</vxml>
Code: Select all
public partial class SpecialtyAdd : System.Web.UI.Page
{
public string Prompt = "";
public string OptionList = "";
public bool OperationalHours = false;
public string DtmfList = "";
public int NumOfSpecialties = 0;
protected UnionMember CurrentMember = null;
protected void Page_Load(object sender, EventArgs e)
{
string callSessionId = MemberController.GetCallSessionID();
CurrentMember = MemberController.GetCurrentMember(callSessionId);
if (!Page.IsPostBack)
{
this.BuildIntro();
MemberController.LogMemberCallActivity(callSessionId, "Retrieved Specialty List Information Successfully");
}
if (Request.Form["specialtyUID"] != null && Request.Form["specialtyName"] != null)
{
int specialtyId = int.Parse(Request.Form["specialtyUID"].Trim());
string specialtyName = Request.Form["specialtyName"].Trim().Replace("'", "");
int result = MemberController.AddNewSpecialty(CurrentMember.ID, specialtyId );
if (result > 0)
{
MemberController.RefreshMemberSessionData(callSessionId);
MemberController.LogMemberCallActivity(callSessionId, "Successfully Added the Specialty " + specialtyName + " to the List");
}
else
{
MemberController.LogMemberCallActivity(callSessionId, "Failed to Add Specialty");
}
}
}
protected void BuildIntro()
{
StringBuilder prompt = new StringBuilder();
StringBuilder options = new StringBuilder();
StringBuilder dtmf = new StringBuilder();
List<Specialty> specList = MemberController.GetSpecialtyActiveIVR( CurrentMember.ID );
NumOfSpecialties = specList.Count;
if (specList.Count == 0)
{
Prompt = "There are currently no Specialty that is posted on the Interactive Voice System";
return;
}
foreach (Specialty sp in specList)
{
string specialtyName = sp.IVRSpecialtyName != String.Empty ? sp.IVRSpecialtyName : sp.SpecialtyName;
specialtyName = specialtyName.Replace("/", " ");
specialtyName = specialtyName.Replace("-", " ");
specialtyName = specialtyName.Replace("&", " and ");
int keyPress = sp.SpecialtyIVRCode;
prompt.Append("<break time=\"750\"/><say-as interpret-as=\"number\" format=\"digits\">" + keyPress + "</say-as><break time=\"500\"/>" + specialtyName);
options.Append(@"<option dtmf=""" + keyPress + @""" value=""'" + sp.SpecialtyID.ToString() + "," + specialtyName.Replace("&", " and ") + @"'""" + @">" + specialtyName.Replace("&", " and ") + "</option>");
dtmf.Append("<if cond=\"whichSpecialty == '" + keyPress + "'\">" + "<assign name=\"whichSpecialty\" expr=\"'" + sp.SpecialtyID + "," + specialtyName + "'\" /></if>");
}
DateTime start = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 9, 0, 0);
DateTime end = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 20, 0, 0);
if (DateTime.Compare(start, DateTime.Now) < 0 && DateTime.Compare(end, DateTime.Now) > 0)
OperationalHours = true;
else
OperationalHours = false;
DtmfList = dtmf.ToString();
Prompt = prompt.ToString();
OptionList = options.ToString();
}
}
Here is what i need it to do.
1) I need it to list the specialties a user has. The list is dynamically built and it has the form of "101,Specialty1 104,Specialty2, 105,Specialty3, etc. Note that for this example user already has specialty 102 and 103. Along with the specialty the caller is prompted that he/she can repeat the list by press 1 or saying again, talk to an operator by pressing 2 or saying operator, or go back to the specialty menu by pressing 9 or saying specialty.
Example
"You may advertise any specialty by speaking its name or pressing the three digit code you will hear before each name. Press 9 at any time to return to the Specialties menu"
"101,Welder" "103,Shop" "105,Testing and Balancing"
"To Repeat the list say AGAIN or press 1. If you have a specialty that did not appear on the list say OPERATOR or press 2 for immediate assistance. Say Main Menu or press star to exit specialties"
If caller say 1 or again it will repeat from the top, If caller say 2 or operator it will connect to operator, if caller press * will go back to specialty menu.
if caller does not press 101, 103, or 105 or does not utter Welder, Shop or Testing and Balancing it will prompt that it could not find specialty and repeat from the top
if they press or say one of those thing it will go to the next form.
Problem. I think the problem is that my <option> is not getting recognized or the use of <grammer> syntax is wrong.
While i wait for your response. I will try and reorder my statements.
Thanks
Allan
IVR Platform recognizes SRGS+XML grammars or JSGF grammars
Hi,
Looking at your IVR code, it appears that you are using GSL grammars. This is shown in these lines:
However, the Plum Voice Platform only recognizes SRGS+XML grammars or JSGF grammars. You should rewrite your IVR code to use either SRGS+XML or JSGF grammars.
Regards,
Plum Support
Looking at your IVR code, it appears that you are using GSL grammars. This is shown in these lines:
Code: Select all
<grammar type="text/gsl">
<![CDATA[[
[again] { <whichSpecialty "again"> }
[operator] { <whichSpecialty "operator"> }
[specialty] { <whichSpecialty "specialty"> }
]]]>
</grammar>
Regards,
Plum Support
Last edited by support on Fri Feb 19, 2010 1:54 pm, edited 3 times in total.
Plum Support
http://www.plumvoice.com
http://www.plumvoice.com
-
- Posts: 55
- Joined: Wed Oct 31, 2007 11:02 am
-
- Posts: 55
- Joined: Wed Oct 31, 2007 11:02 am
Is there a way to initiate a call into the plum network from a web page.
Lets say an operator uses a web application. The operator clicks on an image to initiate a call. Then the application would then call the person if the person picks up the he/she is connected to operator and this call would then be recorded
Would this be possible through plum
Thanks
Allan
Lets say an operator uses a web application. The operator clicks on an image to initiate a call. Then the application would then call the person if the person picks up the he/she is connected to operator and this call would then be recorded
Would this be possible through plum
Thanks
Allan
-
- Posts: 55
- Joined: Wed Oct 31, 2007 11:02 am
Contact IVR account manager to activate Outbound
Hi,
You can use the Plum IVR Outbound system to perform this task.
For more information, you can go here:
http://www.plumvoice.com/docs/dev/plumd ... nddevguide
If IVR Outbound is not enabled for your account, you should contact your IVR account manager to get this activated.
Regards,
Plum Support
You can use the Plum IVR Outbound system to perform this task.
For more information, you can go here:
http://www.plumvoice.com/docs/dev/plumd ... nddevguide
If IVR Outbound is not enabled for your account, you should contact your IVR account manager to get this activated.
Regards,
Plum Support
Last edited by support on Fri Feb 26, 2010 11:02 am, edited 5 times in total.
Plum Support
http://www.plumvoice.com
http://www.plumvoice.com
-
- Posts: 55
- Joined: Wed Oct 31, 2007 11:02 am
Thanks
I was looking at this particular page.
would the login and PIN be my username and password?
would this the correct syntax for the http call
Allan
I was looking at this particular page.
would the login and PIN be my username and password?
would this the correct syntax for the http call
Code: Select all
http://outbound.plumgroup.com/webservice/queuecall.php?login=username;pin=password;start_url=http://something/callbridge.aspx
Use outbound with IVR account
Hi,
If you go to "Outbound Tools" and IVR Outbound is enabled for your IVR account, you should see your login and PIN number.
Finally, you should use POST variables, not GET variables in your HTTP call.
Hope this helps.
Regards,
Plum Support
If you go to "Outbound Tools" and IVR Outbound is enabled for your IVR account, you should see your login and PIN number.
Finally, you should use POST variables, not GET variables in your HTTP call.
Hope this helps.
Regards,
Plum Support
Last edited by support on Fri Feb 26, 2010 11:03 am, edited 2 times in total.
Plum Support
http://www.plumvoice.com
http://www.plumvoice.com
-
- Posts: 55
- Joined: Wed Oct 31, 2007 11:02 am
I will be doing a post
code is going to be something like this
do you see anything here that would cause problems
Allan
code is going to be something like this
Code: Select all
// Make the outbound call
Globals.IVR.HttpCallUrl = "http://outbound.plumgroup.com/webservice/queuecall.php?"
string callParameters = "login=username&pin=password&start_url=http://something/callbridge.aspx"
string httpCallUrl = Globals.IVR.HttpCallUrl + callParameters;
// Send web request to IVR
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(httpCallUrl);
objRequest.Method = "POST";
objRequest.ContentType = "application/x-www-form-urlencoded";
objRequest.KeepAlive = false;
Allan
IVR developers do not have an ASP expert
Hi,
We can't be too sure if that IVR code is going to work or not, since we mostly answer VXML-related questions and unfortunately, we do not have anyone on staff who is an ASP expert.
However, just to mention it again, the pin is not equal to the password for your IVR hosting account. The pin should be an 8 digit number located on your "Outbound Tools" page.
Regards,
Plum Support
We can't be too sure if that IVR code is going to work or not, since we mostly answer VXML-related questions and unfortunately, we do not have anyone on staff who is an ASP expert.
However, just to mention it again, the pin is not equal to the password for your IVR hosting account. The pin should be an 8 digit number located on your "Outbound Tools" page.
Regards,
Plum Support
Last edited by support on Fri Feb 26, 2010 11:04 am, edited 2 times in total.
Plum Support
http://www.plumvoice.com
http://www.plumvoice.com
-
- Posts: 55
- Joined: Wed Oct 31, 2007 11:02 am
i am getting an unknown error
how would someone write the url to post to queuecall?
??
Allan
how would someone write the url to post to queuecall?
Code: Select all
http://outbound.plumgroup.com/webservice/queuecall.php?login=mylogin&pin=mypin&phone_number=numbertocall&start_url=url
Allan
IVR clarification
Hi,
With the IVR application, you cannot write a URL to POST these variables. You need an intermediary page that performs the POST either using your web browser or by using ASP.
Regards,
Plum Support
With the IVR application, you cannot write a URL to POST these variables. You need an intermediary page that performs the POST either using your web browser or by using ASP.
Regards,
Plum Support
Last edited by support on Mon Dec 28, 2009 4:00 pm, edited 2 times in total.
Plum Support
http://www.plumvoice.com
http://www.plumvoice.com