n8n-nodes-typebot-devanvil
Version:
Nó para integração com o Typebot via API
84 lines (75 loc) • 2.8 kB
text/typescript
import { IExecuteFunctions } from 'n8n-core';
import { INodeType, INodeTypeDescription } from 'n8n-workflow';
export class Typebot implements INodeType {
description: INodeTypeDescription = {
displayName: 'Typebot',
name: 'typebot',
group: ['transform'],
version: 1,
description: 'Integração com o Typebot via API',
defaults: {
name: 'Typebot',
},
inputs: ['main'],
outputs: ['main'],
properties: [
{
displayName: 'Token de Autenticação',
name: 'authToken',
type: 'string',
default: '',
required: true,
description: 'Token Bearer para autenticação na API do Typebot',
},
{
displayName: 'ID do Typebot',
name: 'typebotId',
type: 'string',
default: '',
required: true,
description: 'ID do Typebot que será utilizado',
},
{
displayName: 'Mensagem',
name: 'message',
type: 'string',
default: '',
required: true,
description: 'Mensagem a ser enviada ao Typebot',
},
],
};
async execute(this: IExecuteFunctions) {
const items = this.getInputData();
const returnData = [];
for (let i = 0; i < items.length; i++) {
const authToken = this.getNodeParameter('authToken', i) as string;
const typebotId = this.getNodeParameter('typebotId', i) as string;
const message = this.getNodeParameter('message', i) as string;
// Iniciar conversa
const startResponse = await this.helpers.request({
method: 'POST',
uri: `https://typebot.io/api/v1/typebots/${typebotId}/startChat`,
headers: {
Authorization: `Bearer ${authToken}`,
},
json: true,
});
const sessionId = startResponse.sessionId;
// Enviar mensagem
const sendResponse = await this.helpers.request({
method: 'POST',
uri: `https://typebot.io/api/v1/sessions/${sessionId}/continueChat`,
headers: {
Authorization: `Bearer ${authToken}`,
},
body: {
message,
},
json: true,
});
returnData.push({ json: sendResponse });
}
return this.prepareOutputData(returnData);
}
}