Click or drag to resize

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.4.0
Syntax
public event Disconnected Disconnected

Value

Type: VoiceElements.ClientDisconnected
Remarks
Subscribe 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);

    // Immediately subscribe to disconnects (hang ups), unles you have a specific reason to not see these events.
    e.ChannelResource.Disconnected += new Disconnected(ChannelResource_Disconnected);

    Log.Write("Answering...");
    // Use the channel resource passed in with the event args to answer the call.
    e.ChannelResource.Answer();

    Log.Write("Calling My IVR Application");
    // Call a class you have created which contains all the scripting and features of the voice interface for the call.
    // You will find that this class will nee references to the Telephony Server, Channel Resource and Log.  You may add more depending on your application.
    MyIVRApplication ivrApp = new MyIVRApplication(s_TelephonyServer, e.ChannelResource, Log);
    // Call a method in your main telephony IVR class to execute your scripts
    ivrApp1.RunScript();
  }
  catch (HangupException)
  {
    Log.Write("The Caller Hung Up.");
  }
  catch (Exception ex)
  {
    Log.WriteException(ex, "IvrApplication::NewCall");
  }
  finally
  {
    try
    {
      // Unsubscribe the disconnected event.
      try { e.ChannelResource.Disconnected -= new Disconnected(ChannelResource_Disconnected); }
      catch { }
      // Force a Hangup for a safety net
      try { e.ChannelResource.Disconnect(); }
      catch { }
      // Always Dispose of the channel resource object you got along with the initial event for safety.
      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)
{
  // Handle all cleanup in this event code
}
See Also