Perl & Applescript probleempje met iChat

Hoi,

Ik probeer via het programma ICAR (dat is een Auto-answer plugin voor iChat … zie http://pygmysoftware.com/software/icar/) mijn iChat automatisch te laten antwoorden op bepaalde commando’s die ik vanop afstand naar mijn ‘thuis-mac’ stuur. Een soort van CHAT BOT dus.

ICAR kan een Applescript of een perl script starten na het ontvangen van een iChat bericht.
Nu heb ik al een scriptje dat min of meer werkt en kijkt naar de accountnaam van de persoon die een berichtje stuurt. Afhankelijk daarvan kan je iets laten antwoorden …

De bedoeling is dat als ik het woord ‘luister’ typ, mijn iChat automatisch een Audio sessie start en de persoon gaat uitnodigen. Op die manier kan je vanop afstand meeluisteren wat er thuis allemaal gebeurd. Op dezefde manier kan je bvb via een ander commando een videochat lanceren met de camera op de remote locatie.

Onderstaande code werkt niet helemaal … wie ziet wat er fout kan zijn ?
De eerste ‘if’ en de laatste ‘else’ werken perfect, maar het Applescript wil niet starten.
Het Applescript op zich werkt wel, maar wil niet starten vanuit dit Perl script…

[code:1:1009d37126]
#!/usr/bin/perl

$screen_name = $ENV{‘iCAR_screenname’};
$real_name = $ENV{‘iCAR_name’};
$received_message = $ENV{‘iCAR_message’};

if ($screen_name eq ‘mijnnaam@mac.com’) {
print “Dag $real_name, hoe gaat het ?”;
}

elsif (lc($received_message) =~ /luister/)
{
return <<EOS;
tell application "iChat"
send audio invitation to account id "AIM:mijnnaam@mac.com"
end tell
EOS
}

else
{
print “Sorry $real_name, i’m currently away from my Mac.”;
}
[/code:1:1009d37126]

Het lijkt mij dat je geen AppleScript code direct inline in perl code kan stoppen. Ik kan namelijk niets vinden over de return <<EOS; constructie die je gebruik.

Daarnaast krijg ik het idee dat de code direct retourneert op de eerste regel van dat elsif statement. Door die return.

Maar mijn perl kennis is vrijwel nihil.

Mocht je een alternatieve manier zoeken op applescript te draaien vanuit Perl, probeer dan eens osascript. Tik maar “man osascript” in een terminal window. Maar misschien vertel ik nu niet iets nieuws.

Edit:
Yup… Die EOS is een metachracter(??) voor “$”. Dus in mijn oneindige wijsheid (jaja) krijg ik het vermoeden dat je een poging doet om applescript op een commandline te runnen.

wel dit script heeft ooit gewerkt met een vorige versie van OSX (10.2.x was dat toen) en een vorige versie van iChat. Sinds 10.3 en 10.4 werkt het niet meer, dus ik vrees dat het gewoon ergens een of ander commando is dat het niet meer doet.

Als je dat Applescript draait in de script editor werkt het perfect.

Ik zoek dus inderdaad een manier om Applescript te laten werken vanuit een Perl Script.

Livi

http://search.cpan.org/~cnandor/Mac-Glue-1.25/Glue.pm