TripIt, Worldmate, Tripcase, Kayak Trips: my review of travel planner apps

I travel quite a lot, so having a service to track all my reservations, flights, hotels etc is very important for me. Luckly, there are several “travel companion” apps, so I’ve taken a look to some of them. I don’t consider myself a uber-user (yet), so this post tries to review them thru the lens of the features I consider useful for me now:

  • Must-have: the mobile app works offline
  • Must-have: import travel plans painlessly, just forwarding the confirmation email I receive
  • Must-have: generate a calendar feed that could be integrated in my Google Calendar
  • Must-have: edit, delete and add trip segments, even offline
  • Important: a great UX for the basic and most recurrent tasks, a pleasant UI in general
  • Nice-to-have: receive no my mobile device updates on flights gates, delays, luggage exitsm, etc
  • Nice-to-have: sharing travel plans with others not subscribed to the service

TL;DR: After a while with TripIt, I’m now using Kayak Trips, and I’m happy with it.

TripitTripIt

TripIt is an historical player in this field, I’ve used it for a couple of years, but I left the service after several failed imports of travel plans (Trenitalia, Easyjet) and wrong timezones for the imported ones. Recently the mobile app has been revamped, but the issues with importing data persists and the majority of the webapp has the same very old UI. On the other side, thanks to the Pro account, I’ve received punctual notification on flight schedules changes, gates etc even before the displays at the airport showed them, and I’m part of a team with all of my colleagues, so we’re alerted each other if we’re nearby and I can check their travel calendar. Full list of features can be found here.

WorldmateWorldmate

Worldmate was one of the first alternatives I tested. It has rarely failed to import my emails and it was the only service able to parse coach and seat number of train reservations. It met all my requirements in the free version, except the calendar option, available only for premium accounts. It also offers a connection feature with LinkedIn, alerting when crossing paths with your contacts. I was not impressed by the web and mobile UI and it’s impossible to split / merge trips. Another cool feature offered is an API for parsing travel itinerary information from confirmation emails. They were acquired by Carlson Wagonlit family in 2012 and full features list is here.

TripcaseTripcase

Tripcase uses Worldmate API to parse travel itinerary, but from tests I’ve done sending the same confirmation emails to both services, Tripcase adds less detail to the final trip itineraries: for example, train coach and seat are missing. I don’t know if the API returns less info or Tripcase discards some of them. From a UX / UI point of view, it is much better that Worldmate. The only issues I’ve found so far is the creation of separate trips for confirmation emails that refers to same dates and destinations, for example a flight and an hotel, even if a specific option should prevent that. They could be merged later on web app, but it’s annoying. Calendar appointments are created, but only for the trip elements, while I generally prefer to also have an all-day event for the whole length of the trip. One cool feature app offers is reminders for missing hotel reservations in the itinerary, while full list is here.

Kayak TripsKayak Trips

Kayak Trips: Kayak has always succeeded to import confirmation emails for hotel, flights or train I’ve booked in Europe and USA, and it mets all my requirements with satisfaction. Another unique factor to consider is the Kayak business model: Kayak is a travel search company and the app is a commodity to drive more bookings, so there is no premium version and the app could be maintained even if it’s not profitable by itself. Flip side is the total lack of integration with the additional travel services the other reviews apps offer, like LoungeBuddy, Mozio and many more.

Google TripsGoogle Trips

Google Trips: latest comer to the party, the UX/UI of the app is great, everything is create automagically from inbox emails and there is a strong support for offline features, well integrated with other Google properties. Unfortunately, a Gmail account is required and there is no way to manually add/modify a segment of a trip, or choose a different splitting for them.

 

Disclaimer: there are lot of more features these apps have (booking hotels / flights / cars, integration with third party services, tracking of loyalty program points and much more), and the presence or lack of some of them could greatly influence personal choices.

Conversational power for Android apps, DevFest Nantes

Conversational interfaces are the new cool. During the session we’ll see how to add conversational power to any Android app: from listening to the user, understand what she said and provide voice replies. Using internal APIs, external service and a little bit of code.

(DevFest Nantes, 9 November 2016)

More Telegram bot features using IFTTT

Telegram bot with IFTTT recipesNow that I created a Telegram bot fed by IFTTT, I can add new features using the available channels. A message with the Milan weather condition every morning, for example, or a cool 500px picture during the day to take a break and enjoy the beauty? Possibilities are limited only by IFTTT skills.

The logic is easy: every recipe has a different trigger (the “this” past), and the action is always the same: use the Maker channel to send a POST HTTP call to the Telegram bot, formatting the message with the specific information I want to display. To create the Telegram bot, please look to my previous post.

Weather

Telegram bot weather

