Использование ботов с iMessage


В 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.

Рис. 9.50. Программа cpan выполнит всю работу автоматически
Рис. 9.50. Программа cpan выполнит всю работу автоматически

После установки 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 таким образом, чтобы клиент начал выполнять ваш зловредный план. Эта завершающая часть процедуры очень проста:

  1. Запустите iMessage.
  2. Из строки меню выберите команды iMessage→Preferences… и перейдите на вкладку Alerts.
  3. Разверните список событий и выберите опцию Message Received.
  4. Установите флажок Run AppleScript и выберите из списка опцию Сhatbot-eliza.applescript.
  5. Разверните список событий и выберите опцию Text Invitation.
  6. Установите флажок Run AppleScript и выберите из списка опцию chatbot-eliza.applescript.
  7. Закройте окно параметров предпочтительной настройки.

Итак, вы выполнили всю сложную часть работы. Теперь пользователи, пытающиеся войти с вами в контакт через iMessage, будут беседовать с «виртуальным психотерапевтом».

Установка автоответчика для конкретного собеседника

Если вы выполните все приведенные чуть ранее инструкции, с ботом будут разговаривать все пользователи, которые пытаются войти с вами в контакт. Это будет довольно забавно, и вы сможете понаблюдать, какое время потребуется ничего не подозревающему человеку на то, чтобы понять, что он разговаривает не с вами (личный рекорд: 27 минут). Правда, эта настройка имеет приличное количество ограничений. Либо каждый, кто попытается завести с вами чат, будет беседовать с ботом, либо никто.

Гораздо лучше было бы заставить беседовать с Eliza не всех собеседников, а только некоторых. Например, в случае с мнительным боссом вы можете захотеть, чтобы с Eliza разговаривал только он, в то время как вы будете продолжать вести чат с желанными собеседниками. Чтобы выполнить такую настройку, выберите из меню команды Buddies→Alerts, установите для опции Event значение Text Invitation, а затем установите флажок Run AppleScript. Выберите скрипт Chatbot-Eliza.applescript, и выбранные собеседники будут иметь дело с Eliza.

Рис. 9.51. Боты не решают никаких проблем, их беседа лишена смысла, но они не сдаются
Рис. 9.51. Боты не решают никаких проблем, их беседа лишена смысла, но они не сдаются

Отлично, вы понаблюдали за тем, как чатбот беседует с реальным человеком. А как насчет беседы двух ботов друг с другом? Если у вас несколько учетных записей iMessage, устроить такую беседу несложно. Установите параметры настройки для каждой из них так, как было описано чуть ранее. Отправьте сообщение с одной из этих учетных записей на другую и полюбуйтесь на результат (рис. 9.51)! Большого смысла беседа двух ботов не имеет, но они не утомляются и не сдаются!