Меняем меню: расширения волнового клиента




    Как известно, в Google Wave можно использовать два типа расширений (extensions) — гаджеты и роботы. Напомню: 
    Гаджет — небольшая программка, которая выполняется на стороне клиента, принадлежит определенной волне и позволяет ее участникам взаимодействовать между собой, поскольку они все могут менять статус гаджета и одновременно видят эти изменения. Наглядный пример — гаджет голосования. Вы проголосовали «за» или «против», гаджет учел ваш голос и изменил таблицу результатов. Все участники волны, в которую внедрен данный гаджет, увидели это изменение.
    Робот — исполняется на стороне сервера. Можно даже сказать «на стороне серверов», поскольку сейчас роботы размещаются «в облаках», на серверах Google AppEngine. Робот — равноправный участник волны. Так же, как люди, он имеет доступ к содержанию волны, может его изменять, добавлять или удалять участников данной волны, а также создавать новые «блипы» (реплики в обсуждении) и новые волны.

    Возникает вопрос, а как добавлять роботов или гаджеты в волну? Поскольку роботы — это полноценные участники волны, то их можно добавлять точно так же, как и людей. Заносите адрес робота в свою адресную книгу, а потом оттуда по мере необходимости подключаете робота к нужной волне. Гаджет вставляется с помощью специального пункта в меню «Debug» (мы сейчас говорим о волновом клиенте, который используется в «песочнице» Google Wave Sandbox — wavesandbox.com).

    Однако со временем понимаешь, что этот процесс нужно сделать более гибким. Часто приходится подключать сразу несколько роботов к волне. Или нужно вставить какой-то собственный гаджет, которого нет в общедоступной библиотеке (или, как правильно, «гаджетнице»? :). Для решения этих вопросов мы имеем в данное время простой механизм расширения интерфейса волнового клиента. С его помощью мы можем добавлять дополнительные кнопки в меню редактирования блипа и в меню создания новой волны. Вот как это выглядит.

    Задача 1. Вы написали (или откопали где-то код) удобный гаджет. Часто и с удовольствием вставляете его в волну. Но вам не хочется постоянно лезть в меню «Debug» и добавлять строку с адресом гаджета. Хорошо бы иметь просто кнопку, которая будет вставлять нужный гаджет по мановению вашего пальца.

    Создаете «манифест», т.е. XML-файл с таким примерно текстом: 
    <extension location="Toolbar">
       <info text="Are You In?"
             description="Click to insert the Are You In? gadget."
             imageUrl="http://wave-api.appspot.com/public/gadgets/areyouin/icon.png"/>
       <insertGadget url="http://wave-api.appspot.com/public/gadgets/areyouin/gadget.xml"/>
     </extension>


    Затем создаете новую волну, идете в меню «Debug >Add Extension Installer» и там указываете адрес, где лежит ваш «манифест».

    Сохраняете волну (кнопка «Done»). В ней появляется изображение элемента из «пазлов» с названием вашего гаджета, надписью «Автор неизвестен» и кнопкой «Install». Ее и нажимаем. 

    Все, теперь в вашем меню редактирования «блипа» появляется новая кнопка, которая вставляет ваш гаджет куда пожелаете. (Гусары, молчать! :) На моем скриншоте вы видите добавленную кнопку с сине-белым логотипом facebook'а.

    Примечание: Структура «манифеста», как видим, очень проста. Location указывает место, куда будет добавлена кнопка (сейчас допустимо два варианта — Toolbar и NewWaveMenu, о котором чуть ниже). Info text — пояснение. Description — более подробное описание гаджета. ImageUrl — расположение картинки для кнопки. InsertGadget url — соответственно, местоположение xml-файла вашего гаджета. Можете попробовать с  демо-гаджетом, который лежит здесь - http://wave-api-dmo.appspot.com/public/simplemap/whereareyou.xml

    Задача 2. Вы продались роботам, частенько выкрикиваете во сне «Слава роботам! Смерть человекам!» и в любую волну добавляете с десяток любимых ботов. Правильно, Твитти нужна? Нужна, кто ж сообщит последние сплетни из твиттера. Рози нужна? Нужна, кто ж будет переводить их с разных языков. «Иветта, Мюзетта, Жанетта...»
    Хочется иметь возможность одним нажатием добавлять нужный гарем роботов (ну, и людей заодно, конечно) к волне.

    Создаем другой манифест:
    <extension location="NewWaveMenu">
       <info text="New Twave"
             description="Creates a new Twitter wave."/>
       <createNewWave>
       <participant id="tweety-wave@appspot.com"></participant>
       </createNewWave>
    </extension>


    Точно так же открываем новую волну, затем идем в меню «Debug >Add Extension Installer» и там указываем адрес, где в сети лежит этот «манифест». Оп! И в панели рядом с кнопкой «New Wave» появляется кнопка со стрелкой вниз, которая при нажатии на нее показывает выпадающее меню с добавленными вами пунктами. 

    Примечание: Как видим, тут изменилась Location, а также появилась возможность создавать волну (createNewWave) и добавлять в нее участников (participant). 

    Пока, насколько мне известно, еще нет способа таким же образом добавлять участников в существующую волну или удалять их оттуда. Но API будет со временем расширяться и улучшаться. И если эти ожидания сбудутся, то у нас с вами появится возможность подстраивать свою рабочую среду в волнах сообразно нашим персональным вкусам и предпочтениям. 
    Или создавать «клоны» волнового клиента, заточенные под определенный круг задач (IM, совместное редактирование текстов, дискуссионное или игровое сообщество и т.п.). 
    Или под умения и привычки пользователей (хм, «1С-волна» для бухгалтерии, это наверное было бы круто, да! :).

    Материал из группы «Google Wave Россия»
    Опубликовано также в блоге «Google Wave по-русски»

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 17

      +9
      Так и хочется уже пощупать все это своими руками! Когда уже побольше народа пустят в sandbox, эх…
        0
        Как думаете на интранет такую штуковину стоит ставить?)
          0
          Почему бы и нет? Только пока рано. Но предпосылки есть.

          Протокол объединения (федерации) волновых серверов — открытый. Исходные тексты тоже будут доступны (в каком объеме, правда, пока непонятно — сейчас есть только исходники демо сервера FedOne). Ставь не хочу. :)
            0
            Отлично, попробуем.
            На вас могу в качестве консультанта расчитвать?
              0
              Вы можете в нашей группе groups.google.com/group/google-wave-russia открыть новый проект (создайте сообщение с описанием) и тогда можете рассчитывать на консультации целой группы людей. Может быть и «соратников» найдете.

              Учитывайте только, что сервер пока «ну очень демо».
          0
          Издеваются, ведь так можно и захлебнуться слюной. Дайте же наконец инвайты всем желающим, или обсуждайте волны внутри волн.
            0
            Еще есть вариант — просто не читать такие статьи. Не пробовали? :)

            А если серьезно, то еще неизвестно, кому повезло — тем, кто сейчас имеет доступ к «песочнице» или тем, кто будет пользоваться отлаженным сервисом.

            Тестовый сервер изрядно тормозит, очень многое не работает вообще или не отлажено (хотя ситуация постепенно меняется). Так что в каком-то смысле его испытывают на получивших доступ «как на собачках». Может быть, это вас утешит. :)

            Напомню, с 30 сентября «запустят» первые 100 тыс. аккаунтов на рабочем сервере. Ждать не так уж долго. Только сходите на wave.google.com, сообщите о своем желании.
            А не то будет, как в том анекдоте про еврея, требовавшего от Бога выигрыша в лотерею. «Да я не против, но пусть он хотя бы лотерейный билет купит».

            И еще, скажу вам по секрету: разработчики, имеющие что предъявить, проходят без очереди.
              0
              Да понимаю всё, уже зарегистрировался давно, жду. Поучаствовать в разработке не могу, свои проекты есть, лучше их буду делать :)
              • UFO just landed and posted this here
                  +1
                  Больше тысячи участников — не знаю, а вот пару-тройку сотен уже сейчас держит нормально. Например, в русскоязычной волне «Русские идут!» на данный момент около 180 участников.

                  Что касается вашего проекта, то imho все зависит от степени срочности его реализации. Если надо в ближайшее время, то «заморачиваться» не стоит. Технология пока не отработана, API предоставляют только базовые возможности, вашим телезрителям понадобятся волновые аккаунты и т.п.
                  Кроме того, непонятно, чем в вашем случае «волны» лучше обычных чатов.

                  Но если ваш проект экспериментальный и вы рассчитываете на перспективу — с Волной можно проработать много очень интересных идей. Навскидку: от видео-гаджета (внедренного в волны плейера) до какой-нибудь соц.сети для телеманов.
                    +1
                    Выложите ссылку на русскоязычную волну, пожауйста, у меня поиском не находится.
                      0
                      Не уверен, что хабрапарсер справится с такой ссылкой. Но давайте попробуем:
                      https://wave.google.com/a/wavesandbox.com/#restored:wave:wavesandbox.com!w%252Bih3cy3uW%2525H
                      А вовне эта волна опубликована здесь — wave-publisher.appspot.com/index.jsp?q=3082

                      Вообще говоря, русские волны можно поискать по тегам «russia», «russian», «русский» и т.п. Надо в строке поиска набрать нечто вроде такого — tag: russian. Не все, конечно, отмечают свои волны правильными тегами, но кое-что должно найтись.

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

                  0
                  > разработчики, имеющие что предъявить
                  что значит сие?
                    0
                    Форма регистрации просит делиться идеями, ради которых идёте — и те, кто анкеты читают, людей с идеями приглашают довольно активно.
                0
                «гаджетницу» вполне уместно называть палитрой
                  0
                  Да, наверное. Хотя лично у меня «палитра» больше ассоциируется с цветом, «художествами», с рисованием. И даже с «пол-литрой». :)
                  Но принцип тот же — выбор компонентов (например, красок) из какого-то набора.
                    0
                    В Delphi есть Component Palette — палитра компонентов, посему я уже давно привык гаджеты из палитры брать :)

                Only users with full accounts can post comments. Log in, please.