 |
ChannelResourceDisconnected Event |
Fires when a call disconnects or hangs up. Do your cleanup in this event code.
Namespace:
VoiceElements.Client
Assembly:
VoiceElementsClient (in VoiceElementsClient.dll) Version: 8.6.1.1
Syntaxpublic event Disconnected Disconnected
Public Event Disconnected As Disconnected
public:
event Disconnected^ Disconnected {
void add (Disconnected^ value);
void remove (Disconnected^ value);
}
member Disconnected : IEvent<Disconnected,
DisconnectedEventArgs>
Value
Type:
VoiceElements.ClientDisconnected
RemarksSubscribe to Disconnected Events for All Calls Immediately
You should always subscribe to Disconnect Events (aka Hang Ups) immediately upon getting a
New Call event. Always do this unless you explicitly have a reason not to do so.
The following code line will do this subscription (C#):
e.ChannelResource.Disconnected += new Disconnected(ChannelResource_Disconnected); Determine the entry point of your application and
decide where you would like to begin receiving these events. For outbound calls, you may make this before or after you
Register DNIS(s), since the server will
not even try to raise events until the registration is done. For inbound calls, you should do this right after
answering a call.
Examples
The example below shows a chunk of code that executes when a
New Call event arrives. Notice that the sample immediately subscribes to disconnected events
and also incudes a sub for the disconnected handling code.
static void s_TelephonyServer_NewCall(object sender, VoiceElements.Client.NewCallEventArgs e)
{
try
{
Log.Write("NewCall Arrival! DNIS: {0} ANI: {1} Caller ID Name: {2}", e.ChannelResource.Dnis, e.ChannelResource.Ani, e.ChannelResource.CallerIdName);
e.ChannelResource.Disconnected += new Disconnected(ChannelResource_Disconnected);
Log.Write("Answering...");
e.ChannelResource.Answer();
Log.Write("Calling My IVR Application");
MyIVRApplication ivrApp = new MyIVRApplication(s_TelephonyServer, e.ChannelResource, Log);
ivrApp1.RunScript();
}
catch (HangupException)
{
Log.Write("The Caller Hung Up.");
}
catch (Exception ex)
{
Log.WriteException(ex, "IvrApplication::NewCall");
}
finally
{
try
{
try { e.ChannelResource.Disconnected -= new Disconnected(ChannelResource_Disconnected); }
catch { }
try { e.ChannelResource.Disconnect(); }
catch { }
try { e.ChannelResource.Dispose(); }
catch { }
Log.Write("Call complete.");
}
catch(Exception ex)
{
Log.WriteException(ex, "Error in finally block");
}
}
}
static void ChannelResource_Disconnected(object sender)
{
}
Private Shared Sub s_TelephonyServer_NewCall(ByVal sender As Object, ByVal e As VoiceElements.Client.NewCallEventArgs)
Try
Log.Write("NewCall Arrival! DNIS: {0} ANI: {1} Caller ID Name: {2}", e.ChannelResource.Dnis, e.ChannelResource.Ani, e.ChannelResource.CallerIdName)
AddHandler e.ChannelResource.Disconnected, AddressOf ChannelResource_Disconnected
Log.Write("Answering...")
e.ChannelResource.Answer()
Log.Write("Calling My IVR Application")
Dim ivrApp As New MyIVRApplication(s_TelephonyServer, e.ChannelResource, Log)
ivrApp1.RunScript()
Catch generatedExceptionName As HangupException
Log.Write("The Caller Hung Up.")
Catch ex As Exception
Log.WriteException(ex, "IvrApplication::NewCall")
Finally
Try
Try
RemoveHandler e.ChannelResource.Disconnected, AddressOf ChannelResource_Disconnected
Catch
End Try
Try
e.ChannelResource.Disconnect()
Catch
End Try
Try
e.ChannelResource.Dispose()
Catch
End Try
Log.Write("Call complete.")
Catch ex As Exception
Log.WriteException(ex, "Error in finally block")
End Try
End Try
End Sub
Private Shared Sub s_TelephonyServer_NewCall(ByVal sender As Object)
End Sub
No code example is currently available or this language may not be supported.
No code example is currently available or this language may not be supported.
See Also