52 lines
1.7 KiB
TypeScript
52 lines
1.7 KiB
TypeScript
import * as sdk from '@botpress/sdk'
|
|
import * as uuid from 'uuid'
|
|
import { logger } from './logger'
|
|
import * as types from './types'
|
|
|
|
type Request = sdk.Request
|
|
type Response = sdk.Response | void
|
|
|
|
const requestId = () => {
|
|
const v4 = uuid.v4()
|
|
const short = v4.substring(0, 8)
|
|
return short
|
|
}
|
|
|
|
export const debugRequest = (req: Request) => {
|
|
const id = requestId()
|
|
const headersSummary = req.headers ? `headers=${summarize(JSON.stringify(req.headers))}` : 'headers=empty'
|
|
const bodySummary = req.body ? `body=${summarize(req.body)}` : 'body=empty'
|
|
logger.info(`[${id}] Incoming request ${req.method} ${req.path} ${headersSummary} ${bodySummary}`)
|
|
return id
|
|
}
|
|
|
|
const summarize = (text: string, len = 400) => {
|
|
return text.length > len ? `${text.substring(0, len)}...` : text
|
|
}
|
|
|
|
export const debugResponse = (id: string, res: Response) => {
|
|
if (!res) {
|
|
logger.info(`[${id}] Outgoing response empty`)
|
|
return
|
|
}
|
|
const headersSummary = res.headers ? `headers=${summarize(JSON.stringify(res.headers))}` : 'headers=empty'
|
|
const bodySummary = res.body ? `body=${summarize(res.body)}` : 'body=empty'
|
|
logger.info(`[${id}] Outgoing response ${res.status} ${headersSummary} ${bodySummary}`)
|
|
}
|
|
|
|
export const debugSignal = (args: types.MessageArgs | types.ActionArgs) => {
|
|
if ('input' in args) {
|
|
logger.debug(
|
|
`Sending signal conversationId=${args.input.conversationId} event=${summarize(
|
|
JSON.stringify(args.input.payload)
|
|
)} user=${args.ctx.botUserId}`
|
|
)
|
|
} else {
|
|
logger.debug(
|
|
`Sending signal conversationId=${args.conversation.id} message=${summarize(JSON.stringify(args.message))} user=${
|
|
args.user.id
|
|
}`
|
|
)
|
|
}
|
|
}
|