The trigger to activate in the Weather channel is “Today’s weather report”, setting the time of the day the report has to be sent. I set 7.00 am because I prepare last minute, but it’s also possible to select “Tomorrow’s weather report” and receive the message the evening for the ones that want to plan what to dress the next day in advance. There are plenty of other information available in the triggers, like sunrise and sunset time, change of conditions / temperature and much more. The city is selected when the channel in connected with the IFTTT account.

The action is the “Make a web request” is the Maker channel, using the following parameters (XXtokenXX and the chat_id have to be changed with the appropriate values):

  • URL: https://api.telegram.org/botXXtokenXX/sendMessage
  • Method: POST
  • Content type: application/json
  • Body: {“chat_id”:”-235327410″, “text”:”Good morning. In Milan {{TodaysCondition}}, max {{HighTempCelsius}} min {{LowTempCelsius}}”}

Cool 500px pictures

Telegram bot with picture

The trigger to activate in the 500px channel is “New Editors’ Choice photo”, selecting one of the available categories, or any.

The action is the “Make a web request” is the Maker channel, using the following parameters:

  • URL: https://api.telegram.org/botXXtokenXX/sendMessage
  • Method: POST
  • Content type: application/json
  • Body: {“chat_id”:”-235327410″, “text”:”Breath and enjoy the beauty: [<<<{{Title}}>>>]({{SourceUrl}})”, “parse_mode”:”markdown”, “disable_web_page_preview”: “false”}

In order to have a preview of the image embedded in the bot message, I used parse_mode set to markdown and i set disable_web_page_preview to false, even if it’s the default setting. Of course the text value is written using Markdown syntax. For more information on the available parameters, the official doc is a good reference. Again, XXtokenXX and the chat_id have to be changed with the appropriate values.

Write a Telegram bot using IFTTT recipies

I want a simple and automated way to notify my wife I’m at the train station of our city, commuting to home. I know there are plenty of apps for that, but I already have an ongoing Telegram chat with her, so I created a Telegram bot that sends a message in that chat every time I’m in a particular area. How? Here the list of the different pieces to put in place:

  • Create a Telegram group chat
  • Create a Telegram bot
  • Enable bot to send messages to the group chat
  • Write an IFTTT recipe that activates the bot every time I (my phone) enter in a particular location

Just a side note: The same approach works also for other messaging apps that support bot integration and activation via webhooks. Even better for Slack, that has its own channel on IFTTT, so no need to deal with webhooks.

Create the Telegram group chat

Nothing to say here, if you already have Telegram, you know how to create a group chat between the people you want to notify. Even if the conversation is between me and my wife only, I created a groups chat and not direct message because also the bot needs to be included.

Create the Telegram bot

I followed the official documentation to create a Telegram bot, asking to BotFather for a new one, with name Lurch (oh yes, the name of my digital butler since my very first project of this kind during high school years), username YellowBot.

20160804-createbot

As you can see, BotFather returned a token to use while calling the Bot API. I also set Lurch profile picture using /setuserpic command.

I finally added the newly created YellowBot to the previously created group chat.

Enable bot to send messages to the group chat

Telegram exposes a convenient webhook for posting a message thru a bot: the sendmessage API. It’s as simple as making an HTTP call, with some parameters in the payload. Two of them are required, the chat_id and the message.

chat_id: as per documentation, “Unique identifier for the target chat, or username of the target channel (in the format @channelusername)“. So, the id of the group chat previously created. To obtain it, the getUpdates API can be used, using the following syntax (it’s important to change XXtokenXX with the token previously obtained by BotFather):

curl https://api.telegram.org/botXXtokenXX/getUpdates

Unfortunately, this call returns an empty json, because there are no messages for the bot so far:

{"ok":true,"result":[]}

Writing message in the group chat where the bot has been added doesn’t help, because of the privacy-mode activated by default for all the bots.  As per documentation, bots will receive only messages that start with a slash ‘/’ , so I wrote a test commmand like “/test”, but / + any combination of letters can be used. This time, the same call to getUpdates returns:

