Python から im.kayac.com で Google Talk にメッセージを送る

iPhone や Google Talk(Jabber)へ通知を送信できるサービス im.kayac.com を試してみました。 アクセスには http の POST かメールを用いるのですが、思っていたよりも手軽で特に難しいことはありませんでした。iPhone は使っていないのでやってみたのは Google Talk への通知だけです。

まず im.kayac.com のサイトでユーザー登録をすると自分用のアクセス URL が割り当てられます。Google Talk で api@im.kayac.com というアカウントをコンタクトに加えて自分用の認証コードをメッセージとして送るだけで認証は完了です。

メールを使う場合はアドレス宛てにメールを送るだけですので省略します。POST でのアクセスは Python の場合は以下のように書けば OK でした。

Python 3 の場合は urllib.request を、Python 2 の場合は urllib, urllib2 を使います。

Python 3.x

#!/usr/bin/env python
#-*- coding: utf-8; -*-

import urllib.request


def push_to_im(content):
    """arg: text
    send POST data to im.kayac.com"""
    post_url = 'http://im.kayac.com/api/post/YOUR_USERNAME'
    post_data = {
        'message': content,
        'password': 'YOUR_PASSWORD'
        }
    encoded_data = urllib.parse.urlencode(post_data).encode(encoding='ascii')
    urllib.request.urlopen(url=post_url, data=encoded_data)


text = 'Hello World!'
push_to_im(text)

Python 2.x

#!/usr/bin/env python
#-*- coding: utf-8; -*-

import urllib
import urllib2


def push_to_im(content):
    """arg: text
    send POST data to im.kayac.com"""
    post_url = 'http://im.kayac.com/api/post/YOUR_USERNAME'
    post_data = {
        'message': content,
        'password': 'YOUR_PASSWORD'
        }
    encoded_data = urllib.urlencode(post_data)
    req = urllib2.Request(post_url, encoded_data)
    urllib2.urlopen(req)


text = 'Hello World!'
push_to_im(text)

社内で使うためのちょっとしたツールなどにも便利に使えそうですね。私もやりたかったことがこれで実現できそうです。