3CXObjectModel.3.0.0.0_v16.chm - help file for Configuration and Call Control API V16
OMSamples - project for .NET core 2.1
If you cannot open the chm, right click > properties > and press Unblock button. 

#####################

Prerequisites:
1. Stanalone host.
2. User should have administrative rights.
3. .NET core 2.1 environment
4. Test installaion of 3CX Phone System version 16 alpha(orLater)
WARNING: DO NOT RUN SAMPLES ON PRODUCTION (LIVE) enviroment
4. Copy 3CXPhoneSystem.ini from C:\Program Files\3CX Phone System\Bin to the same folder where Visual Studio will output the binary files. 
5. Reference to 3cxpscomcpp2.dll should be adjuested according to the location of PBX binaries


Usage:
	dotnet OMSamplesCore.dll [/?]|[SampleName arg1 arg2 ...]
List of samples:

SampleName: connection
Implemented in OMSamples.Samples.ActiveConnections
WARNING: 
Parameters:
	arg1 - dnregs                |answer|ondn |all|drop  |pickup |divertvm|divert |bargein |listen |whisper|record         |transfer|join   |makecall|callservice      |attacheddata
	arg2 - numstartswith or [all]|achash|dnnum|   |achash|achash |achash  |achash |achash  |achash |achash |achash         |achash  |achash |reghash |servicename      |achach
	arg3 - additional-keys       |      |     |   |      |destnum|        |destnum|reghash |reghash|reghash|RecordingAction|destnum |achash2|destnum |list of key=value|empty or [list of key=value]

Description: shows how to work with ActiveConnection objects
--------------------------------------------------------------------------------
SampleName: add_phone_model
Implemented in OMSamples.Samples.AddPhoneModelSample
Description: Creates PhoneModel object which describes capability for specific user agent
--------------------------------------------------------------------------------
SampleName: playlists
Implemented in OMSamples.Samples.PlayListsSample
Parameters:
	arg1 - list|create|delete|update. no parameters - checks all audio streams
	arg2...argN - [name=AudioFeed.Name] [source=AudioFeed.Source] [autogain|no-audiogain] [shuffle|sorted] [volume=0..100] [no-stopempty|stopempty] 

Description: prints, updates, creates, deletes playlists definitions. name source is the selector in update|delete. create - source is autogenerated if not specified. autogain set to false shuffle=false
--------------------------------------------------------------------------------
SampleName: blacklist_monitor
Implemented in OMSamples.Samples.BlackListMonitor
Description: Sample of IP Black List manager
--------------------------------------------------------------------------------
SampleName: calls
Implemented in OMSamples.Samples.CallStateMonitor
WARNING: 
Parameters:
	arg1 - show            | monitor
	arg2 - callid or 'all' | new or all or callid

Description: Shows how to use CallMonitor
--------------------------------------------------------------------------------
SampleName: change_parkcodes
Implemented in OMSamples.Samples.ChangeParkCodesSample
WARNING: This sample changes global settings of PBX.
Parameters:
	arg1 - dial code to park call from the Parking Orbit
	arg2 - dial code to unpark call from the Parking Orbit

Description: Shows how to change dial codes of Parking Orbit
--------------------------------------------------------------------------------
SampleName: change_vmbox_info
Implemented in OMSamples.Samples.ChangeVMBoxInfoSample
Parameters:
	arg1 - extension number

Description: Sets voicemail box information for the specified extension. 
Number of messages is hardcoded and set to 1 new message and 2 messages in total.
--------------------------------------------------------------------------------
SampleName: conference
Implemented in OMSamples.Samples.Conferences
WARNING: 
Parameters:
	arg1 - active|startadhoc|scheduled|joinaudio   |removeschedule|dropall  | destroy |add           | hold    |resume   |mute     |unmute   |drop     |resetbridge
	arg2 - [id]  |pin       |[id]     |schedule_id |schedule_id   |active_id|active_id|active_id     |active_id|active_id|active_id|active_id|active_id|
	arg3 -       |number    |         |            |              |         |         |call_to_number|member_id|member_id|member_id|member_id|member_id|

Description: Commands:
    active - list of active audio conferences (including joined)
    startadhoc - (not supported) starts adhoc conference. number - add number initial member. pin - if specified as *<extnumber> - private conference of <extnumber> will call the <extnumber> in addition to the specified number    scheduled - all scheduled meetings
    joinaudio - (not supported) replaces video only schedule with joined conference where viseo and audio conferences can communicate to each other.
    removeschedule - deleted schedule of conference. Active conference will continue as ad-hoc audio conference.
    dropall - drop all calls in active audio conference. Scheduled conference will be left available until end of schedule. ad-hoc will be terminated
    destroy - terminate all calls, delete schedule (if defined). Active conference will become inavailable
    add - adds call to specified number to the active conference
    hold - put member call on hold
    resume - resume member's call
    mute - mute incoming stream from member
    unmute - remove mute from incoming stream of member
    drop - disconenct member of audio conference
    resetbridge - reset parameters of the web meeting bridge
