void imlInterp_SpeakText(object sender, SpeakTextEventArgs e)
        {
            LoggingService.AddLogEntry(LogLevel.Extended, "(Line " + lineNumber + ") Speaking '" + e.TextToSpeak + "'", false);

            // If the line isn't in use, don't do anything
            if (!telecomProvider.IsLineInUse(lineNumber))
            {
                imlInterp.SignalEventCallback(e.EventToken);
                return;
            }

            try
            {
                imlScriptEventToken = e.EventToken;
                telecomProvider.SpeakText(lineNumber, e.TextToSpeak);
            }
            catch (Exception ex)
            {
                LoggingService.AddLogEntry(LogLevel.ErrorsOnly, "(Line " + lineNumber + ") Unable to speak text\r\n\r\n" + ex.Message + "\r\n" + ex.StackTrace, true);
                imlInterp.SignalEventCallback(e.EventToken);
            }
        }
        void imlInterp_SpeakText(object sender, SpeakTextEventArgs e)
        {
            LoggingService.AddLogEntry(LogLevel.Extended, "(Line " + lineNumber + ") Speaking '" + e.TextToSpeak + "'", false);

            // If the line isn't in use, don't do anything
            if (!telecomProvider.IsLineInUse(lineNumber))
            {
                imlInterp.SignalEventCallback(e.EventToken);
                return;
            }

            try
            {
                imlScriptEventToken = e.EventToken;
                telecomProvider.SpeakText(lineNumber, e.TextToSpeak);
            }
            catch (Exception ex)
            {
                LoggingService.AddLogEntry(LogLevel.ErrorsOnly, "(Line " + lineNumber + ") Unable to speak text\r\n\r\n" + ex.Message + "\r\n" + ex.StackTrace , true);
                imlInterp.SignalEventCallback(e.EventToken);
            }
        }