internal Step(IApplication app, ISession session, ICallFlow flow) { Utc = app.TimeSource.UTCNow; Session = session == null ? "<null>" : "{0}({1})".Args(session.GetType().Name, session.User.ToString().TakeFirstChars(32, "..")); App = app.AppId; AppInstance = app.InstanceId; Host = Platform.Computer.HostName; Type = flow.GetType().Name; ID = flow.ID; DirectorName = flow.DirectorName; CallerAddress = flow.CallerAddress; CallerAgent = flow.CallerAgent; CallerPort = flow.CallerPort; if (flow.Items.Any()) { m_Items = new ConcurrentDictionary <string, object>(flow.Items); } }
/// <summary> /// Internal framework-only method to bind thread-level/async flow context /// </summary> public static void __SetThreadLevelCallContext(ICallFlow call) { ats_CallFlow.Value = call; }
protected virtual void SetCallFlow(ICallFlow cf, string sessionId) { cf.SessionId = sessionId; cf.RecordedAudioUri = AudioPathUri; SessionProvider.StoreObject(sessionId, cf as CallFlow.CallFlow); }