PythonからIP Messengerを使ってメッセージを送る方法!!




Pythonでツールを作っていると、時々連絡事項としてメッセージを配信したい時があります!そこで、結構色々な会社で導入されているだろう「IP Messenger」を使って、Pythonからメッセージを送る方法をご紹介したいと思います!

送るメッセージに改行を入れたい場合は、「v3.50以上」をオススメいたします!

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」のご利用をご検討ください(`・ω・´)ゞ