{ "$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" ] }