v2

latestOpenAPI 3.1.02026-07-313981108.2 KB
Webhooks

Server Message

These are all the messages that can be sent to your server before, after and during the call.

Configure the messages you'd like to receive in assistant.server.messages.

Set your server url via assistant.server.url parameter.

post/server

Request body

Example request

{
  "message": {
    "call": {
      "id": "a12f9c88-c155-461f-9771-4d240cdc9a04",
      "teamId": "1f7b1b1b1b1b1b1b1b1b1b1b",
      "assistantId": "3f7b1b1b1b1b1b1b1b1b1b1b",
      "callType": "web",
      "direction": "inbound",
      "startAt": "2020-10-05T00:00:00.000Z",
      "endAt": "2020-10-05T00:00:00.000Z",
      "userNumber": "+919867543210",
      "assistantNumber": "+19867543211",
      "status": "finished",
      "phoneCallStatus": "ringing",
      "callEndTriggerBy": "user",
      "monitor": {
        "controlUrl": "https://<domain>.interactly.ai/calls/v1/conversations/<random-id>/control"
      },
      "analysis": {
        "summary": "The user called Dentistry to schedule an appointment.",
        "successEvaluation": "success",
        "structuredData": {}
      }
    },
    "assistant": {
      "name": "My Assistant",
      "welcomeMessage": "Hello! How can I help you?",
      "welcomeMessageMode": "assistant-speaks-first",
      "assistantProvider": "openai",
      "assistantModel": "gpt-4o-mini",
      "assistantSystemPrompt": "You are AI assistant to help patients with their health care needs.",
      "assistantMaxTokens": 256,
      "assistantResponseSplitter": ",",
      "config": {
        "speech": {
          "stt": {
            "vendor": "microsoft"
          },
          "sttFallback": {
            "vendor": "microsoft"
          },
          "ttsData": [
            {
              "enabled": true,
              "vendor": "eleven-labs",
              "language": "en-US",
              "voice": "ZeK6O9RfGNGj0cJT2HoJ",
              "config": {
                "modelId": "eleven_multilingual_v2",
                "stability": 0.7,
                "similarityBoost": 0.85,
                "speakerBoost": true,
                "styleExaggeration": 0.5,
                "seed": 42,
                "speed": 1,
                "applyTextNormalization": true
              }
            }
          ]
        }
      },
      "backgroundSound": "enable",
      "backgroundSoundVolume": 50,
      "maxConsecutiveTtsFailures": 2,
      "recordingEnabled": true,
      "maxCallDuration": 900,
      "idleTimeout": 20,
      "maxIdleMessagesInSequence": 3,
      "userInterruptionAckPlan": {
        "phrases": [
          "Please hold on while I check your account.",
          "one moment please",
          "let me just check that for you"
        ]
      },
      "assistantToolIds": [],
      "assistantKnowledgeBaseIds": [],
      "endCallMessage": "Goodbye!",
      "endCallToolDescription": "Trigger the end call only when the user is done with the conversation.",
      "endCallPhrases": [
        "goodbye",
        "bye"
      ],
      "callForwardData": [
        {
          "phoneNumber": "+1234567890",
          "name": "call-forward-name",
          "onFailedMessage": "The call forward failed. Please try again later."
        }
      ],
      "holdMusicUrl": "https://www.soundjay.com/ambient/sounds/people-in-lounge-1.mp3",
      "warmTransferTimeout": 300,
      "assistantAnalysis": {
        "summary": {
          "maxTokens": 256,
          "prompt": "Generate a summary of the call.",
          "timeoutSeconds": 30
        },
        "successEvaluation": {
          "maxTokens": 256,
          "prompt": "Evaluate the success of the call.",
          "timeoutSeconds": 30
        },
        "structuredData": {
          "maxTokens": 256,
          "prompt": "Extract structured data from the call.",
          "timeoutSeconds": 30
        }
      },
      "assistantOverrides": {
        "welcomeMessage": "Hello, how can I help you today?",
        "welcomeMessageMode": "assistant-speaks-first",
        "recordingEnabled": true,
        "maxConsecutiveTtsFailures": 2,
        "holdMusicUrl": "https://www.soundjay.com/ambient/sounds/people-in-lounge-1.mp3",
        "warmTransferTimeout": 300,
        "recordingPath": "/recordings",
        "dynamicVariables": {
          "user_name": "John Doe"
        }
      },
      "assistantServer": {
        "timeoutSeconds": 20,
        "url": "https://api.example.com/v1/getUserDetails",
        "secret": "my-secret",
        "headers": {}
      },
      "persistHistory": {
        "retentionPeriod": 7
      }
    },
    "phone": {
      "_id": "a12f9c88-c155-461f-9771-4d240cdc9a04",
      "teamId": "1f7b1b1b1b1b1b1b1b1b1b1b",
      "number": "+1234567890",
      "provider": {
        "name": "twilio"
      },
      "assistantId": "a12f9c88-c155-461f-9771-4d240cdc9a04",
      "inboundEnabled": true,
      "outboundEnabled": true,
      "label": "friendly-name-1"
    },
    "analysis": {
      "summary": "The user called Dentistry to schedule an appointment.",
      "successEvaluation": "success",
      "structuredData": {}
    },
    "messages": [
      {
        "messageId": "5f7b1b1b1b1b1b1b1b1b1b1b",
        "role": "user",
        "text": "Hello! How can I help you?",
        "timestamp": "2020-10-05T00:00:00.000Z"
      }
    ]
  }
}

Response

This is the response that is expected from the server to the message.

messagestring

Example response

{
  "message": "Done"
}