File size: 1,230 Bytes
4114d85 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import axios, { AxiosRequestConfig, Method } from 'axios'
import { Tool } from 'langchain/tools'
import { ICommonObject } from '../../../src/Interface'
export class MakeWebhookTool extends Tool {
private url: string
name: string
description: string
method: string
headers: ICommonObject
constructor(url: string, description: string, method = 'POST', headers: ICommonObject = {}) {
super()
this.url = url
this.name = 'make_webhook'
this.description = description ?? `useful for when you need to execute tasks on Make`
this.method = method
this.headers = headers
}
async _call(): Promise<string> {
try {
const axiosConfig: AxiosRequestConfig = {
method: this.method as Method,
url: this.url,
headers: {
...this.headers,
'Content-Type': 'application/json'
}
}
const response = await axios(axiosConfig)
return typeof response.data === 'object' ? JSON.stringify(response.data) : response.data
} catch (error) {
throw new Error(`HTTP error ${error}`)
}
}
}
|