Pythonでツールを作っていると、時々連絡事項としてメッセージを配信したい時があります!そこで、結構色々な会社で導入されているだろう「IP Messenger」を使って、Pythonからメッセージを送る方法をご紹介したいと思います!
IP Messengerのコマンドラインの使用方法
IP Messengerのコマンドラインの仕様を見てみたいと思います(`・ω・´)ゞ
コマンドの仕様は以下のようになっています。
ipmsg.exe [hostname or ip address] /MSG [/LOG] [/SEAL]
ipmsg.exe [hostname or ip address] /MSGEX [/LOG] [/SEAL] (改行を含みたい時に便利)
各フラグは以下のようになっています。
/MSG | メッセージの送信。 |
/MSGEX | メッセージの送信。「\n」を改行に変更してくれるので、メッセージが送りやすいです(v3.5以降) |
/LOG | メッセージを送信した相手のログに、メッセージが残るようになります。 ログを残す必要がない場合は不要です。 |
/SEAL | メッセージを封書にします。 メッセージが丸出しでよければ不要です。 |
外部のプログラム実行
Pythonから外部のプログラムの実行する方法はいくつかありますが、今回は最も古い?「os.system」を使って行きたいと思います。色々高度なことをしたい場合は「subprocessモジュール」をご利用ください。
自分宛てに簡単なメッセージを送るには、以下のようになります。
import os os.system(u'"C:\Program Files\IPMsg\ipmsg.exe" /MSGEX localhost そうしん\nてすと'.encode('sjis').replace('\n', '\\n'))
こちらを実行すると、以下のようなメッセージが届きます(`・ω・´)ゞ
ipmsg.exeのパス
「V4.00」よりデフォルトのインストール先が「\Users\(username)\AppData\Local\IPMsg」に変更されています。ここでは、インストール先を変更した例になっているので、各自インストールディレクトリに合わせて変更してください。
/MSGEX
改行をしないメッセージの送信は通常考えられないので、「\n」を改行として扱ってくれるように「/MSGEX」を使用しました。個人的には、改行の有無にかかわらず「/MSGEX」の指定で問題無いと思います(`・ω・´)ゞ
送信先
送信先は、「Host Name」か「IP Address」で指定します。ここでは「localhost」にしたので、自分宛てにメッセージが届きます。送信先の情報は、IP Messengerの画面から簡単に確認できます。
メッセージ
色々厄介な部分です、、、「文字コード」と「改行」について書いていきたいと思います。
文字コード
Pythonで組み立てたメッセージは、日本語を使うのであれば「Unicode型」で作成すると思いますが、Windowsのコマンドラインを使用する場合は、文字コードを「Shift-JIS」に変換する必要があります。
メッセージを「Shift-JIS」に変更するには、「.encode(‘sjis’)」とすればOKです(*´ω`*)b
改行
改行についても、そのまま出力しようとすると「\n」が発動して改行されたコマンドが送信されてしまい、メッセージが途切れてしまいます。そこで、「\n」をエスケープして「\\n」に変更する必要が出てきます。
「\n」を「\\n」に変更するには、「.replace(‘\n’, ‘\\n’)」として、簡単な文字列の置換をすればOKです(*´ω`*)b
v4.5以上なら、、、
コマンドライン用の「ipcmd.exe」が追加されています。こちらを使用すると「不在モード取得」「ユーザリスト取得」「添付ファイルの追加」など、色々なことができるようになります。単純なメッセージの送信では満足できない場合には、「ipcmd.exe」のご利用をご検討ください(`・ω・´)ゞ