add MakeWebhook

This commit is contained in:
Henry 2023-05-19 14:11:27 +01:00
parent faebc8a665
commit 02ff9664f1
3 changed files with 89 additions and 0 deletions

View File

@ -0,0 +1,48 @@
import { INode, INodeData, INodeParams } from '../../../src/Interface'
import { getBaseClasses } from '../../../src/utils'
import { MakeWebhookTool } from './core'
class MakeWebhook_Tools implements INode {
label: string
name: string
description: string
type: string
icon: string
category: string
baseClasses: string[]
inputs: INodeParams[]
constructor() {
this.label = 'Make.com Webhook'
this.name = 'makeWebhook'
this.type = 'MakeWebhook'
this.icon = 'make.png'
this.category = 'Tools'
this.description = 'Execute webhook calls on Make.com'
this.inputs = [
{
label: 'Webhook Url',
name: 'url',
type: 'string',
placeholder: 'https://hook.eu1.make.com/abcdefg'
},
{
label: 'Tool Description',
name: 'desc',
type: 'string',
rows: 4,
placeholder: 'Useful when need to send message to Discord'
}
]
this.baseClasses = [this.type, ...getBaseClasses(MakeWebhookTool)]
}
async init(nodeData: INodeData): Promise<any> {
const url = nodeData.inputs?.url as string
const desc = nodeData.inputs?.desc as string
return new MakeWebhookTool(url, desc, 'GET')
}
}
module.exports = { nodeClass: MakeWebhook_Tools }

View File

@ -0,0 +1,41 @@
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}`)
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB