From 90e833947e661dad841804ea9d29ebfeb4ea8b17 Mon Sep 17 00:00:00 2001 From: Charlie Wang Date: Mon, 3 Aug 2020 18:17:06 -0700 Subject: [PATCH 1/2] implement end() --- src/createAdapter.ts | 2 ++ src/ic3/createAdapterEnhancer.ts | 4 ++++ .../egress/createEgressFileAttachmentMiddleware.ts | 4 ++++ .../egress/createEgressMessageActivityMiddleware.ts | 5 +++++ .../egress/createEgressTypingActivityMiddleware.ts | 4 ++++ src/types/ic3/IC3AdapterState.ts | 6 +++++- 6 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/createAdapter.ts b/src/createAdapter.ts index eb7bd78..20772e8 100644 --- a/src/createAdapter.ts +++ b/src/createAdapter.ts @@ -15,6 +15,7 @@ import createAsyncIterableQueue, { AsyncIterableQueue } from './utils/createAsyn import createEvent from './utils/createEvent'; import sealAdapter from './sealAdapter'; import Observable, { Subscription } from 'core-js/features/observable'; +import { StateKey } from './types/ic3/IC3AdapterState'; const DEFAULT_ENHANCER: AdapterEnhancer = next => options => next(options); @@ -53,6 +54,7 @@ export default function createAdapter { + adapter.setState(StateKey.Deprecated, true); ingressQueues.forEach(ingressQueue => ingressQueue.end()); ingressQueues.splice(0, Infinity); }, diff --git a/src/ic3/createAdapterEnhancer.ts b/src/ic3/createAdapterEnhancer.ts index 8f329b8..da23e38 100644 --- a/src/ic3/createAdapterEnhancer.ts +++ b/src/ic3/createAdapterEnhancer.ts @@ -49,6 +49,8 @@ export default function createIC3Enhancer({ adapter.setState(StateKey.BotId, undefined); adapter.setState(StateKey.Conversation, undefined); adapter.setState(StateKey.UserDisplayName, undefined); + adapter.setState(StateKey.Deprecated, undefined); + adapter.setState(StateKey.AdapterSequenceNo, undefined); adapter.setState(StateKey.UserId, undefined); (async function () { @@ -74,6 +76,8 @@ export default function createIC3Enhancer({ adapter.setState(StateKey.BotId, botId); adapter.setState(StateKey.Conversation, conversation); adapter.setState(StateKey.UserDisplayName, userDisplayName); + adapter.setState(StateKey.Deprecated, false); + adapter.setState(StateKey.AdapterSequenceNo, new Date().getTime()); adapter.setState(StateKey.UserId, userId); adapter.setReadyState(ReadyState.OPEN); })(); diff --git a/src/ic3/enhancers/egress/createEgressFileAttachmentMiddleware.ts b/src/ic3/enhancers/egress/createEgressFileAttachmentMiddleware.ts index 853a447..3a246e2 100644 --- a/src/ic3/enhancers/egress/createEgressFileAttachmentMiddleware.ts +++ b/src/ic3/enhancers/egress/createEgressFileAttachmentMiddleware.ts @@ -12,6 +12,10 @@ export default function createEgressMessageActivityMiddleware(): EgressMiddlewar IC3AdapterState > { return ({ getState }) => next => async (activity: IC3DirectLineActivity) => { + if (getState(StateKey.Deprecated)) { + return; + } + if (activity.type !== ActivityType.Message || !(activity.attachments || []).length) { return next(activity); } diff --git a/src/ic3/enhancers/egress/createEgressMessageActivityMiddleware.ts b/src/ic3/enhancers/egress/createEgressMessageActivityMiddleware.ts index 4bdd1aa..eae20a0 100644 --- a/src/ic3/enhancers/egress/createEgressMessageActivityMiddleware.ts +++ b/src/ic3/enhancers/egress/createEgressMessageActivityMiddleware.ts @@ -11,6 +11,10 @@ export default function createEgressMessageActivityMiddleware(): EgressMiddlewar IC3AdapterState > { return ({ getState }) => next => async (activity: IC3DirectLineActivity) => { + if (getState(StateKey.Deprecated)) { + return; + } + if (activity.type !== ActivityType.Message) { return next(activity); } @@ -59,6 +63,7 @@ export default function createEgressMessageActivityMiddleware(): EgressMiddlewar message ); } else { + console.log("HAHA sending", getState(StateKey.AdapterSequenceNo)); await conversation.sendMessage(message); } }; diff --git a/src/ic3/enhancers/egress/createEgressTypingActivityMiddleware.ts b/src/ic3/enhancers/egress/createEgressTypingActivityMiddleware.ts index c7c48bd..23f8f03 100644 --- a/src/ic3/enhancers/egress/createEgressTypingActivityMiddleware.ts +++ b/src/ic3/enhancers/egress/createEgressTypingActivityMiddleware.ts @@ -18,6 +18,10 @@ export default function createEgressTypingActivityMiddleware(): EgressMiddleware IC3AdapterState > { return ({ getState }) => next => (activity: IC3DirectLineActivity) => { + if (getState(StateKey.Deprecated)) { + return; + } + if (activity.type !== ActivityType.Typing) { return next(activity); } diff --git a/src/types/ic3/IC3AdapterState.ts b/src/types/ic3/IC3AdapterState.ts index b345e3b..2c2be96 100644 --- a/src/types/ic3/IC3AdapterState.ts +++ b/src/types/ic3/IC3AdapterState.ts @@ -2,7 +2,9 @@ enum StateKey { BotId = 'ic3.botId', Conversation = 'ic3.conversation', UserDisplayName = 'ic3.userDisplayName', - UserId = 'ic3.userId' + UserId = 'ic3.userId', + AdapterSequenceNo = 'ic3.adapterSequenceNo', + Deprecated = 'ic3.deprecated' } export { StateKey }; @@ -12,4 +14,6 @@ export type IC3AdapterState = { [StateKey.Conversation]: any; [StateKey.UserDisplayName]: string; [StateKey.UserId]: string; + [StateKey.AdapterSequenceNo]: number; + [StateKey.Deprecated]: boolean; }; From d87c21625e4fc1c038b311052b75aeb3949bf583 Mon Sep 17 00:00:00 2001 From: Charlie Wang Date: Tue, 16 Mar 2021 12:22:20 -0700 Subject: [PATCH 2/2] change model --- src/types/ic3/external/Model.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/types/ic3/external/Model.d.ts b/src/types/ic3/external/Model.d.ts index 6b9490c..a5ea5ac 100644 --- a/src/types/ic3/external/Model.d.ts +++ b/src/types/ic3/external/Model.d.ts @@ -278,6 +278,7 @@ declare namespace Microsoft.CRM.Omnichannel.IC3Client.Model { hostType: HostType; protocolType: ProtocolType; logger?: ILogger; + documentbody?: string; } }