В iMessage имеется множество способов отделаться от надоедливых собеседников, но все они не слишком забавны. В этом рецепте будет описан метод, руководствуясь которым можно заставить болтуна общаться с ботом-автоответчиком.
Вполне возможно, что вы уже знаете о том, что iMessage можно настроить таким образом, чтобы во время вашего отсутствия клиент автоматически отвечал на входящие сообщения. Это информирует ваших собеседников о том, что вы отсутствуете. С выходом iMessage вы получаете гораздо более интересные альтернативы простому автоответчику.
Чем могут эти возможности вас заинтересовать? Во-первых, совершенно очевидно, что наблюдать за тем, как клиент iMessage «общается» за вас с другими пользователями, будет попросту забавно. Тем не менее, есть и более серьезные причины. Если в числе ваших собеседников есть некто, любящий болтать по пустякам, отвлекая вас от более важных дел, вы можете создать у него иллюзию того, что вы действительно с ним беседуете (ведь ему хочется именно этого). Вот и еще один вариант. Представьте себе, что вы работаете удаленно, и у вас такой босс, который постоянно проверяет, точно ли вы находитесь на связи. Что же, этот хак создаст у него иллюзию того, что вы все 24 часа в сутки не отходите от компьютера (а вы в это время можете есть, спать, прогуливать собаку…).
Чтобы реализовать этот рецепт, вам потребуется выполнить несколько несложных настроек клиента iMessage, а также скопировать с сайта Apple пример скрипта на языке AppleScript и скачать копию виртуального собеседника Eliza. iMessageу вас уже есть, так что последующие инструкции относятся к другим файлам, которые вам потребуются. Apple предоставляет ряд примеров скриптов для iMessage, которые доступны для скачивания по адресу: http://developer.apple.com/samplecode/iMessageAppleScriptSamples/iMessageAppleScriptSamples.zip. Поэтому все файлы, необходимые для AppleScript, в вашем распоряжении тоже имеются. Осталось только добыть файлы, необходимые для Eliza.
Это проблем не представляет. Вместо того чтобы переходить в браузере еще по одной ссылке, вы можете выполнить оставшуюся часть работы с помощью Terminal. Введите следующую команду:
1$ sudo cpan
Вам будет предложено ввести пароль (см. этот рецепт). Вы можете получить несколько сообщений об ошибках или конфигурационных сообщений. Проигнорируйте их. Введите no, если cpan спросит, хотите ли вы выполнить конфигурирование вручную, и программа сконфигурируется автоматически.
После того как инициализационные переговоры будут пропущены, вы увидите приглашение командной строки, которое выглядит следующим образом: cpan>. Это абсолютно нормально. При появлении этого приглашения, введите следующую команду:
1cpan> install Chatbot::Eliza
Обо всем остальном позаботится Terminal. Программа найдет необходимые файлы в Интернете, скачает их, а затем и установит на вашем компьютере. Это просто замечательно. Результат выглядит так, как показано на рис. 9.50.
После установки Eliza вы можете переключить свое внимание на файлы AppleScript. Как выясняется, простое применение скрипта, предоставленного Apple, генерирует сообщения об ошибках, но эту ситуацию несложно исправить. Начнем с распаковки ранее загруженного .zip-файла, затем скопируйте файлы Chatbot-Eliza.applescript и Chatbot-Eliza.pl в папку ~/Library/Scripts/iMessage. Если этой папки не существует, создайте ее, нажав клавиатурную комбинацию Command+N.
Откройте файл Chatbot-Eliza.applescript с помощью приложения Script Editor (/Applications/AppleScript/Script Editor.app). В этом скрипте необходимо изменить три фрагмента. Во-первых, найдите строку, представленную в листинге 9.1.
12//Листинг 9.1. Первая строка скрипта Chatbot-Eliza.applescript, подлежащая изменению set elizaScriptDir to POSIX path of (((path to desktop) as string) & «Chatbot-Eliza-1.04»)
Замените ее на строку, представленную в листинге 9.2.
12//Листинг 9.2. Строка, на которую необходимо заменить строку в листинге 9.1 set elizaScriptDir to null
Первое изменение было простым, но теперь необходимо внести еще ряд изменений. Найдите и вырежьте фрагмент, представленный в листинге 9.3.
123456789//Листинг 9.3. Фрагмент скрипта Chatbot-Eliza.applescript, подлежащий удалению on received text invitation theMessage from buddy theBuddy for service theService for chat theChat tell theChat accept invitation post message «Hello! What can I help you with today?» end tell end received text invitation
Замените вырезанный фрагмент кодом, представленным в листинге 9.4.
1234567//Листинг 9.4. Код, предназначенный на замену вырезанному фрагменту (см. листинг 9.3) on received text invitation theMessage from theBuddy for theChat tell theChat accept send «Hello! What can I help you with today?» to theChat end tell end received text invitation
Наконец, выполним последнее изменение. Найдите и вырежьте фрагмент, представленный в листинге 9.5.
123456789//Листинг 9.5. Последний фрагмент скрипта Chatbot-Eliza.applescript, подлежащий удалению on message received theMessage from buddy theBuddy for service theService for ¬ chat theChat set theResponse to runChatbotEliza(theMessage) tell theChat post message theResponse end tell end message received
Замените вырезанный фрагмент кодом, представленным в листинге 9.6.
1234567//Листинг 9.6. Код, предназначенный на замену вырезанному фрагменту (см. листинг 9.5) on message received theMessage from theBuddy for theChat set theResponse to runChatbotEliza(theMessage) tell theChat send theResponse to theChat end tell end message received
Скомпилируйте отредактированный скрипт, сохраните его, и можете приступать к дальнейшим действиям.
Итак, вы установили Eliza и отредактировали скрипт, предоставленный Apple. Теперь вам осталось только настроить iMessage таким образом, чтобы клиент начал выполнять ваш зловредный план. Эта завершающая часть процедуры очень проста:
- Запустите iMessage.
- Из строки меню выберите команды iMessage→Preferences… и перейдите на вкладку Alerts.
- Разверните список событий и выберите опцию Message Received.
- Установите флажок Run AppleScript и выберите из списка опцию Сhatbot-eliza.applescript.
- Разверните список событий и выберите опцию Text Invitation.
- Установите флажок Run AppleScript и выберите из списка опцию chatbot-eliza.applescript.
- Закройте окно параметров предпочтительной настройки.
Итак, вы выполнили всю сложную часть работы. Теперь пользователи, пытающиеся войти с вами в контакт через iMessage, будут беседовать с «виртуальным психотерапевтом».
Установка автоответчика для конкретного собеседника
Если вы выполните все приведенные чуть ранее инструкции, с ботом будут разговаривать все пользователи, которые пытаются войти с вами в контакт. Это будет довольно забавно, и вы сможете понаблюдать, какое время потребуется ничего не подозревающему человеку на то, чтобы понять, что он разговаривает не с вами (личный рекорд: 27 минут). Правда, эта настройка имеет приличное количество ограничений. Либо каждый, кто попытается завести с вами чат, будет беседовать с ботом, либо никто.
Гораздо лучше было бы заставить беседовать с Eliza не всех собеседников, а только некоторых. Например, в случае с мнительным боссом вы можете захотеть, чтобы с Eliza разговаривал только он, в то время как вы будете продолжать вести чат с желанными собеседниками. Чтобы выполнить такую настройку, выберите из меню команды Buddies→Alerts, установите для опции Event значение Text Invitation, а затем установите флажок Run AppleScript. Выберите скрипт Chatbot-Eliza.applescript, и выбранные собеседники будут иметь дело с Eliza.
Отлично, вы понаблюдали за тем, как чатбот беседует с реальным человеком. А как насчет беседы двух ботов друг с другом? Если у вас несколько учетных записей iMessage, устроить такую беседу несложно. Установите параметры настройки для каждой из них так, как было описано чуть ранее. Отправьте сообщение с одной из этих учетных записей на другую и полюбуйтесь на результат (рис. 9.51)! Большого смысла беседа двух ботов не имеет, но они не утомляются и не сдаются!