{  
  "ok":true,
  "result":[  
    {  
      "update_id":43841716,
      "message":{  
        "message_id":122,
        "from":{  
          "id":000000000,
          "first_name":"Alfredo",
          "username":"rainbowbreeze"
        },
        "chat":{  
          "id":-235327410,
          "title":"YellowFamily chat",
          "type":"group"
        },
        ....
}

So, the group chat_id is -235327410. As per documentation, a negative id refers to group chat, positive to private chat with a user.

At this point, it is already possible to send a bot message in the group chat, using a simple CURL command. I used a POST request and a application/json as content-type among the different ones available, so I formatted the payload accordingly:

curl -X POST -H "Content-Type: application/json" -d '{"chat_id":"-235327410", "text":"Hello world!"}' https://api.telegram.org/botXXtokenXX/sendMessage

obtaining a reply similar to

{  
  "ok":true,
  "result":{  
    "message_id":177,
    "from": ....

The “Hello world!” message should also appear on the group chat, with the bot as sender.

IFTTT integration to send messages using the bot

IFTTT has one channel to trigger an action when the device is in a specific location (in my case, entering the train station) for Android and for iOS, but hasn’t a dedicated channel for Telegram (yet). Luckily, the Maker channel comes in handy: what it does is to make an HTTP call to an URL specifying the kind of call (GET, POST, UPDATE etc), the content type and the message payload (if any). The exact information required to activate the Telegram bot just created.

So, first step is to create a new recipe with the Android Location channel as “this” part. Once downloaded the IF app for Android on the phone and connected the channel, I selected the “You enter an area” trigger, selected the area of my interest and created the trigger

IFTTT location trigger

For the “that” part, I selected the Maker channel and “Make a web request” as trigger, using the following parameters:
URL: https://api.telegram.org/botXXtokenXX/sendMessage
Method: POST
Content type: application/json
Body: {“chat_id”:”-235327410″, “text”:”It seems Alfredo is in at Pavia train station”}

IFTTT Maker channelThat’s all. Once I’m nearby the train station, the bot send a message in the group chat. Obviously, there are things to improve. For example, the recipe fires every time I’m around the location, even if I’m there for a walk. It would be great to activate the recipe only for a particular time interval, but IFTTT doesn’t offer this option. But the recipe could be manually disabled.

Following the same method, there are plenty of stuff the bot can write in the chat, using the many IFTTT channels. Fantasy is the limit :)

Reddit as source for a COPE strategy, and IFTTT for all the rest

IFTTT Reddit to SlackAfter the first CLSxItaly, we added to the Slack a new channel to share interesting community management resources, like blogposts etc. It was good, because allowed us to continue the discussion with interesting ideas, mainly thanks to the tireless work of Alessio.

But I felt we were missing something, like a broader sense of sharing with other community managers outside the Slack, that could be interested to same links too. Or an easy way to browse and search thru the different resources posted. Or a way to maintain the discussion visually connected with the different links posted, instead of a long stream of messages.

I remembered that, in the old days, a dedicated service was created for link sharing and discussion, a service that has survived to the present days: Reddit. Don’t know about it? You should! Reddit looked to me the perfect place to post our resources, and turns out that a subreddit dedicated to community management already exists: r/CommunityManager.

Great! But neither I could ask to all the CLSxItaly member to migrate from Slack to Reddit, nor force a double post on Slack and Reddit. Thankfully, IFTTT came again in handy, with channels for Reddit and Slack, plus others, so I was able to quickly implement a C.O.P.E. (Create Once, Publish Everywhere) strategy, using Reddit as source and then publishing the same content on the Slack content-sharing channel, Twitter and, potentially, many more. It also satisfy different kind of users with different kind of social feeds or tools habits (I, for example, still prefer RSS feeds aggregated by a reader).

I created a new IFTTT recipe using Reddit channel for the “this” part and selecting the “Any new post in subreddit” trigger, using “CommunityManager” as parameter.

IFTTT Reddit channel

For the “then” part, instead, I used the Slack channel with the “Post to channel” action.

IFTTT Slack channel

Too easy. Now, every time someone post a link in the r/CommunityManager, the Slack channel get a message (with a delay of some minutes). Is not that cool and complete as posting a link on Slack (with image, content snippet etc), but it works well.

Finally, I did another recipe to post the same link on Twitter, to be really COPE ;)

Extending the GDG Community Summit with CLSx steroids

CLSxItaly communitiesSummer is coming, so it’s time to plan a new round of national community summits for Google Developer Group communities before enjoying a long series of mojitos on the beach. Given the main objective of these summits, offer a dedicated learning/sharing moment on community management topics to the GDGs, this year we (my team and I) come up with the idea to use the summit to extend this moment to all the tech communities in the ecosystem. And because we’re already familiar with CLSx events, we decided to organise a CLSx as activity for the first day of the summit, and leave the second day focused on GDGs only, as it has always been.

Why? Because GDGs are still at the center of our hearth, but we think we can do more for the entire community scene, so an open event for everyone interested in community management topics.

Because we’ve seen that the true potential of the ecosystem can be unleashed if the communities collaborate each other: sharing speakers, best practices and other resources, mutually empowering, drafting a common mindset for the city / area. And all these process can start only if the different community leads in the same area know each other. Clearly, this is not true for all the cities in the same way, but it’s a good starting point.

Finally, because we would also add our contribution to tackle the gender diversity issue in tech ecosystem, and working only with a set of tech communities doesn’t allow to have holistic approach this kind of issue requires.

Where? In the countries we support where the GDG communities are already thinking at country level instead of a single chapter level, so used to learn by sharing and ready to mix with a new crowds without losing their own identities. We’ve selected Italy (Rome), Spain (Madrid) and France (Paris), among the countries we support. We’re instead going for a “traditional” community summit in the other countries (Netherlands, Nordics, Greece).

Stay tuned :)