#!/usr/bin/perl -w use strict; use warnings; use English; use Readonly; use NGCP::API::Client; use Config::Any; use Log::Log4perl; Readonly my $CONF_FILE => '/etc/ngcp-vmnotify/vmnotify.conf'; my %CONFIG = %{ Config::Any->load_files({ files => [ $CONF_FILE ], use_ext => 1 })->[0]->{$CONF_FILE} or do { log_syslog( "$PROGRAM_NAME error: Cannot load config $CONF_FILE: $ERRNO"); exit 1; }; }; my $debug = $CONFIG{DEBUG} ? "DEBUG" : "INFO"; Log::Log4perl->init(\<get_logger("vmnotify"); sub send_notify { my $from = $ARGV[0]; my $dest = $ARGV[1]; my $mailbox = $ARGV[2]; my $caller = $ARGV[3]; my $duration = $ARGV[4]; my $date = $ARGV[5]; my $body = $ARGV[6]; $from =~ s/\s+//g; my $log_str = sprintf <new(); my $res = $client->request('GET', "/api/subscribers/?alias=$mailbox"); unless($res->is_success) { die "Failed to fetch subscriber for alias $mailbox, aborting!"; } my $subs = $res->as_hash->{_embedded}->{'ngcp:subscribers'}; unless(ref $subs eq 'HASH') { die "Failed to fetch single subscriber for alias $mailbox, aborting!"; } my $content = { subscriber_id => $subs->{id}, caller => $from, callee => $dest, text => $body, }; $res = $client->request( 'POST', '/api/sms/?skip_checks=true&skip_journal=false', $content ); die $res->status_line,"\n" unless $res->is_success; }; if ($EVAL_ERROR) { die sprintf "Cannot send %s error=%s", $log_str, $EVAL_ERROR; } else { $log->debug($log_str); } return; } sub main { eval { send_notify(); }; if ($EVAL_ERROR) { $log->error($EVAL_ERROR); exit 1; } return; } main(); exit 0;