Create session
Event session:create
The session:create
event is used to initialize a new conversation session after establishing a WebSocket connection. This event registers a new conversation context and prepares the system to receive and process messages.
{
"context": {
"user": {
"display_name": "John Doe",
"phone": "+1234567890"
}
},
"identity_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"timestamp": 1635789600000,
"is_test": false,
"opt_out": false
}
Payload fields
Field | Type | Required | Description |
---|---|---|---|
context | Object | No | A context object containing information about the user and conversation environment. This context will be available throughout the session's lifecycle. |
identity_token | String | No | JWT token for identity verification. Used for secure authentication when required by the integration. |
timestamp | Integer | Yes | Unix timestamp in milliseconds representing when the session creation was initiated. |
is_test | Boolean | No | Flag indicating if this is a test session. Defaults to false if not provided. |
opt_out | Boolean | No | Flag indicating if the user has opted out of data collection. Defaults to false if not provided. |
Server responses
Success: session:created
On successful session creation, the server responds with a session:created
event containing the created session details:
{
"session_id": "123e4567-e89b-12d3-a456-426614174000",
"inactivity_timeout_seconds": 600,
"is_service_desk": false,
"is_conversation": true,
"is_handover": false,
"assignee_agent_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"assignee_brain_id": "550e8400-e29b-41d4-a716-446655440000",
"keep_alive": 120,
"status": "active",
"assignee_collection_id": "c56a4180-65aa-42ec-a945-5fd21dec0538",
"source": {
"integration_id": "d9e7c112-8f11-4c80-9318-b3f98b9728d6",
"channel": "web",
"opt_out": false,
"is_test": false,
"account_id": "6fa459ea-ee8a-3ca4-894e-db77e160355e",
"brain_id": "550e8400-e29b-41d4-a716-446655440000",
"brain_parent_id": "329a91d4-dbfd-4dfc-8c76-ccd5d30e476b",
"brain_version": 3,
"desk_id": "1b1cb6bb-9c1e-4afe-b139-ca06fa2fff4f",
"session_timeout": 3600,
"account_slug": "acme-corp",
"department_id": "5f8cc8eb-6ef4-4a77-b8a0-51eb3f11e1b4"
},
"context": {
"user": {
"display_name": "John Doe",
"phone": "+1234567890"
}
}
}
Response fields
Field | Description |
---|---|
session_id | Unique identifier for the created session, used in all subsequent interactions. |
inactivity_timeout_seconds | Time in seconds before the session expires due to inactivity. |
is_service_desk | Indicates if this session is connected to a service desk. |
is_conversation | Indicates if this session is a conversation type. |
is_handover | Indicates if this session is configured for human handover. |
assignee_agent_id | ID of the human agent assigned to this session (if any). |
assignee_brain_id | ID of the AI Agent assigned to this session. |
keep_alive | Interval in seconds for keep-alive messages. |
status | Current status of the session (e.g., "active"). |
assignee_collection_id | ID of the collection assigned to this session. |
source | Object containing metadata about the integration and account. |
context | Copy of the initial context provided. |
Moveo controls certain fields in the context object. As these are likely to be sensitive, the server will obfuscate these fields in the response showing them as ***
.
Error responses
If session creation fails, the server responds with one of the following error events:
Error event | Description |
---|---|
session:create:error | General error during session creation. |
session:create:error:invalid_identity_token | The provided identity token is invalid or expired. |
session:create:error:invalid_private_key | The private key used for verification is invalid. |
session:create:error:invalid_aes_claims | The AES claims in the token are invalid. |
session:create:error:failed_aes_descryption | AES decryption of the token failed. |
Error responses include the following payload:
{
"error_code": "invalid_token",
"description": "The provided identity token is invalid or has expired"
}
Session lifecycle
After successful creation, the session enters the active state and remains available until explicitly closed or until it expires. The session:created
response contains important timeout values (inactivity_timeout_seconds
, keep_alive
, and source.session_timeout
in the payload object) that govern the session's lifespan.
For detailed information about session states, transitions, timeout mechanisms, and expiration behavior, see the Session lifecycle
documentation.Example usage
The following example demonstrates how to create a session using the WebSocket API:
// Initialize socket connection (see connection.md for details)
const socket = io(URL, socketOptions);
// Connection event handling
socket.on("connect", () => {
console.log("Connected to WebSocket API");
// Create session payload
const sessionCreatePayload = {
context: {
user: {
display_name: "Jane Smith",
email: "jane.smith@example.com",
},
},
timestamp: Date.now(),
is_test: false,
opt_out: false,
};
// Send session:create event
socket.emit("session:create", sessionCreatePayload);
});
// Handle success response
socket.on("session:created", (data) => {
console.log("Session created:", data.session_id);
// Store session_id for future interactions
const sessionId = data.session_id;
// Now you can start sending messages with this session_id
});
// Handle specific error responses
socket.on("session:create:error", (error) => {
console.error("General error creating session:", error.description);
});
socket.on("session:create:error:invalid_identity_token", (error) => {
console.error("Invalid identity token:", error.description);
});
// Handle other potential errors
socket.on("session:create:error:invalid_private_key", handleAuthError);
socket.on("session:create:error:invalid_aes_claims", handleAuthError);
socket.on("session:create:error:failed_aes_descryption", handleAuthError);
function handleAuthError(error) {
console.error("Authentication error:", error.description);
// Implement retry logic or user notification
}
To prevent premature session expiration, send regular session:activity
events during periods of user inactivity. See Client events for implementation details.