Files
botpress--botpress/integrations/teams/src/actions/typing-indicator.ts
T
2026-07-13 13:34:48 +08:00

32 lines
1.1 KiB
TypeScript

import { ActivityTypes } from 'botbuilder'
import { getAdapter, getConversationReference } from '../utils'
import * as bp from '.botpress'
const DEFAULT_TIMEOUT = 5000
export const startTypingIndicator: bp.IntegrationProps['actions']['startTypingIndicator'] = async ({
ctx,
client,
input,
}) => {
const { conversationId, timeout } = input
const expiration = new Date(Date.now() + (timeout ?? DEFAULT_TIMEOUT))
const adapter = getAdapter(ctx.configuration)
const convRef = await getConversationReference({ conversationId, client })
await adapter.continueConversation(convRef, async (turnContext) => {
await turnContext.sendActivity({
type: ActivityTypes.Typing,
expiration,
})
})
return {}
}
export const stopTypingIndicator: bp.IntegrationProps['actions']['stopTypingIndicator'] = async () => {
// Deleting the activity is not supported on all bot framework channels.
// Further testing in Teams will be required to determine if deleting the
// typing indicator is supported, should we want to stop it early.
// Do nothing for now (typing indicator still stops on new message and after timeout)
return {}
}