예제 #1
0
        void telecomProvider_FaxToneDetected(object sender, LineEventArgs e)
        {
            if (e.LineNumber == lineNumber)
            {
                LoggingService.AddLogEntry(LogLevel.Extended, "(Line " + lineNumber + ") Detected a fax tone", false);

                if (Properties.Settings.Default.AutoForwardFaxTo != null && Properties.Settings.Default.AutoForwardFaxTo.Length > 0)
                {
                    telecomProvider.TransferCall(e.LineNumber, Properties.Settings.Default.AutoForwardFaxTo);
                }
                else
                {
                    imlInterp.SignalFaxTone();
                }
            }
        }
예제 #2
0
 void telecomProvider_RemoteOnHold(object sender, LineEventArgs e)
 {
     if (e.LineNumber == lineNumber)
     {
         LoggingService.AddLogEntry(LogLevel.Extended, "(Line " + lineNumber + ") Call placed on hold from remote caller.", false);
         imlInterp.SignalCallOnHold();
     }
 }
예제 #3
0
 void telecomProvider_AnswerDetectMachineGreetingFinished(object sender, LineEventArgs e)
 {
     if (e.LineNumber == lineNumber)
     {
         if (scriptProcessor != null)
             scriptProcessor.OnAnswerDetectMachineGreetingFinished(telecomProvider, e);
     }
 }
예제 #4
0
        void telecomProvider_CallEnded(object sender, LineEventArgs e)
        {
            if (e.LineNumber == lineNumber)
            {
                try
                {
                    LoggingService.AddLogEntry(LogLevel.Basic, "(Line " + e.LineNumber + ") Call Ended", false);

                    StopSounds(e.LineNumber);

                    // Add a call history item
                    if (Properties.Settings.Default.EnableCallHistory)
                    {
                        WOSI.CallButler.Data.CallButlerDataset.CallHistoryDataTable callHistoryTable = new WOSI.CallButler.Data.CallButlerDataset.CallHistoryDataTable();
                        WOSI.CallButler.Data.CallButlerDataset.CallHistoryRow callHistoryItem = callHistoryTable.NewCallHistoryRow();

                        callHistoryItem.CallDuration = (TimeSpan)(DateTime.Now - callStartTime);
                        callHistoryItem.CallerDisplayName = imlInterp.CallerDisplayName;
                        callHistoryItem.CallerHost = imlInterp.CallerHost;
                        callHistoryItem.CallerUsername = imlInterp.CallerUsername;
                        callHistoryItem.ToUsername = imlInterp.DialedUsername;
                        callHistoryItem.ToHost = imlInterp.DialedHost;
                        callHistoryItem.CallID = Guid.NewGuid();
                        callHistoryItem.CustomerID = Properties.Settings.Default.CustomerID;
                        callHistoryItem.Timestamp = callStartTime;

                        callHistoryTable.AddCallHistoryRow(callHistoryItem);

                        dataProvider.PersistCallHistory(callHistoryItem);
                    }
                }
                catch(Exception ex)
                {
                    LoggingService.AddLogEntry(LogLevel.ErrorsOnly, "(Line " + lineNumber + ") Unable to add a call history entry: " + ex.ToString(), true);
                }

                //UpdateExtensionCall(e.LineNumber, CallStatus.NotOnCall, null, null);
                //UpdateExtensionCallStatus(CallStatus.NotOnCall);

                try
                {
                    if (imlInterp == null)
                    {
                        LoggingService.AddLogEntry(LogLevel.ErrorsOnly, "**** Iml Interpreter is NULL", true);
                    }

                    imlInterp.SignalHangup();
                }
                catch(Exception ex)
                {
                    LoggingService.AddLogEntry(LogLevel.ErrorsOnly, "(Line " + lineNumber + ") Unable to signal the end of a script: " + ex.ToString(), true);
                }

                if (imlInterp.ImlScript == null)
                {
                    // Automatically unlock our line
                    Locked = false;
                }

                callID = Guid.Empty;
                extension = null;

                CheckAvailability();
            }
        }