--------------------------------------------------------------------------------
SampleName: create_delete_stat
Implemented in OMSamples.Samples.CreateDeleteStatSample
Description: This sample shows how to delete and create Statistics object. 
Statistics 'MYSTAT' should be initialized before runing this sample. 
(use update_stat sample)
--------------------------------------------------------------------------------
SampleName: create_prompt_set
Implemented in OMSamples.Samples.CreatePromptSetSample
Description: Synthetic sample. It shows how to configure PromptSet object.
--------------------------------------------------------------------------------
SampleName: create_shared_parking
Implemented in OMSamples.Samples.CreateSharedParkingSample
Parameters:
	arg1 - name of shared parking place

Description: This sample adds Shared parking place. The name MUST start with 'SP'.
--------------------------------------------------------------------------------
SampleName: parameter
Implemented in OMSamples.Samples.CustomParameters
Parameters:
	arg1 - show           | set    | delete |
	arg2 - [partialname]  | name   | name   |
	arg3 -                | value  |        |

Description: Updates or sets parameter value
--------------------------------------------------------------------------------
SampleName: display
Implemented in OMSamples.Samples.DisplayAllSample
Description: Shows information about all Parameters, Codecs, predefined conditions of the rules, IVRs and Extensions.
--------------------------------------------------------------------------------
SampleName: dn_monitor
Implemented in OMSamples.Samples.DNmonitorSample
Description: Shows how to listen for DN updates
--------------------------------------------------------------------------------
SampleName: extension
Implemented in OMSamples.Samples.ExtensionSample
Parameters:
	arg1 - show       | create   | delete    | update            |lookupemail
	arg2 - [extnumber]| extnumber| extnumber | extnumber         |email
	arg3 -            | list_of_parameters   | list_of_parameters|

Description: Working with Extension. Partial configuration
 list_of_parameters is sequence of space separated strings (taken in quotes if required):
    FIRST_NAME=<string> - first name
    LAST_NAME=<string> - last name
    EMAIL=<string> - email
    MOBILE=<numric string> - mobile number
    OUTBOUND_CALLER_ID=<numeric string> - mobile number
    profile.<AvailableProfileNAME>=AV(NA:<DestinationType>.[<number>].[<externalnumber>],[+|-]NAI:<DestinationType>.[<number>].[<externalnumber>],BUSY:<DestinationType>.[<number>].[<externalnumber>],[+|-]BUSYI:<DestinationType>.[<number>].[<externalnumber>])
    profile.<AwayProfileNameNAME>=AW(IALL:<DestinationType>.[<dnnumber>].[<externalnumber>],[+|-]IOOO:<DestinationType>.[<number>].[<externalnumber>],EALL:<DestinationType>.[<number>].[<externalnumber>],[+|-]EOOO:<DestinationType>.[<number>].[<externalnumber>])
    CURRENT_STATUS=<profilename> - name of the current profile
    prop.<NAME>=<value> - set DN property with name <NAME> to the <value>
    OVERRIDE_STATUS=<profilename>,<timespan>
    BINDTOMS=true|false
    REINVITES=true|false
    REPLACES=true|false
    RECORDCALLS=true|false
    SRTP=true|false
    Extension.<extension_simple_property>=<propval>
    AGENTLOGIN=<listofqueues>    AGENTLOGOUT=<listofqueues>
--------------------------------------------------------------------------------
SampleName: ext_line_rule_update
Implemented in OMSamples.Samples.ExternalLineRuleUpdateSample
WARNING: This sample will modify destination of existing rules. Line should be recreated after this test
Parameters:
	arg1 - Virtual extension number of the line

Description: This sample shows how to change destination of ExternalLineRule
--------------------------------------------------------------------------------
SampleName: fax
Implemented in OMSamples.Samples.FaxExtensionSample
Parameters:
	arg1 - show      |create    | update    |delete  
	arg2 - [dnnumber]|dnnumber  | dnnumber  |dnnumber
	arg3 -           |parameters| parameters|       
	arg4...argN - parameters:
    AUTHID=<alfanumeric_string> - 
    AUTHPASS=<alfanumeric_string> - alfanumeric string
    OUTBOUND_CALLER_ID=<numeric string> - outbound called if for calls originated by the device    prop.<NAME>=<value> - set DN property with naem <NAME> to the <value>

