+# send out the talk messages taking into account vias and connectivity
+sub send_talks
+{
+ my ($self, $ent, $line) = @_;
+
+ my ($to, $via) = $ent =~ /(\S+)>(\S+)/;
+ $to = $ent unless $to;
+ my $call = $via ? $via : $to;
+ my $clref = Route::get($call);
+ my $dxchan = $clref->dxchan if $clref;
+ if ($dxchan) {
+ $dxchan->talk($self->{call}, $to, $via, $line);
+ } else {
+ $self->send($self->msg('disc2', $via ? $via : $to));
+ my @l = grep { $_ ne $ent } @{$self->{talklist}};
+ if (@l) {
+ $self->{talklist} = \@l;
+ } else {
+ delete $self->{talklist};
+ $self->state('prompt');
+ }
+ }
+}
+
+sub talk_prompt
+{
+ my $self = shift;
+ my @call;
+ for (@{$self->{talklist}}) {
+ my ($to, $via) = /(\S+)>(\S+)/;
+ $to = $_ unless $to;
+ push @call, $to;
+ }
+ return $self->msg('talkprompt', join(',', @call));
+}
+
+#
+# send a load of stuff to a command user with page prompting
+# and stuff
+#
+
+sub send_ans
+{
+ my $self = shift;
+
+ if ($self->{pagelth} && @_ > $self->{pagelth}) {
+ my $i;
+ for ($i = $self->{pagelth}; $i-- > 0; ) {
+ my $line = shift @_;
+ $line =~ s/\s+$//o; # why am having to do this?
+ $self->send($line);
+ }
+ $self->{pagedata} = [ @_ ];
+ $self->state('page');
+ $self->send($self->msg('page', scalar @_));
+ } else {
+ for (@_) {
+ if (defined $_) {
+ $self->send($_);
+ } else {
+ $self->send('');
+ }
+ }
+ }
+}