Author Message
MikeMastro
Joined: Apr 1, 2021
Messages: 5
Offline
I am looking for a document or a response as to how to pass an "Exit VDN" from the application to an Event Handler upon system failure.

Currently we have an application that performs the same function for 5 different Lines of Business (LOB) based upon DNIS. We are experiencing a situation where the AEP flags a system error on retrieving a VXML page (network issue) and proceeds to the "DEFAULT" Event Handler that plays the default error message and then HANGS UP!

Since this is one application, that transfers to different LOBs based upon DNIS, doing a basic transfer within the event handler will not work because it is assigned to the application and therefore can only select 1 exit VDN.

SO I am looking to modify the Event Handler to get the EXIT VDN from a system / Session variable that the application can set for this to work correctly.

Thank you in advance for your help.

WilsonYu
Joined: Nov 6, 2013
Messages: 3950
Offline
There is nothing you can do on the app server side if the network connection is broken between the voice browser and the app server. You would need to modify the default handler on the platform side. You could get the exit VDN from the session variable in the browser using Ecmascript/javascript.
MikeMastro
Joined: Apr 1, 2021
Messages: 5
Offline
Thank you Wilson for your reply.

I understand that we need to modify the Event Handler on the MPP.

We are trying to pass the transfer VDN from the Application to the event handler. It needs to be a variable.

We are looking for sample code on the application as well as the event handler - or - a document that explains it.

I see many posts on this for a while ago, but I have not found anything for current AEP 7.0+

are we to use "session.avaya namespace properties" (telephone.DNIS) and create logic in the event handler to determine which of the 7 VDNs to transfer to based upon the DNIS... prefer not, because this creates seperate logic form the application for future support.

- or -

are we to set the "AvayaExitReason, AvayaExitInfo1, etc" properties from within the application so that the Error Handler can (transfer=AvayaExitReason1) and let the application maintain the logic and keep the event handler simple. ***PREFERRED***

- Or -

Is there a way to define our own ExitVDN variable


So, is there sample code that shows the right way to do this?
WilsonYu
Joined: Nov 6, 2013
Messages: 3950
Offline
You can configure the exit_* variable fields of the session variable dynamically/programmatically in OD and OD will automatically send the values when formulating the <exit> vxml for the voice browser. There is an element called "Exit" in available in the Approot node for handling events. If you need to use these variable fields in a custom way, I imagine you would have to embed some script in the an event handler in the approot. I am not sure how you would do that in OD. Approot is the only node you can do it when something goes wrong in the communication between the voice browser and the appserver.
MikeMastro
Joined: Apr 1, 2021
Messages: 5
Offline
Wilson,

My developer said he is using the session object to get the DNIS value within the VXML event handler section and it seems to be the solution.

Can you please confirm that this is an good alternative as it seems to work. We will be testing on the prod system tomorrow.

FYI,

We will post the code after we confirm it works. but it seems that the "GOTO" command to execute the transfer.vxml subroutine file no longer works in V7 and we had to use "SUBMIT". Can you also confirm about this?

Thank you.
Mike
WilsonYu
Joined: Nov 6, 2013
Messages: 3950
Offline
You have to show me the code with the session object. and the vxml event handler.
You seem to be doing a bit of custom code. When you talk about Goto and transfer.vxml, you are not talking Orchestration Designer. The Goto element in OD is translated into a Submit so that it can go to another from in another vxml (which involves a request to) on the app server. But the Goto element in vxml (if you hand code it) allows you to go to another form within the same vxml. I have no idea how the behavior changed for you. OD hasn't changed.
MikeMastro
Joined: Apr 1, 2021
Messages: 5
Offline
Wilson, this is what the we did and it worked when we killed the AP Server in the middle of a call or it was DOA when the call arrived.

Asy issues that we are not seeing?


Event Handler:

<catch event=''>
<if cond='(_event != undefined) && (undefined != _message)'>
<log>Error: <value expr='_event'/>, <value expr='_message'/></log>
<else/>
<log>Error: <value expr='_event'/></log>
</if>
<prompt xml:lang="en-US">
<audio src="system_failed.wav">
The system is experiencing technical difficulties. Please try again later.
</audio>
</prompt>

<submit next="file:///opt/Avaya/ExperiencePortal/MPP/web/handlers/transfer1.vxml" method="post" />
....

*****************************

Transfer1.vxml

<?xml version="1.0" encoding="UTF-8"?>
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
<catch>
<log>Caught Event: <value expr="_event"/>
</log>
<exit/>
</catch>

<form id="transfercall">

<var name="dnis" expr="session.telephone.dnis"/>
<block>
<prompt xml:lang="en-US">
<audio src="Xfer_2.wav">
Please hold while we transfer your call to the next available customer service advocate.
</audio>
</prompt>

<if cond="dnis=='7001'" >
<goto next="#F_First_App"/>

<elseif cond="dnis=='7002'" />
<goto next="#F_Second_App"/>

<elseif cond="dnis=='7003'" />
<goto next="#F_Third_App"/>

<elseif cond="dnis=='7004'" />
<goto next="#F_Fourth_App"/>

<elseif cond="dnis=='7005'" />
<goto next="#F_Fifth_App"/>

<elseif cond="dnis=='7006'" />
<goto next="#F_Sixth_App"/>

<elseif cond="dnis=='7007'" />
<goto next="#F_Seventh_App"/>

<else/>
<goto next="#F_Default"/>
</if>
</block>
</form>

<form id="F_First_App">
<transfer name="T_First_App" dest="tel:6001" connecttimeout="5s" bridge="false" />
</form>

<form id="F_Second_App">
<transfer name="T_Second_App" dest="tel:6002" connecttimeout="5s" bridge="false" />
</form>

<form id="F_Third_App">
<transfer name="T_Third_App" dest="tel:6003" connecttimeout="5s" bridge="false" />
</form>

<form id="F_Fourth_App">
<transfer name="T_Fourth_App" dest="tel:6004" connecttimeout="5s" bridge="false" />
</form>

<form id="F_Fifth_App">
<transfer name="T_Fifth_App" dest="tel:6005" connecttimeout="5s" bridge="false" />
</form>

<form id="F_Sixth_App">
<transfer name="T_Sixth_App" dest="tel:6006" connecttimeout="5s" bridge="false" />
</form>

<form id="F_Seventh_App">
<transfer name="T_Seventh_App" dest="tel:6007" connecttimeout="5s" bridge="false" />
</form>

<form id="F_Default">
<transfer name="T_Default" dest="tel:6008" connecttimeout="5s" bridge="false" />
</form>

<exit/>
</vxml>
WilsonYu
Joined: Nov 6, 2013
Messages: 3950
Offline
I don't see anything wrong with this.
MikeMastro
Joined: Apr 1, 2021
Messages: 5
Offline
Thank you. I guess we can close this topic as resolved
Go to:   
Mobile view