Description: Shows how to work with FaxExtension object
--------------------------------------------------------------------------------
SampleName: invoke
Implemented in OMSamples.Samples.InvokeSample
Parameters:
	arg1 - command which should be invoked
	arg2, arg3 and so on - additional parameters for Invoke method - each additional parameter should be set as parameter_name=parameter_value

Description: Shows how to use PhoneSystem.Invoke() method
--------------------------------------------------------------------------------
SampleName: ivr
Implemented in OMSamples.Samples.IVRSample
Parameters:
	arg1 - show        | create            | delete    | update           
	arg2 - [ivr number]| ivrnumber         | ivrnumber | ivrnumber        
	arg3 -             | list_of_parameters|           | list_of_parameters

Description: Working with IVR.
 list_of_parameters is sequence of space separated strings (taken in quotes if required):
    PROMPT=filename|EXT<extnumber> - file which is placed in directory specified by IVRPROMPTPATH parameter or extnumber where from to record new fine with random name
    O<digit>=<IVRForwardType>.[<dnnumber>] - assign specific type of destination to option <digit>. <IVRForward> is from enum IVRForwardType <dnnumber> - local number must be proper for specific number
    TO=<seconds> - number of seconds
    TODEST=<IVRForwardType>.[<dnnumber>] - timeout action - same as for options
    NAME=<ivr name> - name of ivr    prop.<NAME>=<value> - set DN property with naem <NAME> to the <value>
--------------------------------------------------------------------------------
SampleName: notifications
Implemented in OMSamples.Samples.NotificationsMonitorSample
Parameters:
	arg1 - Object type name

Description: Shows update notifications of specified data class. All notifications will be shown if arg1 is not specified
--------------------------------------------------------------------------------
SampleName: omlookup
Implemented in OMSamples.Samples.OMLookup
Description: Shows how to use OMLookup to make own lookup collection of objects. sample is for Extension.EmailAddress
--------------------------------------------------------------------------------
SampleName: outboundrule
Implemented in OMSamples.Samples.OutboundRuleSample
Parameters:
	arg1 - show      | create      | update    | delete | gateways
	arg2 - [name]    | parameters  | id        | id     |
	arg3 -           |             | parameters|        

Description: Working with OurboundRule.
 list_of_parameters is sequence of space separated strings (taken in quotes if required):
    NAME=<name>. checked for uniqueness    PREFIX=<commaseparated list of prefixes>
    PRIORITY=<priority> - no check.
    NUMBERLENGTH=<comma separated list of length ranges>
    DNRANGES=<comma separated list of dn ranges>
    GROUPS=<comma separated list of groups>
    ROUTE<N>=<strip>.<prepend>.<gatewayid>

--------------------------------------------------------------------------------
SampleName: park_orbit_monitor
Implemented in OMSamples.Samples.ParkOrbitMonitorSample
Description: Monitors activity on Parking Orbit
--------------------------------------------------------------------------------
SampleName: phonebook
Implemented in OMSamples.Samples.PhoneBookSample
Parameters:
	arg1 - show                      |lookup             | create              | update            | delete 
	arg2 - 'all'|'company'|dnnumber  |'company'|dnnumber]| ['company'|dnnumber]| ID                | ID     
	arg3...agrN -                           |lookup_parameters  | content_parameters  | content_parameters|        

Description: Working with PhoneBook
 Where: 
    lookup_parameters:        <number to lookup> <minmatch>
    content_parameters:        [PhoneBookEntry property name]=<string> - contact first name
--------------------------------------------------------------------------------
SampleName: queue
Implemented in OMSamples.Samples.QueueSample
Parameters:
	arg1 - show     | create     | update    | delete  
	arg2 - [qnumber]| qnumber    | qnumber   | qnumber 
	arg3 -          | parameters | parameters|         

Description: Working with Queues.
 parameters is sequence of space separated strings (taken in quotes if required):
    NAME=<queue name> - name of the queue
    PSTRATEGY=<Queue.PollingStrategyType> - polling strategy as named in Queue.PollingStrategyType
    POLLINGTIME=<seconds> - ringing time for polling callss
    INTRO=filename - intro prompt of the queue - the file which is loacted in the directory specified by IVRPROMPTPATH parameter.
    MOH=filename - Music On Hold for calls which are waiting in the queue
    AGENTS=<dnnumber>[,<dnnumber>] - list of queue agents
    MANAGERS=<dnnumber>[,<dnnumber>] - list of queue managers
    MAXWAIT=<seconds> - maximal time of waiting in the queue.
    NOANSWERDEST=<DestinationType>.[<dnnumber>].[<externalnumber>] - timeout action - same as for options
    LOGIN=<dnnumber>[,<dnnumber>] - Agents to login into the queue
    LOGOUT=<dnnumber>[,<dnnumber>] - Agents to logout from the queue
    prop.<NAME>=<value> - set DN property with naem <NAME> to the <value>
