Twitter通知

はじめまして。mooです。
昨年からHinemos開発チームに所属してます。以後お見知りおきを。


さて、Hinemos開発チームでは時折「こんな機能面白くない!?」とおもしろ新機能についての雑談が花咲くことがあります。
今回はそんな雑談のネタに登った『Twitter通知』を実現してみます。


実現方法は簡単!Hinemosコマンド通知を利用してHinemosマネージャからTwitterサーバにアクセスするだけです。
Twitter APIを利用できればどのような方法でも実現可能なのですが、今回は個人的な好みから使用言語をPythonとし、
PythonTwitter APIライブラリ「tweepy」を利用してアクセスします。
#ちなみに、使用するライブラリはOAuth認証に対応しているものにするのが無難です。


twitter通知の実現の流れは下のとおり。
なお、当方の環境はHinemos 3.2.0 / Oracle Enterprise Linux 5.5(32bit) / Python 2.6で試しました。


1. twitter通知用のtwitterアカウントを作成する。
2. 上記アカウントでログインした状態で下記URLにアクセスし、アプリケーションを登録する。

3. 登録後に表示されるOAuth認証に関する情報をメモする。

    • Application Detail
      • Consumer key
      • Consumer secret
    • My Access Token
      • Access Token (oauth_token)
      • Access Token Secret (oauth_token_secret)

4. tweepy環境を構築する。

5. pythonコードを用意し、3でメモしたOAuth認証に関する情報を反映させる。

    • Pythonのパスは動作環境に合わせてください。
    • メッセージに埋め込む変数を「プラグインID」、「監視ID」、「重要度」のみとしています。
    • 万一、本ソースコードを利用したことによって損害が生じたとしても、責任を負いかねますのでご了承ください。
#!/opt/python2.6/bin/python
# -*- coding: utf-8 -*-
import tweepy                                                               
import sys #コマンドライン引数操作用

# get params from command line
argvs = sys.argv
argc = len(argvs)

# check usage
if(argc != 4):
	print 'Usage: python %s ${PLUGIN_ID} ${MONITOR_ID} ${PRIORITY}' % argvs[0]
	quit()

# set params for OAuth
consumer_key = '<Consumer key>'
consumer_secret = '<Consumer secret>'
access_token = '<Access Token (oauth_token)>'
access_token_secret = '<Access Token Secret (oauth_token_secret)>'

# create OAuth handler                                                      
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)   
                
# set access token to OAuth handler                                         
auth.set_access_token(access_token, access_token_secret)                            

# create API
api = tweepy.API(auth_handler=auth)                                         
                                                                            
# post
api.update_status("Hinemosなう。(プラグイン:%s, 監視ID:%s, 重要度:%s)" % (argvs[1], argvs[2], argvs[3]))  
print "Hinemosなう。(プラグイン:%s, 監視ID:%s, 重要度:%s)" % (argvs[1], argvs[2], argvs[3])
 

6. 任意の監視設定に対してコマンド通知を設定する。

    • pythonコマンドを指定し、さきほど作成したPythonプログラムを実行するよう設定してください。
    • コマンドの引数にジョブ変数「プラグインID」、「監視ID」、「重要度」を指定します。
      • ジョブ変数に関する詳細情報はユーザマニュアルに記載されていますのでご覧ください。


すると、次の通知のタイミングでtweetされます。

プラグインID」、「監視ID」、「重要度」がしっかり埋めこまれているのがわかります。
Twitterの140字制約を考えて「オリジナルメッセージ」等は省きました。
ちなみに、下部に表示されてる「testHinemos」という名前は、登録したアプリケーション名です。
ということで、無事、Twitter通知が実現しました。


このTwitterアカウントの設定で「ツイートを非公開」とすればTweetを閲覧できるユーザを限定できます。意外に実用的かも?
Hinemosマネージャがインターネットに接続できる環境にある方はそんなに多く無いと存じますが、よろしければ一度お試しあれ!