32 lines
1.1 KiB
TypeScript
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 {}
|
|
}
|