Bb-Collaborate-V3

 view release on metacpan or  search on metacpan

lib/Bb/Collaborate/V3/Session/Telephony.pm  view on Meta::CPAN

	sessionPIN => '1234',
	);

    $session_telephony->update(\%telephony_data);

Updates a session's telephony characteristics.

=cut

# custom unpacker for GetTelephonyResponse

sub _get_results {
    my $class = shift;
    my $som = shift;
    my $connection = shift;

    $connection->_check_for_errors($som);

    my $resp = $som->body->{GetTelephonyResponse} || $som->body->{SetTelephonyResponse};

    if ($resp) {

        my %rec = %{ $resp };
        my $items = delete $rec{TelephonyResponseItem};
        my $is_phone = 0;

        if ($items) {
            my $types = {moderator => 'chair', participant => 'nonChair', serverSIP => 'session', serverPhone => 'session'};

	    for (@$items) {
                my %item = %$_;
                $is_phone = 1 if $item{itemType} eq 'serverPhone';

                my $type = $types->{ delete $item{itemType} };
                unless ($type) {
		    require YAML::Syck; my $item_yaml = YAML::Syck::Dump($_);
		    warn "skipping telephony item: $item_yaml";
		    next;
                }

		$rec{$type . 'PIN'} = delete $item{pin} if $item{pin};
                $type .= 'SIP' if $type eq 'session';
		$rec{$type . 'Phone'} = delete $item{uri} if $item{uri};

                if (%item) {
		    require YAML::Syck; my $item_yaml = YAML::Syck::Dump(\%item);
		    warn "unprocessed telephony item data: $item_yaml";
                }
	    }
        }

	$rec{isPhone} = $is_phone;

        return [ \%rec ]
    }

    warn "problems unpacking Telephony response";
    return $class->SUPER::_get_results( $som, $connection );
}

sub update {
    my $self = shift;
    my $updates = shift;
    my %opt = @_;

    # include the entire record
    my @properties = grep { defined $self->$_ } ($self->properties);

    return $self->SUPER::update($updates, %opt, changed => \@properties);
}

1;



( run in 0.594 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )