元セブ島在住のエンジニアの僕「Tommy」が、プログラミング・英語・セブ事情を発信するブログ

Tommy's blog

【Python】skypeを操作する方法【→業務効率UP】

8月 9, 2019

プログラム学生
SkypeのBOTってどうやって作るんですか?
SkypeのBOTを作るためには、まずSkypeの基本的な操作方法を知る必要があるね。今回はPythonでSkypeをどのように操作するかを紹介するね。
Tommy

この記事で分かること

  • Pythonプログラムでskypeメッセージ取得する方法が分かる
  • Pythonプログラムでskypeグループ作成する方法が分かる
  • Pythonプログラムでskypeメッセージ送信する方法が分かる

Pythonでskypeを操作する概要

Skypeは業務や開発現場でコミュニケーションツールとして使用で有名です。この記事では、Pythonのskypeライブラリの使い方を知ることによって、メッセージの取得、送信など基本的なskypeの操作方法のプログラミングを学ぶことができます。

Pythonでskypeを操作する前提環境

skypeを操作する前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。

レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。

もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。

Pythonでskypeを操作するサンプルプログラム

ここでは、skypeを操作するサンプルプログラムを書き、説明します。Skypeを操作する為には大きく「skypeメッセージ取得」、「skypeグループ作成」「skypeメッセージ送信」の3つの操作が必要になります。これらを考慮して、今回のサンプルプログラムは次の順番で処理を説明します。

  1. ライブラリのインポート
  2. skypeメッセージを取得する関数の定義
  3. skypeグループを作成する関数の定義
  4. skypeメッセージを送信する関数の定義
  5. 定義した関数の呼び出し

1.ライブラリのインポート

初めに、各種ライブラリをインポートします。ここでは、skypeの扱いに必要なライブラリ「skpy」をインポートしています。

from skpy import Skype

ライブラリ「skpy」からモジュール「Skype」をインポートする。

2.skypeメッセージを取得する関数の定義

次に、skypeメッセージを取得する関数を定義し、メッセージを取得する方法を説明します。skypeのインスタンス「sk」を作成し、skypeインスタンス「sk」に対して、関数「contacts」を呼び出し、コンタクトのチャットを特定します。

関数「contacts」の呼び出しの際、コンタクトIDを入力することで、どのユーザーとのチャットかを特定することができるようになっており、コンタクトIDに応じたチャットインスタンスを取得することができます。取得したチャットインスタンスの変数「ch」に対して、関数「getMsgs」を呼び出すことによって、該当のチャットのメッセージを取得することができます。

def get_msg(mail_address,passwd):

    # connect to Skype
    sk = Skype(mail_address, passwd)
    
    # 1-to-1 conversation
    ch = sk.contacts["live:********"].chat
    
    # retrieve recent messages
    print(ch.getMsgs())

  1. 関数「get_msg」を定義宣言する。
  2. 変数「sk」をスカイプオブジェクトで初期化する。
  3. 変数「ch」をスカイプのコンタクトオブジェクトで初期化する。
  4. 関数「ch.getMsgs」から返却された戻り値の内容を表示する。

3.skypeグループを作成する関数の定義

次に、skypeグループを作成する関数を定義し、グループを作成する方法を説明します。グループとは、複数数人数でチャットするskypeチャットグループのことです。グループを作ることで、一対一ではなく、複数に人数でのチャットや会話を実施することが可能になります。グループを作成する手順としては、まずSkypeのインスタンス「sk」を作成し、Skypeインスタンス「sk」に対して、関数「chats.create」を呼び出すことでグループを作成できます。

なお、関数「chats.create」の引数にはグループとなるSkypeメンバのIDを入力します。下のサンプルプログラムの例では、便宜上2名のユーザーを「User1」と「User2」と記載しています。

def create_new_group(mail_address,passwd):

    # connect to Skype
    sk = Skype(mail_address, passwd)

    # new group conversation
    ch = sk.chats.create(["User1", "User2"])

  1. 関数「create_new_group」を定義宣言する。
  2. 変数「sk」をスカイプオブジェクトで初期化する。
  3. 変数「ch」を関数「sk.chats.create」から返却されるスカイプグループオブジェクトで初期化する。

4.skypeメッセージを送信する関数の定義

次は、skypeメッセージを送信する関数を定義することで、メッセージを送信する方法を説明します。skypeメッセージを送信する為にはまず、Skypeのインスタンスを作成し、コンタクトを特定します。「****」で記載している箇所には実際のコンタクトのIDを入力してください。その後、メッセージの本文を作成します。メッセージの本文は変数「content」に格納されています。最後に、上記で作成したSkypeインスタンスの変数「ch」に対して関数「sendMsg」を呼び出せばskypeメッセージの送信が可能になります。

なお、下のサンプルプログラムではコメントアウトしていますが、skypeメッセージでファイルを送信(アップロード)する方法も記載しています。

def post_msg(mail_address,passwd):
    
    # connect to Skype
    sk = Skype(mail_address, passwd)

    # 1-to-1 conversation
    ch = sk.contacts["live:********"].chat

    # plain-text message
    content = "This is test!!"
    ch.sendMsg(content)

    # file upload
    #ch.sendFile(open("test.xlsx", "rb"), "test2.xlsx")
    #contact sharing
    #ch.sendContact(sk.contacts["live:********"])
    #retrieve recent messages

5.定義した関数の呼び出し

最後に、skypeユーザーの名とパスワードを入力することで、上記で定義した3つの関数の呼び出しを行います。

if __name__ == '__main__':
  post_msg(mail_address=resistered_mail_address,passwd=passwd)
  get_msg(mail_address=resistered_mail_address,passwd=passwd)
  create_new_group(mail_address=resistered_mail_address,passwd=passwd)

  1. メールアドレス「resistered_mail_address」とパスワード「passwd」を引数に関数「post_msg」を呼び出す。
  2. メールアドレス「resistered_mail_address」とパスワード「passwd」を引数に関数「get_msg」を呼び出す。
  3. メールアドレス「resistered_mail_address」とパスワード「passwd」を引数に関数「create_new_group」を呼び出す。

Pythonで業務効率化するその他の方法

この記事では、Pythonを使ってskypeの自動応答や自動チャット送信ができる操作方法を説明しました。この他にも、Pythonには、業務効率化できる手段がたくさんあります。

下記の記事に、普段オフィス環境で使われるツールを使って業務効率化できる方法をまとめていますので、ぜひ合わせて読んで取り組んでみてください。