import { ConfigurationError } from "@pipedream/platform";
import app from "../../bot9.app.mjs";
import utils from "../../common/utils.mjs";
export default {
key: "bot9-init-chat",
name: "Initiate Chat",
description: "Initiates a new conversation with a Bot9 chatbot. [See the documentation](https://bot9ai.apimatic.dev/v/1_0#/rest/introduction/introduction/getting-started-with-bot9/end-user-chat-api/initchat-endpoint)",
version: "0.0.2",
annotations: {
destructiveHint: true,
openWorldHint: true,
readOnlyHint: false,
},
type: "action",
props: {
app,
chatbotId: {
propDefinition: [
app,
"chatbotId",
],
},
source: {
propDefinition: [
app,
"source",
],
},
status: {
propDefinition: [
app,
"status",
],
},
externalSessionId: {
propDefinition: [
app,
"externalSessionId",
],
},
userName: {
propDefinition: [
app,
"userName",
],
},
userExternalId: {
propDefinition: [
app,
"userExternalId",
],
},
userEmailId: {
propDefinition: [
app,
"userEmailId",
],
},
},
methods: {
initChat({
chatbotId, ...args
} = {}) {
return this.app.post({
path: `/${chatbotId}/conversations`,
...args,
});
},
},
async run({ $ }) {
const {
initChat,
chatbotId,
source,
status,
externalSessionId,
userName,
userExternalId,
userEmailId,
} = this;
if (!source || !status) {
throw new ConfigurationError("Source and Status are required.");
}
const response = await initChat({
$,
chatbotId,
data: utils.reduceProperties({
initialProps: {
Source: source,
Status: status,
},
additionalProps: {
ExternalSessionId: externalSessionId,
user: [
{
name: userName,
externalId: userExternalId,
emailId: userEmailId,
},
userName || userExternalId || userEmailId,
],
},
}),
});
$.export("$summary", `Successfully initiated conversation with ID: \`${response.id}\``);
return response;
},
};