--------------------------------------------------------------------------------
SampleName: qlogin
Implemented in OMSamples.Samples.QueueLogin
WARNING: changes login status of the agent in queues
Parameters:
	arg1 - login_all|logout_all|login_current|logout_current|login_only_to|logout_only_from|show_status
	arg2 - agent_extension_number
	arg3...argN - specified list of the queues where action specified by arg1 should be applied

Description: shows how to change status of the agent in the queue. 
--------------------------------------------------------------------------------
SampleName: refresh_line_registration
Implemented in OMSamples.Samples.RefreshLineRegistrationSample
Parameters:
	arg1 - Virtual extension number of External Line

Description: Shows how to refresh registration on VoIP provider Line
--------------------------------------------------------------------------------
SampleName: resetconnection
Implemented in OMSamples.Samples.ResetConnection
no description 
--------------------------------------------------------------------------------
SampleName: ringgroup
Implemented in OMSamples.Samples.RingGroupSampel
Parameters:
	arg1 - show      | create      | update    | delete  
	arg2 - [rgnumber]| rgrnumber   | rgnumber  | rgnumber 
	arg3 -           | parameters  | parameters|         

Description: Working with RingGroup.
 list_of_parameters is sequence of space separated strings (taken in quotes if required):
    NAME=<queue name> - name of the queue
    STRATEGY=<RingGroup.StrategyType> - polling strategy as named in Queue.PollingStrategyType
    AGENTS=<dnnumber>[,<dnnumber>] - list of riggroup
    RINGTIME=<seconds> - ring timeout.
    NOANSWERDEST=<DestinationType>.[<dnnumber>].[<externalnumber>] - timeout action - same as for options
    prop.<NAME>=<value> - set DN property with naem <NAME> to the <value>

    NOTE: RingGroup with Paging strategy can be configured to use multicast transport instead of making calls to each of members.
          To set/reset usage of multicast, set/reset following DN properties of the Paging ringgroup:
            MULTICASTADDR=<muilticatIP>
            MULTICASTPORT=<multocastport>
            MULTICASTCODEC=<multicastcodec>
            MULTICASTPTIME=<codecptime>

--------------------------------------------------------------------------------
SampleName: serialization
Implemented in OMSamples.Samples.Serialization
WARNING: Deserialization modifies configuration (adds or modify objects)
Parameters:
	arg1 - serialize    | deserialize         
	arg2 - xmlfile      | xmlfile             
	arg3 - <objtype>    |                     

Description: Shows how to use serialization subsystem of Object model
--------------------------------------------------------------------------------
SampleName: musiconhold
Implemented in OMSamples.Samples.MusicOnHold
WARNING: modifies configuration.
Parameters:
	arg1...argN - music on hold source in form ENTITY=source where ENTITY is PARAMETER name where source is stored (see array of names in code) or DN.Number of the queue. if no parametest provided - shows full list of configured objects and checks validity of the source

Description: shows how to change music on hold settings
--------------------------------------------------------------------------------
SampleName: officehours
Implemented in OMSamples.Samples.SetOfficeHoursSample
WARNING: This sample can modify office hours/breaktime of objects.
Parameters:
	arg1 - show                         | setofficetime         | setbreaktime          |setholiday           |removeholiday
	arg2 - [holidays|office|dn]         | "office" or dnnumber| "office" or dnnumber|nameofholiday        |nameofholiday
	arg3 - [dnnumber or name of holiday]| RuleHoursType         | RuleHoursType         |yyyy-MM-dd=[hh\:mm]]|
	arg4...agrN -                              | [list_of_ranges]      |[list_of_ranges]       |yyyy-MM-dd=[hh\:mm]]|

Description: Shows how to work with Schedule object and holidays.
list_of_ranges is sequence of the strings. Modifications are applied only for specified days. to clear schedule of specific DayOfWeek set it empty{}
DayOfWeek=[start-end][,start-end]...

--------------------------------------------------------------------------------
SampleName: statmonitor
Implemented in OMSamples.Samples.StatisticsMonitorSample
Parameters:
	arg1..agrN - Statistics 

Description: Shows notificatins for specific statistics object.
--------------------------------------------------------------------------------
SampleName: update_stat
Implemented in OMSamples.Samples.UpdateStatSample
Description: This sample creates and continuously update Statistic object named 'MYSTAT'. After running this sample statistics 'MYSTAT' will be available for create_delete_stat sample
--------------------------------------------------------------------------------