The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Bb::Collaborate::Ultra::Session::Log

DESCRIPTION

Session logging class.

EXAMPLE

    my @sessions =  Bb::Collaborate::Ultra::Session->get($connection, {contextId => $context_id});
    for my $session (@sessions) {
        print "Session: ". $session->name . "\n";
        my @logs = $session->logs({expand => 'attendees' });

        for my $log (@logs) {
            say "\tOpened: " .(scalar localtime $log->opened);
            for my $attendee (@{$log->attendees}) {
                my $first_join;
                my $elapsed = 0;
                for my $attendance (@{$attendee->attendance}) {
                    my $joined = $attendance->joined;
                    $first_join = $joined
                        if !$first_join || $first_join > $joined;
                    $elapsed += $attendance->left - $joined;
                }
                say sprintf("\tUser %s (%s) joined at %s, stayed %d minutes", $attendee->externalUserId, $attendee->displayName, (scalar localtime $first_join), $elapsed / 60);
            }
            say "\tClosed: " .(scalar localtime $log->closed);
        }
    }

METHODS

This class supports the `get` method as described in https://xx-csa.bbcollab.com/documentation#Attendee-collection.

get_attendees

Returns a list of attendees for this session instance;

   my @all_attendees;
   my @logs = $session->get_logs;
   for my $log (@logs) {
       push @all_attendees, $log->get_attendees;
   }

Note: Alternatively, the expand = 'attendees'> query parameter may be set in the get_logs. This causes the server to eagerly populate the attendees in each session log.

   my @all_attendees;
   my @logs = $session->get_logs({expand => 'attendees' });
   for my $log (@logs) {
       push @all_attendees, @{ $log->attendees };
   }

This reduces the number of calls to the server, and is generally faster.