Skip to content

Create Call Centers

The call centers bulk operation allows you to create multiple call centers efficiently using either CSV files or direct method calls.

Description

Call center creation enables you to set up call center services with various configurations including service instance profiles, routing policies, queue management, and agent settings. This bulk operation creates multiple call centers with their associated configuration in a single operation, supporting both CSV-based and programmatic approaches.

Important: Call centers come in three types (Basic, Standard, and Premium), each with different available options. Using options that are not available for your selected call center type will result in errors. Always ensure you only use options compatible with your chosen type.

Call Center Types

Basic Call Center

The Basic call center type provides essential call center functionality with queue management and basic agent handling.

Standard Call Center

The Standard call center type includes all Basic features plus reporting capabilities and advanced agent state management.

Premium Call Center

The Premium call center type includes all Standard features plus advanced routing capabilities with priority-based or skill-based routing.

Create from CSV

Setup

  1. Get the template: Find the bulk sheet template at call.center.create.csv
  2. Fill in your data: Use the template to define your call centers

CSV Format

The CSV template includes these columns:

ColumnDescriptionRequiredCall Center TypeExample
operationOperation typeYesAllcall.center.create
serviceProviderIdService provider identifierYesAll"MyServiceProvider"
groupIdGroup identifierYesAll"SalesGroup"
serviceUserIdService user IDYesAll"sales-center@company.com"
serviceInstanceProfile.nameCall center nameYesAll"Sales Call Center"
serviceInstanceProfile.callingLineIdLastNameCLID last nameYesAll"Sales"
serviceInstanceProfile.callingLineIdFirstNameCLID first nameYesAll"Center"
serviceInstanceProfile.passwordService passwordYesAll"password123"
serviceInstanceProfile.hiraganaLastNameHiragana last nameNoAll"セールス"
serviceInstanceProfile.hiraganaFirstNameHiragana first nameNoAll"センター"
serviceInstanceProfile.phoneNumberPhone numberNoAll"+81355555555"
serviceInstanceProfile.extensionExtensionNoAll"5000"
serviceInstanceProfile.languageLanguageNoAll"Japanese"
serviceInstanceProfile.timeZoneTime zoneNoAll"Asia/Tokyo"
serviceInstanceProfile.alias[0]Alias (1st)NoAll"sales-cc"
serviceInstanceProfile.alias[1]Alias (2nd)NoAll"sales-callcenter"
serviceInstanceProfile.alias[2]Alias (3rd)NoAll"sales-cc1"
serviceInstanceProfile.publicUserIdentityPublic user identityNoAll"sip:sales@domain.com"
serviceInstanceProfile.callingLineIdPhoneNumberCLID phone numberNoAll"+81355555555"
typeCall center typeYesAllBasic, Standard, or Premium
policyRouting policyYesAllCircular, Regular, Similtaneous, Uniform, or Weighted Call Distribution
enableVideoEnable videoNoAlltrue or false
queueLengthQueue lengthNoAll3
allowCallerToDialEscapeDigitAllow escape digit diallingNoAlltrue or false
escapeDigitEscape digitNoAll"3"
resetCallStatisticsUponEntryInQueueReset stats on queue entryNoAlltrue or false
allowAgentLogoffAllow agent logoffNoAlltrue or false
allowCallWaitingForAgentsAllow call waitingNoAlltrue or false
externalPreferredAudioCodecExternal audio codecNoAll"None"
internalPreferredAudioCodecInternal audio codecNoAll"None"
playRingingWhenOfferingCallPlay ringing on call offerNoAlltrue or false
routingTypeRouting typeNoPremium onlyPriority Based or Skill Based
enableReportingEnable reportingNoStandard+ onlytrue or false
allowCallsToAgentsInWrapUpAllow calls during wrap-upNoStandard+ onlytrue or false
overrideAgentWrapUpTimeOverride wrap-up timeNoStandard+ onlytrue or false
wrapUpSecondsWrap-up time (seconds)NoStandard+ only30
forceDeliveryOfCallsForce delivery of callsNoPremium onlytrue or false
forceDeliveryWaitTimeSecondsForce delivery wait timeNoPremium only9
enableAutomaticStateChangeForAgentsAuto state change for agentsNoStandard+ onlytrue or false
agentStateAfterCallAgent state after callNoStandard+ onlyAvailable, Unavailable, or Wrap-Up
agentUnavailableCodeAgent unavailable codeNoStandard+ only"3"
networkClassOfServiceNetwork class of serviceNoAll"Premium"

Call Center Type-Specific Options

Critical: Only use options that are available for your selected call center type. Using incompatible options will result in API errors.

Basic Call Center Options

Basic call centers support all the core options but cannot use: - routingType (Premium only) - enableReporting (Standard+ only) - allowCallsToAgentsInWrapUp (Standard+ only) - overrideAgentWrapUpTime (Standard+ only) - wrapUpSeconds (Standard+ only) - forceDeliveryOfCalls (Premium only) - forceDeliveryWaitTimeSeconds (Premium only) - enableAutomaticStateChangeForAgents (Standard+ only) - agentStateAfterCall (Standard+ only) - agentUnavailableCode (Standard+ only)

Standard Call Center Options

Standard call centers include all Basic options plus: - enableReporting - allowCallsToAgentsInWrapUp - overrideAgentWrapUpTime - wrapUpSeconds - enableAutomaticStateChangeForAgents - agentStateAfterCall - agentUnavailableCode

Standard call centers cannot use: - routingType (Premium only) - forceDeliveryOfCalls (Premium only) - forceDeliveryWaitTimeSeconds (Premium only)

Premium Call Center Options

Premium call centers include all Standard options plus: - routingType - forceDeliveryOfCalls - forceDeliveryWaitTimeSeconds

Defaults

To make call center creation more user-friendly, many fields have sensible defaults that will be automatically applied if you don't specify them. This means you only need to provide the essential information, and the system will handle the rest.

Call Center Profile Defaults: - serviceInstanceProfile.name: "Default Call Center Name" - serviceInstanceProfile.callingLineIdLastName: "Default CLID Last Name" - serviceInstanceProfile.callingLineIdFirstName: "Default CLID First Name"

Basic Call Center Defaults: - type: Basic - policy: Circular - enableVideo: false - queueLength: 3 - allowCallerToDialEscapeDigit: false - escapeDigit: "3" - resetCallStatisticsUponEntryInQueue: true - allowAgentLogoff: true - allowCallWaitingForAgents: true - externalPreferredAudioCodec: "None" - internalPreferredAudioCodec: "None" - playRingingWhenOfferingCall: true

Standard Call Center Defaults: Standard call centers use all Basic defaults. The following are available but have no default values (you must explicitly set them if needed): - enableReporting - wrapUpSeconds - overrideAgentWrapUpTime - allowCallsToAgentsInWrapUp - enableAutomaticStateChangeForAgents - agentStateAfterCall - agentUnavailableCode

Premium Call Center Defaults: Premium call centers use all Standard defaults. The following are available but have no default values (you must explicitly set them if needed): - routingType - forceDeliveryOfCalls - forceDeliveryWaitTimeSeconds

Nested Object Notation

The serviceInstanceProfile.* notation allows you to configure the service instance profile with nested properties like name, calling line ID, password, and contact information.

Array Notation

The serviceInstanceProfile.alias[0], serviceInstanceProfile.alias[1], serviceInstanceProfile.alias[2] notation allows you to specify up to 3 aliases for a single call center. You can include as many alias[N] columns as needed, but it's recommended to only include the number of columns you actually need to avoid empty columns.

Example CSV Data

Example - Basic Call Center:

operation,serviceProviderId,groupId,serviceUserId,serviceInstanceProfile.name,serviceInstanceProfile.callingLineIdLastName,serviceInstanceProfile.callingLineIdFirstName,serviceInstanceProfile.password,type,policy
call.center.create,MyServiceProvider,SalesGroup,sales-center@company.com,Sales Call Center,Sales,Center,password123,Basic,Circular

Example - Standard Call Center:

operation,serviceProviderId,groupId,serviceUserId,serviceInstanceProfile.name,serviceInstanceProfile.callingLineIdLastName,serviceInstanceProfile.callingLineIdFirstName,serviceInstanceProfile.password,type,policy,enableReporting,wrapUpSeconds,allowCallsToAgentsInWrapUp
call.center.create,MyServiceProvider,SupportGroup,support-center@company.com,Support Call Center,Support,Center,password456,Standard,Circular,true,30,true

Example - Premium Call Center:

operation,serviceProviderId,groupId,serviceUserId,serviceInstanceProfile.name,serviceInstanceProfile.callingLineIdLastName,serviceInstanceProfile.callingLineIdFirstName,serviceInstanceProfile.password,type,policy,routingType,forceDeliveryOfCalls,forceDeliveryWaitTimeSeconds
call.center.create,MyServiceProvider,PremiumGroup,premium-center@company.com,Premium Call Center,Premium,Center,password789,Premium,Circular,Priority Based,false,9

Usage

from broadworks_sdk import Client, Agent

# Initialize client
client = Client(
    host="your-broadworks-server.com",
    username="your-username",
    password="your-password"
)

# Get agent instance
agent = Agent.get_instance(client)

# Create call centers from CSV
results = agent.bulk.create_call_center_from_csv(
    csv_path="path/to/your/call-centers.csv",
    dry_run=False  # Set to True to validate without creating
)

# Process results
for result in results:
    if result["success"]:
        print(f"✅ Created call center: {result['data']['service_instance_profile']['name']}")
    else:
        print(f"❌ Failed to create call center: {result.get('response', 'Unknown error')}")

Create from Data (Method Call in IDE)

