LINE-Bot-API
view release on metacpan or search on metacpan
lib/LINE/Bot/Audience.pm view on Meta::CPAN
package LINE::Bot::Audience;
use strict;
use warnings;
use LINE::Bot::API::Client;
use LINE::Bot::API::Response::Common;
use LINE::Bot::API::Response::AudienceMultipleData;
use LINE::Bot::API::Response::AudienceData;
use LINE::Bot::API::Response::AudienceGroupForUploadingUserId;
use LINE::Bot::API::Response::AudienceGroupForClickRetargeting;
use LINE::Bot::API::Response::AudienceGroupForImpressionRetargeting;
use LINE::Bot::API::Response::AudienceAuthorityLevel;
use constant {
DEFAULT_MESSAGING_API_ENDPOINT => 'https://api.line.me/v2/bot/',
};
use Furl;
use Carp 'croak';
use URI;
use URI::QueryParam;
sub new {
my($class, %args) = @_;
my $client = LINE::Bot::API::Client->new(%args);
bless {
client => $client,
channel_secret => $args{channel_secret},
channel_access_token => $args{channel_access_token},
messaging_api_endpoint => $args{messaging_api_endpoint} // DEFAULT_MESSAGING_API_ENDPOINT,
}, $class;
}
sub request {
my ($self, $method, $path, @payload) = @_;
return $self->{client}->$method(
$self->{messaging_api_endpoint} . $path,
@payload,
);
}
sub rename_audience {
my ($self, $opts) = @_;
my $res = $self->request(post => 'audienceGroup/'. $opts->{audience_group_id} . '/updateDescription', +{
'description' => $opts->{description},
});
LINE::Bot::API::Response::Common->new(%{ $res });
}
sub create_audience_for_uploading {
my ($self, $opts) = @_;
my $res = $self->request(post => 'audienceGroup/upload', +{
'description' => $opts->{description},
'isIfaAudience' => $opts->{isIfaAudience},
'uploadDescription' => $opts->{uploadDescription},
'audiences' => $opts->{audiences},
});
LINE::Bot::API::Response::AudienceGroupForUploadingUserId->new(%{ $res });
}
sub create_audience_for_click_based_retartgeting {
my ($self, $opts) = @_;
my $res = $self->request(post => 'audienceGroup/click', +{
'description' => $opts->{description},
'requestId' => $opts->{requestId},
'clickUrl' => $opts->{clickUrl},
});
LINE::Bot::API::Response::AudienceGroupForClickRetargeting->new(%{ $res });
}
sub create_audience_for_impression_based_retargeting {
my ($self, $opts) = @_;
my $res = $self->request(post => 'audienceGroup/imp', +{
'description' => $opts->{description},
'requestId' => $opts->{requestId},
});
LINE::Bot::API::Response::AudienceGroupForImpressionRetargeting->new(%{ $res });
}
sub get_audience_data {
my ($self, $opts) = @_;
my $res = $self->request(get => 'audienceGroup/' . $opts->{audienceGroupId}, +{});
LINE::Bot::API::Response::AudienceData->new(%{ $res });
}
sub update_authority_level {
my ($self, $opts) = @_;
my $res = $self->request(put => 'audienceGroup/authorityLevel', +{
'authorityLevel' => $opts->{authorityLevel},
});
( run in 2.580 seconds using v1.01-cache-2.11-cpan-524268b4103 )