Line通知システム

内容

Lineを利用して関係者にグラフを配信できるプログラムです。数値の取得および配信は特定日時を指定して自動化できるので、社員に負担をかけることなく情報共有が可能です

想定シーンと利用メリット

日々の業務データがうまく意識共有できていないケースに有効です。前日または前の週の業務データをグラフ化し朝一で自動配信することで、数字に苦手意識を持つ社員でも何が起きているか容易に把握することができ、全員が統一意識をもって仕事に取りかかることができます

主な利用ツール
  • Python
  • matplotlib
  • pandas
  • Line Notify
  • AWS lambda
  • AWS clowdwatch
Code

import requests
import io
import matplotlib

matplotlib.use('Agg')
import matplotlib.pyplot as plt

def autolabel(rects):
    for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x() + rect.get_width()/2., 1.05*height,'%d' % int(height),ha='center', va='bottom')

def line_notify(message):
    LINE_NOTIFY_URL = "https://notify-api.line.me/api/notify"
    LINE_NOTIFY_TOKEN = "********"
    headers = {"Authorization" : "Bearer %s" % LINE_NOTIFY_TOKEN}

    plt.style.use('seaborn-deep')
    plt.style.use('seaborn-darkgrid')
    plt.figure(figsize=(6, 6),frameon=False)
    
    rects1 = plt.bar([1,2,3,4,5,6,7,8,9,10],[1,2,3,5,17,5,7,3,2,11],label="cosine",color='red',alpha=0.30,edgecolor='grey',linewidth=1)

    plt.title('titlee',fontsize=28)
    plt.xlabel('x label',fontsize=18)
    plt.ylabel('y label (oku yen)',fontsize=18)
    plt.tick_params(labelsize=16)

    plt.ylim(0, 20)
    plt.legend(loc='upper right',fontsize=18)
    autolabel(rects1)
    plt.tight_layout()

    buf = io.BytesIO()
    matplotlib.pyplot.savefig(buf, format='png')
    graph = buf.getvalue()
    
    payload = {"message" :  message}
    files = {"imageFile": graph}
    r = requests.post(LINE_NOTIFY_URL ,headers = headers ,params=payload,files=files)
    return
    
def lambda_handler(event, context):
    message = "message"
    line_notify(message)

お仕事のご依頼はcontactからどうぞ