CommunicationChannel#

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 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;