protected override void OnExternalCommand(string command, string commandData, string eventToken, TelecomScriptInterface tsInterface, CallButler.Telecom.TelecomProviderBase telecomProvider, WOSI.CallButler.Data.DataProviders.CallButlerDataProviderBase dataProvider)
        {
            // Parse out our external event action
            if (callerTsInterface != null && Enum.IsDefined(typeof(TransferConferenceExternalCommands), command))
            {
                TransferConferenceExternalCommands externalCommand = WOSI.Utilities.EnumUtils<TransferConferenceExternalCommands>.Parse(command);

                switch (externalCommand)
                {
                    case TransferConferenceExternalCommands.CALLBUTLERINTERNAL_EndConference:

                        telecomProvider.EndConference(conferenceID, true);

                        break;

                    case TransferConferenceExternalCommands.CALLBUTLERINTERNAL_RecordingStarted:

                        // Notify the other caller that recording has started
                        callerTsInterface.IMLInterpreter.SignalExternalEvent(TransferConferenceExternalEvents.CALLBUTLERINTERNAL_RecordingStarted.ToString());

                        break;

                    case TransferConferenceExternalCommands.CALLBUTLERINTERNAL_RecordingFinished:

                        // Notify the other caller that recording has finished
                        callerTsInterface.IMLInterpreter.SignalExternalEvent(TransferConferenceExternalEvents.CALLBUTLERINTERNAL_RecordingFinished.ToString());

                        vmMailerService.QueueVoicemailEmail(extension, "Your Call Recording", "Call Recording", tsInterface.IMLInterpreter.GetLocalVariable("RecordingFilename"));

                        break;

                    case TransferConferenceExternalCommands.CALLBUTLERINTERNAL_TransferCaller:

                        TransferCaller(telecomProvider, commandData);

                        break;

                    case TransferConferenceExternalCommands.CALLBUTLERINTERNAL_HoldCaller:

                        // Remove this call from the conference
                        tsInterface.ProcessOnHold(conferenceID, true);

                        // Tell the other caller to play hold music
                        callerTsInterface.IMLInterpreter.SignalExternalEvent(TransferConferenceExternalEvents.CALLBUTLERINTERNAL_HoldCall.ToString());

                        break;

                    case TransferConferenceExternalCommands.CALLBUTLERINTERNAL_UnholdCaller:

                        // Add this caller back into the conference
                        tsInterface.ProcessOnHold(conferenceID, false);

                        // Tell the other caller to stop hold music
                        callerTsInterface.IMLInterpreter.SignalExternalEvent(TransferConferenceExternalEvents.CALLBUTLERINTERNAL_UnholdCall.ToString());

                        break;
                }
            }

            tsInterface.IMLInterpreter.SignalEventCallback(eventToken);
        }
 private void ProcessEndCall(CallButler.Telecom.TelecomProviderBase telecomProvider)
 {
     if (outboundTsInterface != null && conferenceID == 0)
     {
         telecomProvider.EndCall(outboundTsInterface.LineNumber);
     }
     else
     {
         telecomProvider.EndConference(conferenceID, true);
     }
 }
        protected override void OnExternalCommand(string command, string commandData, string eventToken, TelecomScriptInterface tsInterface, CallButler.Telecom.TelecomProviderBase telecomProvider, WOSI.CallButler.Data.DataProviders.CallButlerDataProviderBase dataProvider)
        {
            // Parse out our external event action
            if (Enum.IsDefined(typeof(TransferConferenceParticipantExternalCommands), command))
            {
                TransferConferenceParticipantExternalCommands externalCommand = WOSI.Utilities.EnumUtils<TransferConferenceParticipantExternalCommands>.Parse(command);

                switch (externalCommand)
                {
                    case TransferConferenceParticipantExternalCommands.CALLBUTLERINTERNAL_EndConference:

                        telecomProvider.EndConference(conferenceID, true);

                        break;

                    case TransferConferenceParticipantExternalCommands.CALLBUTLERINTERNAL_MainMenu:

                        break;
                }
            }

            tsInterface.IMLInterpreter.SignalEventCallback(eventToken);
        }