NAME
Kernel::System::CommunicationChannel – Functions to manage communication channels.
DESCRIPTION
All functions to manage communication channels.
PUBLIC INTERFACE
new()
Don't use the constructor directly, use the ObjectManager instead:
my $CommunicationChannelObject = $Kernel::OM->Get('Kernel::System::CommunicationChannel');
ChannelAdd()
Add new communication channel.
my $ChannelID = $CommunicationChannelObject->ChannelAdd(
ChannelName => 'Email', # (required) Communication channel name
Module => 'Kernel::System::CommunicationChannel::Internal', # (required) Module
PackageName => 'Framework', # (required) Package name
ChannelData => {...}, # (optional) Additional channel data (can be array, hash, scalar).
ValidID => 1, # (optional) Default 1.
UserID => 1, # (required) UserID
);
Returns:
$ChannelID = 1;
ChannelGet()
Get a communication channel.
my %CommunicationChannel = $CommunicationChannelObject->ChannelGet(
ChannelID => '1', # (optional) Communication channel id
# or
ChannelName => 'Email', # (optional) Communication channel name
);
Returns:
%CommunicationChannel = (
ChannelID => 1,
ChannelName => 'Email',
Module => 'Kernel::System::CommunicationChannel::Email',
PackageName => 'Framework',
ChannelData => {...}, # Additional channel data (can be array, hash, scalar).
DisplayName => 'Email', # Configurable
DisplayIcon => 'fa-envelope', # Configurable
ValidID => 1,
CreateTime => '2017-01-01 00:00:00',
CreateBy => 1,
ChangeTime => '2017-01-01 00:00:00',
ChangeBy => 1,
);
ChannelUpdate()
Update communication channel.
my $Success = $CommunicationChannelObject->ChannelUpdate(
ChannelID => '1', # (required) ChannelID that will be updated
ChannelName => 'Email', # (required) New channel name
Module => 'Kernel::System::CommunicationChannel::Internal', # (optional) Module
PackageName => 'Framework', # (optional) Package name
ChannelData => {...}, # (optional) Additional channel data (can be array, hash, scalar)
ValidID => 1, # (optional) ValidID
UserID => 1, # (required) UserID
);
Returns:
$Success = 1;
ChannelList()
Get a list of all available communication channels.
my @CommunicationChannels = $CommunicationChannelObject->ChannelList(
ValidID => 1, # (optional) filter by ValidID
);
Returns:
@CommunicationChannels = (
{
ChannelID => 1,
ChannelName => 'Email',
Module => 'Kernel::System::CommunicationChannel::Email',
PackageName => 'Framework',
ChannelData => {...},
DisplayName => 'Email',
DisplayIcon => 'fa-envelope',
ValidID => 1,
CreateTime => '2017-01-01 00:00:00',
CreateBy => 1,
ChangeTime => '2017-01-01 00:00:00',
ChangeBy => 1,
},
{
ChannelID => 2,
ChannelName => 'Phone',
Module => 'Kernel::System::CommunicationChannel::Phone',
PackageName => 'Framework',
ChannelData => {...},
DisplayName => 'Phone',
DisplayIcon => 'fa-phone',
ValidID => 1,
CreateTime => '2017-01-01 00:00:00',
CreateBy => 1,
ChangeTime => '2017-01-01 00:00:00',
ChangeBy => 1,
},
...
);
ChannelSync()
Synchronize communication channels in the database with channel registration in the configuration.
my %Result = $CommunicationChannelObject->ChannelSync(
UserID => 1,
);
Returns:
%Result = (
ChannelsUpdated => [ 'Email', 'Phone' ],
ChannelsAdded => [ 'Chat' ],
ChannelsInvalid => [ 'Internal' ],
);
ChannelObjectGet()
Returns instance of the Channel object.
my $Object = $CommunicationChannelObject->ChannelObjectGet(
ChannelName => 'Email', # ChannelName or ChannelID required
);
my $Object = $CommunicationChannelObject->ChannelObjectGet(
ChannelID => 2, # ChannelName or ChannelID required
);
Warning: this function returns no object in case a channel is no longer available in the system, so make sure to check its return value.
ChannelDrop()
Drop an invalid communication channel (that only exists in the database, but not in the configuration). By default, this will only drop channels that have no associated article data; use DropArticleData
to force article data removal as well. Channels provided by the OTRS framework can never be dropped.
my $Success = $CommunicationChannelObject->ChannelDrop(
ChannelID => 1, # (required) Delete by channel ID
# or
ChannelName => 'SomeChannel', # (required) Delete by channel name
DropArticleData => 1, # (optional) Also drop article data if possible, default: 0
);
Returns:
$Success = 1;
ChannelDelete()
Delete communication channel record from the database.
my $Success = $CommunicationChannelObject->ChannelDelete(
ChannelID => 1, # (optional) Delete by ChannelID
# or
ChannelName => 'Email', # (optional) Delete by Channel name
);
Returns:
$Success = 1;
PRIVATE FUNCTIONS
_ChannelListCacheCleanup()
Delete communication channel cache.
my $Success = $CommunicationChannelObject->_ChannelListCacheCleanup();
Returns:
$Success = 1;