{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "#/components/schemas/ConversationNode",
"title": "ConversationNode",
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "This is the Conversation node. This can be used to start a conversation with the customer.\n\nThe flow is:\n- Workflow starts the conversation node\n- Model is active with the `prompt` and global context.\n- Model will call a tool to exit this node.\n- Workflow will extract variables from the conversation.\n- Workflow continues.",
"enum": [
"conversation"
]
},
"model": {
"description": "This is the model for the node.\n\nThis overrides `workflow.model`.",
"oneOf": [
{
"$ref": "#/components/schemas/WorkflowOpenAIModel",
"title": "WorkflowOpenAIModel"
},
{
"$ref": "#/components/schemas/WorkflowAnthropicModel",
"title": "WorkflowAnthropicModel"
},
{
"$ref": "#/components/schemas/WorkflowAnthropicBedrockModel",
"title": "WorkflowAnthropicBedrockModel"
},
{
"$ref": "#/components/schemas/WorkflowGoogleModel",
"title": "WorkflowGoogleModel"
},
{
"$ref": "#/components/schemas/WorkflowCustomModel",
"title": "WorkflowCustomModel"
}
]
},
"transcriber": {
"description": "This is the transcriber for the node.\n\nThis overrides `workflow.transcriber`.",
"oneOf": [
{
"$ref": "#/components/schemas/AssemblyAITranscriber",
"title": "AssemblyAITranscriber"
},
{
"$ref": "#/components/schemas/AzureSpeechTranscriber",
"title": "AzureSpeechTranscriber"
},
{
"$ref": "#/components/schemas/CustomTranscriber",
"title": "CustomTranscriber"
},
{
"$ref": "#/components/schemas/DeepgramTranscriber",
"title": "DeepgramTranscriber"
},
{
"$ref": "#/components/schemas/ElevenLabsTranscriber",
"title": "ElevenLabsTranscriber"
},
{
"$ref": "#/components/schemas/GladiaTranscriber",
"title": "GladiaTranscriber"
},
{
"$ref": "#/components/schemas/GoogleTranscriber",
"title": "GoogleTranscriber"
},
{
"$ref": "#/components/schemas/SpeechmaticsTranscriber",
"title": "SpeechmaticsTranscriber"
},
{
"$ref": "#/components/schemas/TalkscriberTranscriber",
"title": "TalkscriberTranscriber"
},
{
"$ref": "#/components/schemas/OpenAITranscriber",
"title": "OpenAITranscriber"
},
{
"$ref": "#/components/schemas/CartesiaTranscriber",
"title": "CartesiaTranscriber"
},
{
"$ref": "#/components/schemas/SonioxTranscriber",
"title": "SonioxTranscriber"
}
]
},
"voice": {
"description": "This is the voice for the node.\n\nThis overrides `workflow.voice`.",
"oneOf": [
{
"$ref": "#/components/schemas/AzureVoice",
"title": "AzureVoice"
},
{
"$ref": "#/components/schemas/CartesiaVoice",
"title": "CartesiaVoice"
},
{
"$ref": "#/components/schemas/CustomVoice",
"title": "CustomVoice"
},
{
"$ref": "#/components/schemas/DeepgramVoice",
"title": "DeepgramVoice"
},
{
"$ref": "#/components/schemas/ElevenLabsVoice",
"title": "ElevenLabsVoice"
},
{
"$ref": "#/components/schemas/HumeVoice",
"title": "HumeVoice"
},
{
"$ref": "#/components/schemas/LMNTVoice",
"title": "LMNTVoice"
},
{
"$ref": "#/components/schemas/NeuphonicVoice",
"title": "NeuphonicVoice"
},
{
"$ref": "#/components/schemas/OpenAIVoice",
"title": "OpenAIVoice"
},
{
"$ref": "#/components/schemas/PlayHTVoice",
"title": "PlayHTVoice"
},
{
"$ref": "#/components/schemas/WellSaidVoice",
"title": "WellSaidVoice"
},
{
"$ref": "#/components/schemas/RimeAIVoice",
"title": "RimeAIVoice"
},
{
"$ref": "#/components/schemas/SmallestAIVoice",
"title": "SmallestAIVoice"
},
{
"$ref": "#/components/schemas/TavusVoice",
"title": "TavusVoice"
},
{
"$ref": "#/components/schemas/VapiVoice",
"title": "VapiVoice"
},
{
"$ref": "#/components/schemas/SesameVoice",
"title": "SesameVoice"
},
{
"$ref": "#/components/schemas/InworldVoice",
"title": "InworldVoice"
},
{
"$ref": "#/components/schemas/MinimaxVoice",
"title": "MinimaxVoice"
}
]
},
"tools": {
"type": "array",
"description": "These are the tools that the conversation node can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.",
"items": {
"oneOf": [
{
"$ref": "#/components/schemas/CreateApiRequestToolDTO",
"title": "ApiRequestTool"
},
{
"$ref": "#/components/schemas/CreateBashToolDTO",
"title": "BashTool"
},
{
"$ref": "#/components/schemas/CreateCodeToolDTO",
"title": "CodeTool"
},
{
"$ref": "#/components/schemas/CreateComputerToolDTO",
"title": "ComputerTool"
},
{
"$ref": "#/components/schemas/CreateDtmfToolDTO",
"title": "DtmfTool"
},
{
"$ref": "#/components/schemas/CreateEndCallToolDTO",
"title": "EndCallTool"
},
{
"$ref": "#/components/schemas/CreateFunctionToolDTO",
"title": "FunctionTool"
},
{
"$ref": "#/components/schemas/CreateGoHighLevelCalendarAvailabilityToolDTO",
"title": "GoHighLevelCalendarAvailabilityTool"
},
{
"$ref": "#/components/schemas/CreateGoHighLevelCalendarEventCreateToolDTO",
"title": "GoHighLevelCalendarEventCreateTool"
},
{
"$ref": "#/components/schemas/CreateGoHighLevelContactCreateToolDTO",
"title": "GoHighLevelContactCreateTool"
},
{
"$ref": "#/components/schemas/CreateGoHighLevelContactGetToolDTO",
"title": "GoHighLevelContactGetTool"
},
{
"$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO",
"title": "GoogleCalendarCheckAvailabilityTool"
},
{
"$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO",
"title": "GoogleCalendarCreateEventTool"
},
{
"$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO",
"title": "GoogleSheetsRowAppendTool"
},
{
"$ref": "#/components/schemas/CreateHandoffToolDTO",
"title": "HandoffTool"
},
{
"$ref": "#/components/schemas/CreateMcpToolDTO",
"title": "McpTool"
},
{
"$ref": "#/components/schemas/CreateQueryToolDTO",
"title": "QueryTool"
},
{
"$ref": "#/components/schemas/CreateSlackSendMessageToolDTO",
"title": "SlackSendMessageTool"
},
{
"$ref": "#/components/schemas/CreateSmsToolDTO",
"title": "SmsTool"
},
{
"$ref": "#/components/schemas/CreateTextEditorToolDTO",
"title": "TextEditorTool"
},
{
"$ref": "#/components/schemas/CreateTransferCallToolDTO",
"title": "TransferCallTool"
},
{
"$ref": "#/components/schemas/CreateSipRequestToolDTO",
"title": "SipRequestTool"
},
{
"$ref": "#/components/schemas/CreateVoicemailToolDTO",
"title": "VoicemailTool"
}
]
}
},
"toolIds": {
"description": "These are the tools that the conversation node can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.",
"type": "array",
"items": {
"type": "string"
}
},
"prompt": {
"type": "string",
"maxLength": 5000
},
"globalNodePlan": {
"description": "This is the plan for the global node.",
"allOf": [
{
"$ref": "#/components/schemas/GlobalNodePlan"
}
]
},
"variableExtractionPlan": {
"description": "This is the plan that controls the variable extraction from the user's responses.\n\nUsage:\nUse `schema` to specify what you want to extract from the user's responses.\n```json\n{\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"user\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"age\": {\n \"type\": \"number\"\n }\n }\n }\n }\n }\n}\n```\n\nThis will be extracted as `{{ user.name }}` and `{{ user.age }}` respectively.\n\n(Optional) Use `aliases` to create new variables.\n\n```json\n{\n \"aliases\": [\n {\n \"key\": \"userAge\",\n \"value\": \"{{user.age}}\"\n },\n {\n \"key\": \"userName\",\n \"value\": \"{{user.name}}\"\n }\n ]\n}\n```\n\nThis will be extracted as `{{ userAge }}` and `{{ userName }}` respectively.\n\nNote: The `schema` field is required for Conversation nodes if you want to extract variables from the user's responses. `aliases` is just a convenience.",
"allOf": [
{
"$ref": "#/components/schemas/VariableExtractionPlan"
}
]
},
"name": {
"type": "string",
"maxLength": 80
},
"isStart": {
"type": "boolean",
"description": "This is whether or not the node is the start of the workflow."
},
"metadata": {
"type": "object",
"description": "This is for metadata you want to store on the task."
}
},
"required": [
"type",
"name"
]
}