예제 #5
0
 public virtual void OnAnswerDetectMachineGreetingFinished(CallButler.Telecom.TelecomProviderBase telecomProvider, LineEventArgs e)
 {
 }
예제 #6
0
 protected void RaiseAnswerDetectHuman(LineEventArgs e)
 {
     if (AnswerDetectHuman != null)
         AnswerDetectHuman(this, e);
 }
예제 #7
0
 protected void RaiseRemoteOnHold(LineEventArgs e)
 {
     if (RemoteOnHold != null)
         RemoteOnHold(this, e);
 }
예제 #8
0
 void telecomProvider_TransferSucceeded(object sender, LineEventArgs e)
 {
     if (e.LineNumber == lineNumber)
     {
         LoggingService.AddLogEntry(LogLevel.Extended, "(Line " + lineNumber + ") Transfer succeeded", false);
         imlInterp.SignalTransferSuccess();
     }
 }
예제 #9
0
 protected void RaiseFaxToneDetected(LineEventArgs e)
 {
     if(FaxToneDetected != null)
         FaxToneDetected(this, e);
 }
예제 #10
0
 protected void RaiseFinishedSpeaking(LineEventArgs e)
 {
     if (FinishedSpeaking != null)
         FinishedSpeaking(this, e);
 }
예제 #11
0
 protected void RaiseCallEnded(LineEventArgs e)
 {
     if (CallEnded != null)
         CallEnded(this, e);
 }
예제 #12
0
 protected void RaiseAnswerDetectMachineGreetingFinished(LineEventArgs e)
 {
     if (AnswerDetectMachineGreetingFinished != null)
         AnswerDetectMachineGreetingFinished(this, e);
 }
예제 #13
0
 protected void RaiseAnswerDetectMachine(LineEventArgs e)
 {
     if (AnswerDetectMachine != null)
         AnswerDetectMachine(this, e);
 }
예제 #14
0
 void telecomProvider_SoundFinishedPlaying(object sender, LineEventArgs e)
 {
     if (e.LineNumber == lineNumber)
     {
         LoggingService.AddLogEntry(LogLevel.Extended, "(Line " + lineNumber + ") Finished playing sound", false);
         imlInterp.SignalEventCallback(imlScriptEventToken);
     }
 }
예제 #15
0
 protected void RaiseSoundFinishedPlaying(LineEventArgs e)
 {
     if (SoundFinishedPlaying != null)
         SoundFinishedPlaying(this, e);
 }
예제 #16
0
 void telecomProvider_TransferFailed(object sender, LineEventArgs e)
 {
     if (e.LineNumber == lineNumber)
     {
         LoggingService.AddLogEntry(LogLevel.Extended, "(Line " + lineNumber + ") Transfer failed", true);
         imlInterp.SignalTransferFailure();
     }
 }
예제 #17
0
 protected void RaiseTransferSucceeded(LineEventArgs e)
 {
     if (TransferSucceeded != null)
         TransferSucceeded(this, e);
 }
예제 #18
0
 public virtual void OnAnswerDetectHuman(CallButler.Telecom.TelecomProviderBase telecomProvider, LineEventArgs e)
 {
 }
예제 #19
0
 void telecomProvider_AnswerDetectHuman(object sender, LineEventArgs e)
 {
     if (e.LineNumber == lineNumber)
     {
         if (scriptProcessor != null)
             scriptProcessor.OnAnswerDetectHuman(telecomProvider, e);
     }
 }
예제 #20
0
 public virtual void OnCallFailed(CallButler.Telecom.TelecomProviderBase telecomProvider, LineEventArgs e)
 {
 }
예제 #21
0
 void telecomProvider_CallEnded(object sender, LineEventArgs e)
 {
     UpdatePerformanceCounters();
 }