Note: This is a highlighted note When creating call centers programmatically, you can omit any optional fields, but all required fields must be explicitly provided. The system will validate all required fields before processing. Most importantly, ensure you only include options compatible with your selected call center type to avoid API errors.

When creating call centers programmatically, you can omit any optional fields, but all required fields must be explicitly provided. The system will validate all required fields before processing.

For programmatic creation without CSV files:

from broadworks_sdk import Client, Agent

# Initialize client
client = Client(
    host="your-broadworks-server.com",
    username="your-username", 
    password="your-password"
)

# Get agent instance
agent = Agent.get_instance(client)

# Define call center data
call_centers_data = [
    {
        "operation": "call.center.create",
        "service_provider_id": "MyServiceProvider",
        "group_id": "SalesGroup",
        "service_user_id": "sales-center@company.com",
        "service_instance_profile": {
            "name": "Sales Call Center",
            "calling_line_id_last_name": "Sales",
            "calling_line_id_first_name": "Center",
            "password": "password123"
        },
        "type": "Basic",
        "policy": "Circular"
    },
    {
        "operation": "call.center.create",
        "service_provider_id": "MyServiceProvider",
        "group_id": "SupportGroup",
        "service_user_id": "support-center@company.com",
        "service_instance_profile": {
            "name": "Support Call Center",
            "calling_line_id_last_name": "Support",
            "calling_line_id_first_name": "Center",
            "password": "password456"
        },
        "type": "Standard",
        "policy": "Circular",
        "enable_reporting": True,
        "wrap_up_seconds": 30,
        "allow_calls_to_agents_in_wrap_up": True
    },
    {
        "operation": "call.center.create",
        "service_provider_id": "MyServiceProvider",
        "group_id": "PremiumGroup",
        "service_user_id": "premium-center@company.com",
        "service_instance_profile": {
            "name": "Premium Call Center",
            "calling_line_id_last_name": "Premium",
            "calling_line_id_first_name": "Center",
            "password": "password789"
        },
        "type": "Premium",
        "policy": "Circular",
        "routing_type": "Priority Based",
        "enable_reporting": True,
        "wrap_up_seconds": 30,
        "force_delivery_of_calls": False,
        "force_delivery_wait_time_seconds": 9
    }
]

# Create call centers from data
results = agent.bulk.create_call_center_from_data(
    call_center_data=call_centers_data,
    dry_run=False  # Set to True to validate without creating
)

# Process results
for result in results:
    if result["success"]:
        print(f"✅ Created call center: {result['data']['service_instance_profile']['name']}")
    else:
        print(f"❌ Failed to create call center: {result.get('response', 'Unknown error')}")

Dry Run Mode

Both methods support dry run mode for validation:

# Validate data without creating call centers
results = agent.bulk.create_call_center_from_csv(
    csv_path="path/to/your/call-centers.csv",
    dry_run=True
)

Dry run mode will: - Parse and validate your data - Check for required fields and data types - Return validation results without making actual API calls

Note: Dry run mode may not catch all call center type compatibility issues. Always ensure you're using options compatible with your selected type.

Response Format

Both methods return a list of result dictionaries:

[
    {
        "index": 0,
        "data": {...},  # Original data for this call center
        "command": {...},  # Generated command object
        "response": "",  # API response (empty for dry run, error details if failed)
        "success": True,  # Whether the operation succeeded
        "detail": None  # Additional error details if failed
    },
    # ... more results
]

Error Handling

The operation handles various error scenarios:

  • Validation errors: Invalid data types or missing required fields
  • API errors: BroadWorks server errors (duplicate call centers, invalid service providers, incompatible options for call center type, etc.)
  • Network errors: Connection issues

Check the success field and response field in results for detailed error information. When success is False, the response field will contain the error details.

Notes

  • Call Center Type Compatibility: Critical - Only use options that are available for your selected call center type. Using options from Standard/Premium on a Basic call center, or Premium-only options on a Standard call center, will result in API errors
  • Type Selection: The type field determines which options are available. Choose Basic, Standard, or Premium based on your requirements
  • Routing Policy: The policy field accepts: Circular, Regular, Similtaneous, Uniform, or Weighted Call Distribution
  • Routing Type: The routingType field is Premium only and accepts: Priority Based or Skill Based
  • Template location: Find the bulk sheet template in call.center.create.csv
  • Case conversion: Column names are automatically converted from camelCase to snake_case
  • Empty values: Empty array columns (alias[N], etc.) are automatically filtered out
  • Nested objects: Use dot notation (e.g., serviceInstanceProfile.name, serviceInstanceProfile.callingLineIdFirstName) for nested object properties
  • Boolean values: Use true/false for boolean fields in CSV
  • Integer fields: queueLength, wrapUpSeconds, and forceDeliveryWaitTimeSeconds are automatically converted to integers
  • Defaults: Many fields have sensible defaults applied automatically (see Defaults section above)