42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
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}`)
|
|
}
|
|
}
|
|
}
|