Google Wave Robot API v2

Apparently Google Wave is not dead. Google just released new functionality with the post Introducing Robots API v2: The Rise of Active Robots. These new features include:

Active API: In v2, robots can now push information into waves (without having to wait to respond to a user action). This replaces the need for our deprecated cron API, as now you can update a wave when the weather changes or the stock price falls below some threshold. You can learn more in the Active API docs.

This is a great new feature that allows robots to act independently of the wave. This allows Wave to receive notifications and messages with external events occur. Similar to Chatter, if a record is updated in Salesforce.com, this message can be pushed to all recipients in the wave.

Context: Robots can now more precisely specify how much information they want to get back from a particular event. If only the contents of the affected blip needs updating and you want to reduce your robot's bandwidth, then you can specify the new 'SELF' context. On the flip side, if you do need all the information in the wavelet, you can specify the new 'ALL' context. You can learn more in the Context docs.

The new Contexts provide much granular control of the wave and how a robot interacts with it:

  • PARENT indicates that the event should pass the parent data. Note that PARENT makes no difference to Wavelet events.
  • CHILDREN indicates that the event should pass any children of the event's level. For Wavelets, this context passes all child Blips.
  • ALL indicates that the event passes all associated data.
  • SIBLINGS indicates that the event passes any siblings. For Blips, this context will pass data for all sibling blips within the Wavelet.
  • SELF indicates that the event only passes information pertaining to itself.
  • ROOT indicates that the event only passes information pertaining to the root blip.

Filtering: In a similar way, with this new API, the robot can specify what events it needs to respond to, conserving valuable bandwidth -- and ignore all those that don't apply. You can learn more in the Filtering Events docs.

This new feature is great for programmers allowing them respond to events based up regular expressions.

Error reporting: Robots are now able to register to receive errors about failed operations, such as insertion on non-existent ranges. You can learn more in the Error Reporting docs.

You can now handle exception more gracefully and interact with users in a more user-friendly manner.

Proxying-For: Robots can now convey to Google Wave that their actions are actually on behalf of a different user, via the proxyingFor field. For robots like the Buggy sample, which connects with the Google Code issue tracker, this means that the wave can be updated with attribution to users on non-wave systems. You can learn more in the Proxying-For docs.

This new features allow your robot to "impersonate" a named user on another system. So if you wave needs to insert records into an external system, it can do so as a specific user.

These new features will make robots more user friendly and easier to use. I just hope they implement a way to restrict a robot to a specific domain.